zhongdididi 2019-12-03
最近关于央行数字货币 DCEP(Digital Currency Electronic Payment)的消息不断涌现,加上 Facebook 的 libra 对数字货币的推波助澜,以及政府将区块链定位为核心技术自主创新重要突破口,一下子区块链的风头无出其右。在看了央行数字货币研究所所长穆长春先生对 DCEP 以及 libra 的分析对比后,本人对 DCEP 的顶层设计非常好奇,但是苦于当前关于 DCEP 的相关报道都是基于宏观方面的。
作为一个技术人员迫切的想知道 DCEP 与区块链的切合点,于是在仔细阅读了人行的数字货币系统的专利后,写一篇作为一个技术人员或者说区块链从业人员的角度来看 DCEP 的某些技术细节。
在看完数字货币系统专利后,整体的感觉就是,DCEP 并没有采用区块链技术,而是一个以央行为中心的系统。其实也能理解,毕竟权利与义务是对等的,央行承担着法币兑付的义务,因此这个记账的权利自然也应该由他承担。当然在部分自由主义者看来,这种做法似乎不够纯粹,不够 Decentralization。但是去中心化并不是银弹,不能够寄希望他来解决一切问题。相反的,是否选择去中心化是需要和当前场景的主要矛盾相符合,如果当对公平或者透明的诉求成为了主要矛盾,那么去中心化将是一个不错的解决方法,但是在当前很多领域中,对效率的需求还是主要矛盾,所以在这些场景下,采用去中心化效果并不是会很好,反而会起到不断消耗的反作用。
接下来,本文将根据数字货币系统专利,从 DCEP 的特征、实现细节、离线支付场景来着重介绍。
DCEP 的特征
DCEP 的特征主要体现在两大方面,一个是金融上的特征,一个是技术上的特征。专利上主要阐述了技术上的特征,关于金融上的特征,主要源自穆长春先生在公开课中的报道。
关于金融上的特征
关于技术上的特征
这一块是指 DCEP 在设计上所需要满足的几个特征,这几个特征与 BTC 等基于区块链的虚拟货币概念比较相似。当然,与其说和 BTC 等虚拟货币的概念比较相似,不如说满足那几个基本特征的才算是数字货币。
DCEP 实现细节
这里的实现细节主要针对上述的特性来展开讲解。
货币模型
基于对当前各个专利的研究,大致能确定 DCEP 是一种类似 UTXO 结构的货币模型。DCEP 的发行模式有三种方式(这里为了简单我们称央行的发行的数字货币为 D 币)
关于 UTXO 结构,这块与 BTC 有很大不同,UTXO 表示未花费的交易,BTC 中通过这个未花费的交易来表示你拥有的余额。比如说 Alice 转给 Bob 一个 BTC,对于 Bob 来说如果没有花掉这个 BTC 的话,那么 Bob 就拥有了一个金额为 1 BTC 的 UTXO,就像现金一样 Bob 拿到了纸钞,只要不花掉,那么就是你的钱。Bob 如何证明他的确拥有这个 UTXO 呢?简单地说,谁拥有解开 UTXO 的锁的钥匙,这个 UTXO 就是谁的,至于有哪些锁,如何开锁,大家可以查询下 P2PKH,P2SH 等信息,我们也会在接下来的文章中详细介绍。在 DCEP 中,是通过登记中心来完成 UTXO 的功能,至于如何做的会在下面仔细介绍。
系统核心要素
央行的 DCEP 系统主义功能就是对法定数字货币的资金转移,它由中央银行与各商业银行一起联合运营。总的来说 DCEP 的核心要素有:一种币,两类库,三个中心。
登记中心主要负责管理数字货币的整个生命周期,包括印制、转移、销毁、回笼等过程。他主要有两张表,一个为数字货币权属登记表,另外一张为交易流水表。这个权属登记表的作用是记录某面额的数字货币是属于谁的(如下图所示),每当数字货币发生了转移,在央行的登记中心都会对对应的数字货币的属主进行更改,通过这个表可以实现确权查询。这里的重点是,登记中心确定用户到底有多少钱。
认证中心分为两类,一个是 CA 认证,一个 IBC 认证。
CA 认证主要用于相对来说比较高级的机构,而 IBC 认证则是用于个人的。这里引入认证中心的原因是,当用户或者机构发起一笔 DCEP 的转账时,需要通过自己的私钥进行签名,也就是说这笔转账的合法性是通过签名来保证的。在一般意义中的 BTC、Ethereum 或者 Libra 中,私钥是用户自己创建,由自己保管,并且用户的地址是由私钥对应的公钥通过一系列运算(Hash,checksum)等得到的,这种方式的优点是资产账户和私钥是天然绑定的,你拥有了私钥也就拥有了其对应的资产。但是在 DCEP 中,由于存在监管这个特性,资产归属和私钥是分开的,也就是说央行会在用户注册了一个 DCEP 钱包后,会通过认证中心给钱包用户分配一个私钥,这个私钥用来证明是这个用户,至于这个用户是否拥有数字货币,是在登记中心来确定的。所以这里的重点是,用户私钥是央行生成的。
另外,这里简单介绍下 IBC 认证,IBC(Identity-Based Cryptograph)是基于身份标识的密码系统,还是基于非对称的秘钥体系,他与 CA 认证的最大区别就是不需要证书,而是通过用户标识例如手机号码、邮箱等作为公钥,由 IBC 认证中心根据用户标志生成对应的私钥,由于用户标志本身就是一个公钥,通过用户标志就能确认身份有效性了,从而就不用再依赖证书和证书管理系统了。当然,此时央行的公钥还有用户的私钥、证书数据就相当的重要了,需要将该数据存储在 SE 区域。
通过对一种币,两类库,三个中心的介绍,大致可以了解 DCEP 的一些顶层设计原则,接下来会结合具体的场景,来实际将顶层设计的逻辑走一遍。
DCEP 具体场景描述
在货币模型中提到了 DCEP 关于面额一共有三种方案,我们这里以第三种固定面额来介绍。
印制
相比纸币的印制过程,DCEP 的印制其实就是产生一串由央行签名过的数字,这里根据数字货币系统专利来介绍如何生成这串分量十足的数字。
下图是印制的过程
用户登录
这里简单说下登录过程,商业银行系统对连接央行的认证中心和登记中心。
提取
这里介绍下用户通过商业银行账户提取法定数字货币(简称 D 币),例如用户从自己的工商银行账户取 150 元,然后兑换成 D 币。
这里岔开一下,在另外几篇专利中,我们发现,并不是通过更改属主关系,而是直接将原有的 D 币进行销毁,再重新生成新的 D 币,也就是说央行在收到请求并校验通过后,是将商业银行的那 250 元 D 币直接销毁,然后再重新生成一个新的 250 元 D 币,这样的优点在于,只要央行不公布交易流水,只单单公布一个数字货币确权信息,那么外部是无法将数字货币的转移信息给串联起来的,这样既符合了匿名,又满足了央行的监管,因此后续有可能采取销毁的方案。
支付
这里指用户 A 和用户 B 之间进行 D 币的在线支付,假设 A 用户的电子钱包中有 D100,D50 总计 150 元的 D 币,先需要支付 150 元给 B 用户,支付步骤如下。
这里的支付和提取的流程基本一致,只要明白属主信息是在央行的登记中心进行修改就可以了。
如何实现匿名、监管
因为现金交易存在匿名的特性,如果 DCEP 不能满足匿名性,那么有很多的场景下,普通用户可能还会选择用现金,因此 DCEP 必然需要满足匿名性。但是,DCEP 的另外一个功能是为了满足监管需求,因此 DCEP 目前对匿名也是前台匿名后台实名的方式。
关于双离线支付场景分析
DCEP 相比支付宝等电子支付有一个特性,就是离线支付。这个特性非常重要,因为 DCEP 是现金的数字化,因此需要具备现金的特性,可以想象下,如果有一天出现了极端恶劣的情况例如大地震、战争等,导致网络不可用,如果 DCEP 不支持双离线支付,那么就意味着普通百姓没办法进行正常的生活了。因此,即使出现双离线支付的场景概率非常小,但是还是必须支持这个功能。
在数字货币系统专利中,提到了双离线支付的解决方案。例如 A 用户的电子钱包中有 D100,现在 A、B 用户都离线的情况下需要支付 D100 给 B 用户。
因此,如果 A 转给 B,那么 B 在联网之前,A 转给 B 的 D 币无法转给 C 的,这个双离线支付并不能完成链式的支付。总体感觉,这个解决方案只能用于临时性的离线情况,例如在地下停车场或者网络不好的场所进行支付。
另外,在双离线支付场景中,若用户利用某些漏洞实施了双花,从专利来看,是通过事后追责的形式来处理的。
为什么要推 DCEP
要推行 DCEP 的理由,对内一方面是加强对资金转移的监管,提高金融稳定性,增强反腐、反洗钱的能力。对外,有利于人民币国际化,不过人民币国际化,不会因为人民币数字化了而成功,国际化的背后必然是我国国力强大,坚持通过用真理说服人。但是,DCEP 可以降低国际友人的使用门槛,随着中国消费者走出国门进行境外的消费,说不定在不久的将来,我们的国际友人也可以通过手机号注册一个钱包,直接收款,而不必再通过开通银行账号。
在不久的将来,自上而下的通过整理说服人,自下而上的通过消费者带动国际友人使用人民币。
本文转载自:
深入浅出区块链(ID:blockchaincore)
原文链接:
https://learnblockchain.cn/2019/11/06/DCEP-research
作者知乎:
https://zhuanlan.zhihu.com/c_1124734224619773952