2019-11-7 14:01
最近关于(yú)人(rén)行(háng)的数字货(huò)币DCEP(Digital Currency Electronic Payment)的消息(xī)不断(duàn)涌现(xiàn),加上Facebook的(de)libra对数字货币的推波(bō)助澜(lán),以及(jí)政府将区块链定位(wèi)为(wéi)核心技术(shù)自主创新重要突破(pò)口(kǒu),一下子(zǐ)区块链的风头无出其右。在看了央行数(shù)字(zì)货币研究所(suǒ)所长穆(mù)长春先生对DCEP以及libra的分析对比后,本人对DCEP的顶层设计非常好(hǎo)奇,但是苦于当前关于DCEP的(de)相关报道都是基于宏观(guān)方面的,作为(wéi)一个技术(shù)人员(yuán)迫切的(de)想知(zhī)道DCEP与(yǔ)区块(kuài)链的切合点,于是在(zài)仔细阅读了人(rén)行的(de)数(shù)字货币(bì)系统的(de)专利后,写一篇作为一个技术人员或者说区块(kuài)链(liàn)从(cóng)业人员的角度(dù)来看DCEP的某些技(jì)术细节(jiē)。
在看完数字货币系统专利(lì)后,整体的感觉就是,DCEP并没(méi)有采用区块链技术,而是一个以央行为中心的系统,其实也能理解,毕竟权利与义(yì)务是对(duì)等(děng)的,央行承担着法币(bì)兑付的义务,因(yīn)此这个记账的权利自然也应该由他(tā)承(chéng)担。当(dāng)然在部分自由主义者看来,这种(zhǒng)做法似乎不(bú)够(gòu)纯粹,不够Decentralization。但是去中心化并不是银弹,不(bú)能够寄(jì)希(xī)望他来解(jiě)决(jué)一切问题。相(xiàng)反的,是否选择(zé)去中心化是需要和当前场景(jǐng)的主要矛盾相符合,如(rú)果当对公平或者透(tòu)明(míng)的诉求成为了主要矛盾,那(nà)么去中心化(huà)将是一个不错的解决(jué)方(fāng)法,但是在(zài)当(dāng)前(qián)很多领域(yù)中,对效率的需(xū)求还是主要(yào)矛(máo)盾,所以在(zài)这些场景(jǐng)下,采用(yòng)去中心化效果并(bìng)不是会(huì)很好,反而会起到(dào)不断消耗的反作用。
接下(xià)来,本文将根据数字货币系统专(zhuān)利,从DCEP的特征、实(shí)现(xiàn)细节、离线支(zhī)付场(chǎng)景来着重(chóng)介绍。
DCEP的特征(zhēng)主要(yào)体现(xiàn)在两大(dà)方面,一个是金融上的特征,一个是(shì)技术上的特征。专(zhuān)利上主要(yào)阐述了(le)技术(shù)上的(de)特征,关于金(jīn)融上的特征,主要(yào)源(yuán)自穆长(zhǎng)春先(xiān)生在(zài)公开课中的(de)报道。
这一块是(shì)指DCEP在设计上(shàng)所需要满足的几(jǐ)个特征,这几个特征与btc等基于(yú)区块链的虚拟(nǐ)货币概念比(bǐ)较相似。当然(rán),与其说和BTC等(děng)虚拟货币的概念(niàn)比较(jiào)相(xiàng)似,不如说满(mǎn)足那几个基本特征的才算是数(shù)字货币。
这里的实现细节主要(yào)针对上述的特(tè)性来展开讲解(jiě)。
基于对(duì)当前各个专(zhuān)利的研究,大致(zhì)能确定DCEP是一种类似UTXO结(jié)构的货币模型(xíng)。DCEP的发行模式有三种(zhǒng)方式(这里为了简单我们称央行(háng)的发行的数字货币(bì)为D币(bì))1. 按照最小面额产生,比如说央行发(fā)行总量为100元,并且最(zuì)小面额是1分,那么央(yāng)行将发(fā)行10000个面额为1分的D币;2. 根据用户具体提款金(jīn)额来生(shēng)产(chǎn),例如(rú)某个用户通过转账得到(dào)了12.34元的D币,那(nà)么央行(háng)相当于发行了一个面额的12.34的D币(bì);3. 按(àn)照流通中实际货币(bì)面额(é)产生,这个是(shì)最贴近当前实际现金的,例如央行发行面额为100、50、20、10、5、1元等的D币,那么后续流通过程中都是以这些面额的D币进行流通。关于UTXO结(jié)构,这块与BTC有(yǒu)很大不同(tóng),UTXO表(biǎo)示(shì)未花费(fèi)的交(jiāo)易,BTC中通过(guò)这个未(wèi)花费的交易来表示你(nǐ)拥有的余额。比如(rú)说(shuō)Alice转给Bob一个BTC,对(duì)于(yú)Bob来说如(rú)果没有花(huā)掉这个BTC的(de)话,那么Bob就拥有了(le)一个金额为1 BTC的UTXO,就(jiù)像现金一样Bob拿到了纸钞,只要不花掉(diào),那么(me)就是你的(de)钱。Bob如(rú)何(hé)证明他的确拥有这个UTXO呢?简单地说,谁拥(yōng)有(yǒu)解开UTXO的锁的(de)钥匙,这个UTXO就是谁的,至(zhì)于有哪些(xiē)锁(suǒ),如何开锁,大家可以查询下(xià)P2PKH,P2SH等(děng)信息,我们也会在接下来的文(wén)章(zhāng)中(zhōng)详细介绍(shào)。在DCEP中,是通过登(dēng)记(jì)中心(xīn)来完成UTXO的功能(néng),至于如何做的会在下面仔细介绍。
央(yāng)行的DCEP系统主义功能就是对(duì)法(fǎ)定(dìng)数字货币的资金转移,它(tā)由(yóu)中央银行与各(gè)商业银行一起联合运营。总的来说DCEP的核心要素有:一种币,两类库,三个中心。
登记中心主义负责管(guǎn)理数字(zì)货币的整个生(shēng)命周期,包(bāo)括印制、转(zhuǎn)移、销毁(huǐ)、回笼等过程。他主要(yào)有两张表,一个为数字货(huò)币权属(shǔ)登(dēng)记表(biǎo),另外(wài)一张为交易流水表。这(zhè)个权属登记表的作用是记(jì)录某(mǒu)面额的数字货币(bì)是(shì)属于谁的(如下图所示),每当数字货币发生(shēng)了转移(yí),在央行的登记中心都会对(duì)对应的数(shù)字货币的(de)属主进行更(gèng)改,通过这个表(biǎo)可(kě)以实(shí)现确权查询。这里的重点是,登记中心确定用(yòng)户到底(dǐ)有多少钱。
认证中(zhōng)心分为两(liǎng)类,一个是CA认证(zhèng),一个IBC认证。CA认(rèn)证主要(yào)用于相对(duì)来说比(bǐ)较高级的机构(gòu),而IBC认证则是用于个人的。这里引入认证中心的(de)原因是(shì),当用户或者(zhě)机构发起一笔DCEP的转账时(shí),需要通过(guò)自己的私钥(yào)进行(háng)签名,也就(jiù)是说这笔转账的(de)合(hé)法性(xìng)是通过签名来保证(zhèng)的(de)。在一般(bān)意义中的BTC、Ethereum或者Libra中,私钥是用户自己创建,由自己保管,并且用户的地址是由私钥(yào)对(duì)应的公钥通过一系列运算(suàn)(Hash,checksum)等(děng)得到的,这种(zhǒng)方式(shì)的优点是资产账户和私钥是(shì)天然绑定(dìng)的(de),你拥有了私钥也(yě)就拥有了其对应的资产。但是在DCEP中,由于存在(zài)监管这个特性(xìng),资产归属和私钥是分(fèn)开的(de),也就是说(shuō)央(yāng)行会在用(yòng)户注册了(le)一个DCEP钱包后,会通(tōng)过认证中(zhōng)心给钱包用户分配一个私钥,这个私钥用来(lái)证明是(shì)这(zhè)个用户,至于这个用(yòng)户是否拥有数字货(huò)币(bì),是在登记(jì)中(zhōng)心来确定(dìng)的(de)。所以这里(lǐ)的重点(diǎn)是,用户私钥是央行生(shēng)成的。另外,这里简单介(jiè)绍下IBC认证(zhèng),IBC(Identity-Based Cryptograph)是基(jī)于身份标识的密码系统,还(hái)是基于(yú)非对称的(de)秘钥体系,他与CA认证(zhèng)的(de)最大区别就是不需要证书(shū),而是通过用户标识例如(rú)手机号码、邮箱等作为(wéi)公钥,由IBC认证中心根据用户标志生成对应的私(sī)钥(yào),由于用(yòng)户标志(zhì)本(běn)身就是一个公钥,通(tōng)过用户标志(zhì)就(jiù)能确认身(shēn)份有效性(xìng)了,从而就不用再依赖证书和证(zhèng)书管理系(xì)统了。当然,此时央行的公钥还有用户的(de)私钥、证书数据就相当的重要了,需要将(jiāng)该数据存储在SE区域。
通过对一(yī)种币,两类库,三个(gè)中心的介(jiè)绍,大致可以了解DCEP的一些(xiē)顶层设计原则,接下来会(huì)结合(hé)具(jù)体的场景,来实际将顶层设计的逻辑走一遍。
在(zài)货币模(mó)型(xíng)中提到(dào)了DCEP关于面额一(yī)共有三种方(fāng)案,我们这里以第三种(zhǒng)固定面(miàn)额来介(jiè)绍。
相比纸币的(de)印制过程,DCEP的印制其实就是产(chǎn)生一串由央行签名过(guò)的数字,这里根据数字货币系统专利来(lái)介绍(shào)如何生成(chéng)这(zhè)串分量十足的数字。
1、由央行的主密码(mǎ)与面额(é)数(shù)字1,5,10,20,50,100分别产生6个基本加密密码。这6个加密密码分别是用于(yú)不同面额的数字货(huò)币(bì)。
2、由Hash算法生成(chéng)系统随机数,这个(gè)随机数就跟纸币上(shàng)的冠字号码一样。
3、由(yóu)步骤(zhòu)1生成的基本加密(mì)密码与随机数加(jiā)密,生成(chéng)加密密码。这个(gè)加密密(mì)码其实就已(yǐ)经对应特定(dìng)冠(guàn)字号的数(shù)字货(huò)币了。
4、央行(háng)通过(guò)私钥对加密密(mì)码进行签(qiān)名(míng),此时一(yī)枚(méi)新的法定数字货币就产生了。
下图是印制(zhì)的过程
这(zhè)里简(jiǎn)单说下(xià)登录(lù)过(guò)程,商业银行(háng)系统对连(lián)接央行的(de)认(rèn)证中心和登(dēng)记(jì)中(zhōng)心。
1、用户下载(zǎi)对应(yīng)的某商业(yè)银行的电子(zǐ)钱包APP
2、用户在APP的(de)登录页注册相(xiàng)关信息,例(lì)如(rú)姓名,身份证号,手(shǒu)机号(hào),住址等信息
3、商业(yè)银行通过上述注册(cè)信息,利(lì)用手机(jī)号作(zuò)为IBC的公钥(yào)进行登记(jì),在IBC完成唯一性验证(zhèng)后,IBC为该用户生成私(sī)钥。
4、用户登录(lù)后,下载(zǎi)用户用(yòng)户私钥和(hé)央行公(gōng)钥数据,并(bìng)将这些数据存储在(zài)SE区域。
这里介(jiè)绍下用户(hù)通过商业银行账(zhàng)户提取法(fǎ)定数字货(huò)币(简称D币),例如用户从自己的工商(shāng)银行账户取(qǔ)150元,然后兑(duì)换成D币。
1、用户(hù)登录钱包APP,选(xuǎn)择(zé)“提取数字货币”,并选择工商(shāng)银行,输入银行(háng)账户以及兑换的(de)数字货币额度。
2、商(shāng)业银行验证该请(qǐng)求的合法(fǎ)性:校验账户密码(mǎ),用户账户资金是否足(zú)够,以及该商业银行的银行库中的(de)D币(bì)是否足(zú)够。若通过合法性校验,那(nà)么将该(gāi)用户的在商业银行中的账户扣(kòu)除250元,商业银行从银行(háng)库中支出(chū)D100、D50(D100表(biǎo)示面(miàn)额为(wéi)100的D币),并(bìng)将这些信(xìn)息发送至央行数(shù)字(zì)货(huò)币系统。
3、央行数字货币(bì)系统收到商(shāng)业银行数字货(huò)币系统的请求后,进行发核心校(xiào)验,例如判断发(fā)送过来的D100和D50是(shì)否归属(shǔ)于该商业银,以及对应(yīng)的签名(míng)验(yàn)证等。在校(xiào)验通过(guò)后,登(dēng)记中心变(biàn)更商业银行发送过来的D币的属主信息,将工商银行(háng)的(de)属(shǔ)主(zhǔ)变(biàn)更为(wéi)该(gāi)用(yòng)户(hù),并且记(jì)录对应的交易流水。完成完整动作后,返回处理成功的信息给商业银行。
4、商业银行将D币发送(sòng)到用户手机端,至此,用户的手机(jī)端便(biàn)有了D100和D50。需要注意的(de)是,真正(zhèng)决定(dìng)你是否拥有这(zhè)150元(yuán)D币,不是你手(shǒu)机(jī)端存储了这150D币,而是登记(jì)中心决定(dìng)的。
这里岔开(kāi)一下,在另外几篇专利中,我们发现,并不是通过更改属主关(guān)系,而是直接将原有的D币进(jìn)行销毁,再重新生成新的D币,也就是说央行在收到(dào)请求并校验通过后,是将商业银行的那250元D币直接销毁,然后再重新生成一个(gè)新的250元D币,这样的优点在于(yú),只要央(yāng)行不公布交易流(liú)水,只单单公布(bù)一个数字货币确权信息,那么(me)外部是无(wú)法(fǎ)将数字货币(bì)的(de)转移信息给(gěi)串联起来的,这样既(jì)符合了匿名,又满足了(le)央行的监管,因(yīn)此后续(xù)有(yǒu)可能采取销毁的方案。
这里(lǐ)指用户A和用户B之间进行D币(bì)的在线支付,假设A用户的电子(zǐ)钱包(bāo)中有(yǒu)D100,D50总计(jì)150元的(de)D币,先需要支付150元给B用户,支付步骤如下。
1、A用户登录APP,选择付款(kuǎn)功能,并输入:付款金额(é),收款人(例如手机号),点击发送(sòng)
2、A用户(hù)的APP根据(jù)付款(kuǎn)金额(é),自(zì)动选择总额为150的D币,并将信息发(fā)送至商业银行数字货币系统(tǒng)。
3、商业银行校验支付信息的(de)合(hé)法性,例如:D100和(hé)D50的合(hé)法性,交易(yì)金额与数字货币是(shì)否等值,以及接收用(yòng)户的相关校(xiào)验。校验通过后,将(jiāng)请求(qiú)发(fā)送至央行的数字货币系统。
4、央行(háng)数字(zì)货币(bì)系统收(shōu)到请求后,验(yàn)证D100、D50是(shì)否为交易发(fā)起者等,在登记中心更改(gǎi)D100、D50的属(shǔ)主为B用(yòng)户,并记录对应的流水。最后(hòu)将(jiāng)成功信息返回(huí)给商业银行数字(zì)货币系统
5、商业银行收到成功信息后,将D100和(hé)D50发送到B用户APP中,并(bìng)分别(bié)向(xiàng)A、B用户的APP发送交易成功的信息。
这里的支付和提取的(de)流(liú)程基本一致(zhì),只要明白(bái)属主信息(xī)是在央行的登(dēng)记中(zhōng)心(xīn)进行修改就可以了。
因为现金交易存在匿名的特性,如(rú)果DCEP不(bú)能满足匿名性,那么有(yǒu)很多的场景下,普通用(yòng)户可能还会选择用现金,因此DCEP必然需要满足匿名性(xìng)。但是,DCEP的另(lìng)外一个功能是(shì)为(wéi)了满足监管需求(qiú),因此(cǐ)DCEP目前对(duì)匿(nì)名也是前台匿名后台实(shí)名的方式(shì)。
DCEP相比支付(fù)宝等电子支付有(yǒu)一个(gè)特性,就(jiù)是离线支付。这(zhè)个特(tè)性(xìng)非常重要,因(yīn)为DCEP是现金(jīn)的数字化,因(yīn)此(cǐ)需要具备现金的特(tè)性,可以想象(xiàng)下,如果有一天出现了极(jí)端恶劣的情况例(lì)如大地震、战争等,导致(zhì)网络(luò)不可(kě)用,如果DCEP不(bú)支持双离线(xiàn)支付,那么就(jiù)意味(wèi)着(zhe)普(pǔ)通百姓(xìng)没办法进(jìn)行正常的生活了。因此,即使(shǐ)出现双离线支付的场景概率(lǜ)非常小(xiǎo),但是(shì)还是必须支持这个功(gōng)能。
在(zài)数字货币系统专(zhuān)利中,提到了双(shuāng)离(lí)线支付的解决方案。例如A用户的电(diàn)子钱(qián)包中(zhōng)有(yǒu)D100,现在(zài)A、B用户(hù)都离线的情况下需要支付D100给(gěi)B用户。
1、A用(yòng)户打开APP后,选择离线支付功能,输(shū)入付款金额和接收方(fāng)信息后点击支付。
2、A用户对上述信息利(lì)用自己的私钥进行签名,并用收款人的手机号或者(zhě)其(qí)他标识(shí)收款(kuǎn)人的信息通过NFC等近场通讯(xùn)的(de)方式进行加密传输。
3、B用(yòng)户APP接(jiē)收到加密信息后,解密并(bìng)验证D币的合法性,以及金额是否(fǒu)等值。此时对于A、B用户来说已经完成了(le)双离线支付,但是此(cǐ)时B其实并没有真正(zhèng)收(shōu)到A转给(gěi)他的D币,在APP界面上来(lái)说,接受到的D币应该是(shì)出于(yú)不正常(cháng)状态(不可用)。接下来,B用户的APP会在(zài)联机(jī)状态(tài)后,将支付信息发(fā)送给商业银行数字货币系统。
4、商业银行收到这个支付信息后,在校验了(le)合法性后,会将这个信息发送给(gěi)央(yāng)行数字(zì)货币系统。
5、央行数(shù)字货币系统收到支付信息后,在(zài)完成与(yǔ)在线支付一(yī)样的校验后,就会(huì)更改属主(zhǔ),将(jiāng)原本属(shǔ)于A的D币,变更为B用户,最后将(jiāng)结果返回给商业银行。
6、商业银(yín)行(háng)收到成功(gōng)信息后,通知A、B用户APP发送交易成(chéng)功(gōng)的消息,此时(shí)B用(yòng)户接收到的D币状态才会变成可用状态。
因此(cǐ),如果A转给B,那么B在联网之前,A转给(gěi)B的D币无法转给C的,这个双离线支付并不能完成链式的支付。总体感觉,这个解决方案(àn)只能(néng)用于临(lín)时性的离线情况(kuàng),例如在地下停车场或者网络不好的场所进行支付。
另外,在双离线支付场景中,若用户利用(yòng)某些(xiē)漏洞实施了双花,从专(zhuān)利来看,是(shì)通过(guò)事后追(zhuī)责的(de)形式来(lái)处理的。
要推行DCEP的理由,对内一方面是(shì)加强对资(zī)金转移的监(jiān)管,提高(gāo)金融(róng)稳定性,增强反腐(fǔ)、反洗(xǐ)钱的能力。对外,有利于人民币国际化,不过人民币国际化,不会(huì)因(yīn)为人民币数字化了而成功(gōng),国际化的背后必然是我国(guó)国力强大,坚持通过(guò)用真理说服人。但是,DCEP可(kě)以降低国际友人的使用门槛,随着(zhe)中国消(xiāo)费(fèi)者(zhě)走(zǒu)出国门进行境(jìng)外的消(xiāo)费,说不定(dìng)在不久的将来,我们的国(guó)际友(yǒu)人也可以通过手机号注册一个钱包,直接收款(kuǎn),而(ér)不(bú)必再通过开通银行账号。在(zài)不久的将来(lái),自(zì)上而(ér)下的(de)通过整理说(shuō)服(fú)人,自下而(ér)上的通过(guò)消费者(zhě)带动(dòng)国际友人使用(yòng)人民(mín)币。