“UTXO”、“双离线”,如何深入理解这些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元。

基于账户余额模型的体系非常容易理解,我们日常生活中所见的银行账户、支付账户普遍是采用这样的形式。另外,在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模型,那么可以分为固定额度和不固定额度两种形态。如果采用余额模型,则不存在货币面额的问题。

从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的具体形式,以上内容也仅仅是基于现有信息的分析,最终形态我们只能静待它落地了。

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注