关于央行数字货币讨论最多的点聚焦在「双离线」、「UTXO」等,本文通俗解读这些热门关键词的实现细节。

更全面深入了解 DCEP,请阅读《链闻精选好文|深入解读 DCEP 与各国央行数字货币架构与影响

原文标题:《「UTXO」、「双离线」,如何深入理解这些 DCEP 热词》
撰文:佘云峰

随着央行数字货币的曝光,引起了行业内关于 DCEP 形态、场景、细节的广泛讨论。央行数字货币作为现金的替代,是数字货币和电子支付的结合,其功能属性本质上和纸币完全一样,只不过是数字化的形态。

目前,从已有的 DCEP 信息和业内人士的分析,我国的央行数字货币是采用双层运营体系、中心化管理模式、账户松耦合与可控匿名的形态。

而业界讨论最多的点主要聚焦在「Token」、「双离线」、「UTXO」等等,但从部分社群讨论来看,大多数人甚至是业内人士对于相关技术以及实现细节并不是特别熟悉。

关于 DCEP 双离线支付场景和方案的技术分析,推荐大家可以详细阅读(摩联科技 CTO 许刚:央行数字货币 DC/EP 双离线支付场景和方案浅析)这篇文章。本文的内容主要基于此篇文章的技术理论,帮助大家梳理文章中的一些技术细节,以从基础知识层面更容易理解 DCEP 的形态,笔者非专业技术人士,有理解不到位之处还望大家指正。

什么是「UTXO」,与账户体系的异同

前中国人民银行数字货币研究所所长、证监会科技监管局局长姚前,曾撰文分析全球央行数字货币的形态。其表示一种可能的央行数字货币形态是,中央银行的账户向社会公众开放,允许社会公众像商业银行一样在中央银行开户,相当于中央银行开发了一个超级支付宝,面向所有的 C 端客户服务。BIS (国际清算银行)认为这样形成的央行数字货币,称为基于账户(Account) 的央行数字货币(Central Bank Digital Account,CBDA)。

另一种可能的央行数字货币形态是中央银行以比特币这种技术发行的代币,可称为基于代币(Token) 的央行数字货币(Central Bank Cryptocurrency,CBCC),这类货币既可以面向批发,也可以面向零售。而这两种形态可以说是央行数字货币的雏形。

尽管,我国央行数字货币 DCEP 的研究起点可能是基于 CBCC,但从产品设计和细节而言两者会有很大的不同。目前业界推测更偏向于 DCEP 即采用基于 Token 范式的 UTXO 模型。那么什么是「UTXO」?

UTXO 英文全称为 Unspent Transaction Output, 英语翻译过来为:未消费的交易输出。要理解 UTXO 则要从其起源「比特币」开始说起。

通证经济专家孟岩曾撰写一篇文章,标题为「其实没有什么比特币,只有 UTXO」,实际上这个观点非常有趣,比特币世界的确没有所谓的「账户余额概念」,只有「地址」,而所有比特币都只是区块链账本上的交易输出。

举个简单的例子

A 拥有 5 个比特币,那么意味着之前有一个交易把这 5 个比特币转入到了 A 的地址,而这 5 个比特币即是未消费的交易输出。

现在 A 要发起转账交易,将这 5 个比特币转给 B。那么 A 需要把上一个交易输出的比特币作为新交易的输入,简单而言(其具体流程涉及解锁脚本、哈希算法等不作细说) A 用私钥从输出为 A 的地址的交易中取出 5 个比特币,并用 A 的私钥 B 的公钥从 A 的地址转到 B 的地址的新交易进行签名,交易完成 B 的钱包地址便有了 5 个比特币为新的未消费的交易输出,而这 5 个比特币只有 B 的私钥才能打开。

从以上流程我们可以看出, 每一笔比特币都源自上一个交易,可以一直向上进行追溯,追溯到源头的比特币都有一种特殊的交易,即比特币矿工通过挖矿而获得奖励的创币交易。比如一个矿工挖到了 10 个比特币,那么这个特殊交易的输入是 0,UTXO 便是 10。

看完了 UTXO 的交易流程,我们再来看看最为常见的账户余额体系交易流程。

再举一个例子

A 的账户拥有 10 元钱,B 的账户拥有 2 元钱。A 要给 B 转账 5 元。那么操作流程即为,后台系统在 A 账户余额里面减去 5 元,在 B 的账户余额里面增加 5 元。最终,A 的账户余额为 5 元,B 的账户余额为 7 元。

简述央行数字货币 DCEP 关键技术概念:UTXO 模型与双离线支付表中的账户余额模型仅限于传统账户体系,不适用于以太坊

基于账户余额模型的体系非常容易理解,我们日常生活中所见的银行账户、支付账户普遍是采用这样的形式。另外,在 Token 范式里同样也有账户余额模型,有智能合约功能的以太坊便是采用这种形式。

而比特币所采用的 UTXO 模型实际上没有余额的概念,参与交易的只能是「整个」比特币,不能是「半个」比特币,且输入金额必须大于等于输出金额。不同时期的比特币价格不一样,如果比特币面额与交易金额不一致,那么多余的金额需要通过「找零」的方式还给付款人(不考虑手续费的话)。

比如 A 的某个地址有 3 个比特币,要转给 B 2.5 个,那么这次交易需要将 A 该地址上的 3 个比特币全部签名交易出去,其中 2.5 个转给 B,剩下的 0.5 个转到 A 另一个地址上,这个「找零」的操作实际上是 UTXO 模型自己进行处理的。这里面的 2.5 便是 B 该地址的 UTXO,0.5 是 A 另一个地址的 UTXO。那么把 A 所有地址上的 UTXO 都找出来,实际上也就是比特币钱包的「余额」了。

中本聪发明比特币的目标是创建一个点对点的电子现金,UTXO 的设计其实可以看成是借鉴了现金的思路:比如我们可能在这个口袋里装点现金,在那个抽屉里放点现金,这种情况下便不存在一个账户,你放在各处的现金加起来就是你所有的钱。

「双离线」下 DCEP 的货币模型

在比特币的「去中心化」世界里,UTXO 得益于区块链技术和共识算法,能够通过区块链的账本来记录每个节点发生的交易,以确定 UTXO 的属权,但 DCEP 不可能在系统结构上采用「去中心化」的形式。

众所周知 DCEP 采用「一币、两库、三中心」的系统核心架构,其中数字货币登记中心即负责数字货币的整个生命周期,包括印制、转移、销毁、回笼等,以更改和确定 DCEP 的最终属权。身份认证中心则负责私钥的分发以及用户的身份信息的确权,以达到「可控匿名」的特点。

在 5G 即将来临的时代里,联网场景必然是占大多数的,但为了保证具备现金的特性以及部分极端恶劣场景的情形,DCEP 需要支持「双离线」的支付方式来作为补充。

双离线支付本质是一种收付双方均认可的延迟交易,许刚在文章里的比喻非常恰当,其类似于付款方开具支票,收款方事后凭支票向银行要求兑付。「双离线」的难点涉及到如何防伪、如何防止双花、如何实现交互以及 DCEP 的表现形态问题。

首先关于数字货币的货币面额,如果采用 UTXO 模型,那么可以分为固定额度和不固定额度两种形态。如果采用余额模型,则不存在货币面额的问题。

简述央行数字货币 DCEP 关键技术概念:UTXO 模型与双离线支付

从 UTXO 的交易流程来看,UTXO 固定额度类似于现金,交易的体验则和现金类似,需要根据付款方和收款方钱包内的固定货币额度进行找零的操作。

而 UTXO 不固定额度模型则没有固定额度,当该模型在一笔交易中被花费时,它需要根据收付双方手中的钱进行配对找零。这个「找零」的动作理论上可以通过钱包切割原 UTXO 的金额来实现,用户则不用感知,因此体验上类似于支付宝、微信支付。

余额模型则比较简单理解,使用体验上与如今的支付宝、微信支付等无异。

但是最关键的点是如果要满足「双离线」的支付要求,三种模型从体验上就各不一样了。UTXO 固定额度的模型,可以最安全、最有效地实现双离线情况下的货币多次流转。

UTXO 不固定额度模型理论上可以进行双离线下的多次流转,但不考虑其它事后追责和限额措施,仅从安全角度而言,央行长时间不对离线货币进行认证会有伪币的可能,这样流通中的 UTXO 实际上就没有了央行的信任背书,这在安全性和监管方面是不利的,所以一次离线是比较安全的选择。

余额模型如果要实现双离线则只可能一次离线。(「一次离线」是指离线使用的货币需要联网之后才能再次使用)

最后,从支付方式上而言,要实现「双离线」支付无论是哪种模型都需要收付双方进行「交互」,来实现账户地址以及交易报文的通信,从这方面来看 NFC、蓝牙是更加方便的方式,而二维码如果要实现「双离线」则需要双方进行多次互扫的操作。

DCEP 可能的最终形态

众所周知,DCEP 采用双层运营模式,需要商业银行向央行交付 100% 的准备金,然后央行再发行等额的 DCEP 给商业银行,最后由用户通过现金或者存款的方式向商业银行进行兑换。

而以上则是从 DCEP 可能采取的货币形态出发,来讨论其满足双离线情况下的模型。简而言之,如果要实现 DCEP 双离线支付下的多次流转,UTXO 下的固定额度模型更加具有可行性。但是这样便会面临着不够方便的「找零」操作。

可能有人会说,央行可以发行面额最小的 DCEP,比如发行总量为 100 元,那就发行 10000 个面额为 1 分的 DCEP,这样不是可以解决找零的问题么?

摩联科技 CTO 许刚向移动支付网表示,理论上而言这样的方式确实能够避免找零,但其运维成本会非常高,如果按照 UTXO 固定额度模型而言,每个 DCEP 都会有唯一标识,然后消费者花个 2 块钱坐趟公交,就要使用 200 个 DCEP,每个 DCEP 可能又有几百个字节(各种信息、签名),这些 DCEP 的存储和交易中的传输,都要花代价。

「UTXO 模型相比于余额模型,是在离线交易的时候能够支持离线二次流转,如果不要求离线二次流转,余额模型更接近现有的银行体系,在设计、落地和运维上会省事容易很多。因此,考虑到 UTXO 模型尽管理论上更加安全和符合现金的使用特点,但在使用体验上会不够友好,加上「双离线+离线二次流转」的极低概率,余额模型有可能成为最终折中后的结果。不过,无论是 UTXO 固定面额、UTXO 不固定额度还是余额模型,这三种模型具体会用哪种,还是结合用,这可能需要试点之后,结合其利弊,才会最终有结论。」他补充道。

另外,他表示 DCEP 如果要采用账户余额模型,那也应该会是基于 Token 范式的。因为传统的账户余额模型的特点是需要强关联自身的银行账户以及个人身份信息,属于账户紧耦合,而「可控匿名」的 DCEP 具备账号松耦合的特点。未来,随着物联网和 5G 的发展,内置了 SIM 卡的物联网设备是否可能成为数字货币的载体,将是非常具有想象空间的。

最后,无论是基于哪种模型,DCEP 最重要的是「防伪」,尤其是离线状态下的防伪和双花。目前而言,采用 TEE 或 SE 的方式来保证终端的可信认证是 DCEP 可能会采用的方式。

尽管智能手机的 TEE 已经足够普及,但 SE 也随着 NFC 手机的增加而逐渐普及,究竟是采用 TEE 还是 SE 仍然需要市场和技术的检验。在许刚看来,TEE 尽管更具普及率,且使用起来更加灵活,但其体系庞大检测认证也更为复杂,而 SE 安全性更高,并且如今支持 NFC 的手机都具有 SE,因而 SE 预计也是一种主要的方式。

「也有可能会是 TEE+SE 的联合应用。比如,TEE 解决安全显示、安全输入 PIN 码的需要,SE 解决密钥、证书安全保存和签名加密的需要。」

结语

从目前已经泄露的农行、中行以及建行的 DCEP 钱包界面来看,DCEP 的货币显示并不统一,有固定额度显示的 1 元,也有不固定额度显示的 0.46 元,或许各运营方在推广上会采用不同的形式,毕竟 DCEP 的研发强调不预设技术路线。

当然仅从曝光图也无法判断 DCEP 的具体形式,以上内容也仅仅是基于现有信息的分析,最终形态我们只能静待它落地了。

来源链接:mp.weixin.qq.com