组织机构/年会活动: 中国交易银行50人论坛 中国供应链金融产业联盟中国供应链金融年会 中国保理年会 中国消费金融年会 第三届中国交易银行年会

张明丨Libra:概念原理、潜在影响及其与中国版数字货币的比较

时间: 2019-11-12 13:35:38 来源:   网友评论 0
  • 本文从概念和技术角度阐述了Libra的运行原理,分析了其对全球经济的潜在影响,并与即将推出的中国央行数字货币进行了横向对比。


注:本文由杨晓晨与笔者合作完成,发表于《金融评论》2019年第4期,欢迎转载,但请务必注明出处。
 
张明为中国首席经济学家论坛理事,平安证券首席经济学家
整理:首席经济学家论坛


摘要:本文从概念和技术角度阐述了Libra的运行原理,分析了其对全球经济的潜在影响,并与即将推出的中国央行数字货币进行了横向对比。

本文认为:首先,Libra在技术路线和运行模式的选择上均采取了产业合作和国际协调的方式,是目前非主权数字货币中的诚意之作。

第二,Libra的愿景和架构设计仍存在逻辑冲突,以当前设计难以达成其声称的普惠目标。

第三,Libra没有独立的货币政策并不代表没有货币政策,其将向小型经济体引入货币局制度,冲击原有经济秩序,并将通过货币乘数效应向大型经济体注入流动性,造成通胀压力。

第四,Libra储备资产的中间形态较多,且涉及大量跨境交易,将使其流动性管理工作异常复杂,加剧全球市场波动。

第五,中国央行数字货币的模式与Libra存在本质区别,或将通过对M0的统一管理成为助力央行达成货币政策目标的有力手段。

毋庸置疑,Libra和中国央行数字货币无论自身成功与否,都将成为全球正规数字货币发展浪潮的重要推手,为我们开启一个全新时代。


一、引言


中本聪(Satoshi Nakamoto)的比特币创世论文《Bitcoin: A Peer-to-Peer Electronic CashSystem》(Nakamoto2008)发表于2008年,迄今已逾十年时间。

期间,以比特币为代表的类数字货币得到了从无到有,从小范围研究到形成大范围“币圈”的长足发展。但从初心而论,这些“数字货币”似乎都缺失了作为货币的最基础功能:支付。

由此,由Facebook力主推出的Libra甫一出现,便反复强调自己的支付属性,提高了交易确认速度,并设计储备资产机制用于维护币值稳定,似是数字货币领域的“回归初心”之作。其前景如何,亦吸引了全世界央行和公众的目光。


Libra尚未正式推出,目前仍停留在白皮书和听证阶段,因此国内外相关讨论以社交网络和媒体评论文章为主,罕见学术文献。但从我国央行数字货币角度,国内央行官员对相关问题有较为深刻系统的论述。

周小川(2016)认为数字货币仍应采取类似于现钞的“中央银行—商业银行机构”二元体系完成发行及回笼。

范一飞(2016)梳理了央行数字货币的基本理论和路径选择问题,认为我国数字货币应仅起到部分替代M0的作用,并暂不考虑智能合约。

姚前及汤莹玮(2017)从理论和具体设计层面对央行数字货币面临的问题和设计要点进行了归纳。

姚前(2019)基于DSGE 模型的实证结果显示,发行央行数字货币对我国银行系统和金融结构的冲击可控,而且可成为一种新的货币政策工具,增强货币政策有效性。


本文尝试从三个方面对Libra进行阐述:

第一部分是概念原理,区别于一般的经济学分析,本文将不仅探讨Libra在经济角度的上层设计,更将深入底层技术,分析其技术创新如何为上层设计提供保障。

第二部分将对Libra的潜在影响进行分析和逻辑推演。第三部分将以Libra为基准,与我国央行数字货币进行对比分析,以期在二者真正来临之前对其有较为全面客观的认知。
 
二、Libra的基本概念、核心技术与运营模式


Libra的吸引力不仅源于Facebook的全力投入,更源于其自身的诸多独特设计。本章将从基本目标、底层核心技术、运营模式、当前监管态度几个方面对Libra的基本情况进行全面阐述。这些概念及设计原理将成为下文探讨其潜在影响的基础。
 
1. 自我定位及生存基础


自数字货币诞生以来,哈耶克(2019)的《货币的非国家化》与中本聪的比特币创世论文便一直在哲学和方法论层面引导着整个行业。

哈耶克在货币供给领域野心颇大,看起来更像一场自由主义革命:“避免我们被持续通胀驱向政府完全的控制和指挥,进而最终得以拯救文明的唯一办法是:剥夺政府在货币供应方面的权力”。而中本聪则在论文中仅仅说比特币是“允许有意愿的任意两方在没有可信第三方的情况下直接交易”,并且“交易从计算的角度无法撤回,从而保护卖家不被欺骗”。

从中本聪论文通篇的文字表述看,比特币在发明之初仅仅是为了降低可信第三方所引入的额外交易成本,并且从技术角度预防商业欺诈。但其“去中心化”的实现路径,却在某种程度上承载了哈耶克“非国家化”的理想。


 正因如此,各国政府才对比特币和其他类似数字货币实施打压;也正因如此,Libra在创设之初便尽力避开取代主权货币的嫌疑。Libra白皮书(2019)在开篇处便十分明确地表达了与监管部门合作的态度:“一些(加密货币)项目还试图破坏现有体系并绕过监管,而不是在合规和监管方面进行创新,以提高反洗钱举措的效力。

我们相信,携手金融部门(包括各个行业的监管机构和专家)进行合作和创新,是确保为这一新体系建立可持续、安全和可信的支撑框架的唯一途径”。
 
在此基础上,Libra才有可能与各国政府探讨其存在的意义:为更多人提供开放、即时和低成本的全球性流动货币,提升金融服务的普惠性和安全性。

在当今比特币已经部分沦为暗网和非法跨境交易工具的情况下,这个愿景颇有回归比特币创立之初心的意味。

笔者认为,在现阶段当且仅当数字货币与各国监管部门合作,才是确保自身合法生存的基础,亦是长远发展的前提。


2.核心技术


需要明确的是,Libra货币只是建立在Libra区块链基础上的应用之一,而非全部。

因此对于Libra货币的分析实际应从两个层面展开:第一是底层的区块链技术,这是上层货币应用的基石;

第二则是货币层面的规则设计。二者均为Libra货币的支柱,缺一不可。当前针对货币层面的分析如汗牛充栋,但供非技术出身的读者阅读的技术分析则略显不足。

本文将尽量尝试在两个层面都提供清晰完整的表述。


Libra白皮书中特别强调了三项技术,用以区分Libra和其他区块链:


①设计和使用Move编程语言;
②使用拜占庭容错 (BFT) 共识机制;
③采用和迭代改善已广泛采用的区块链数据结构。
 
Move语言外,其余两项都是对现有技术进行改造。Libra有意避免了对现有技术的全盘否定,而是从更易于实现和安全的角度选择了成熟方案。这种折衷考量和局部创新的思路贯穿了整个Libra的设计。

从工程角度,这种思路更易于团结更多业内同仁参与其中,亦是被诸多全球性标准化工作(如4G/5G标准化等)所采用的方式。下文将对三种技术进行分别介绍。


1Move编程语言


Libra提供了长达26页的技术论文来论述Move语言的特点。想要了解Move语言的优势,必须首先了解以比特币和以太坊(Ethereum,其编程语言为Solidity)为代表的传统区块链所用语言存在哪些问题。


首先,货币对于传统语言来说并非一种特定的“资产”,而是像程序中的其他变量一样,是一组数据,存在被任意虚增和复制的可能。

现实中有价值的资产不仅数量严格受限,而且在转移和交易过程会受到严密监控,不存在诸如转移之后一方数量不减少,而另一方数量相应增加的情况。但在数字货币中,黑客曾多次利用整数溢出等漏洞大举复制资产,造成过数亿美元的损失。

更进一步而言,即便在数字货币的原生语言中将其强制定义为资产,以及在编译和运行过程中对转移及增加予以严格限制,但该语言编写的智能合约中可能会涉及用户自定义的其他类型资产,这样会失去语言的原生保护,从而需要开发者自行维护其安全性,这无疑大大增加了系统风险。


其次,传统区块链语言尚未在安全性和灵活性之间找到平衡点。智能合约是区块链技术的重要应用之一,允许用户利用区块链的可信性来自动完成一系列自定义动作。

一旦满足了某项预先设定的条件,该条件下的一系列后续动作将会不可撤销地执行。这些动作中可能会包含支付对价、权属登记、保险执行、租约执行等。

区块链在其中的角色,类似于现实合约中具有强信用的中间人(如进出口业务中银行的角色,或淘宝交易中支付宝的角色)。

智能合约的出现,可以使现实中各类交易的安全性和便利性极大地扩展。但如果出现问题,也将令使用者遭受重大损失。


为了适应这种便利性,很多传统区块链语言采用了类似于PythonRuby的动态类型语言模式。这可以大大简化编写程序的过程,因为无需给变量定义类型模式,也无需在编码期间就了解系统将如何具体运行。

这些都将在实际运行中再进行检查或直接动态指派(dynamic dispatch)。此类语言通常具备高度的易用性,开发者可以快速实现功能。但事实上,与传统的C/C++/C#/Java等静态类型语言相比,动态语言是把发现风险的工作从编译阶段推向了实际运行阶段。

上述类型定义错误和代码进入到无法预知分支的低级错误,在静态语言中通过编译和几个简单测试用例便可轻松暴露。对于一个必须高度可靠的交易系统而言,各类bug等到运行时出问题再去解决是无法容忍的。


为解决上述问题,Move的技术论文从四个方面介绍了Move的创新之处。


首先,Move定义了“一等资源”概念(First-Class Resources)。这一概念实现了上述“资产”的特点:

不能凭空消失或被复制,必须在各个存储间以“移动”的方式完成交易。不仅Libra货币,其他基于Libra区块链开发的智能合约也可享有这样的保护措施,从而较好地从根本上解决了上述问题。

同时,Libra也允许用户自定义一些可修改资源的关键行为(如创建、修改、销毁等),但这些行为在系统中高度受控,只能由定义该种资源的模块自身进行操作。


第二,灵活性。Move允许开发者像其他高级语言一样调用各种过程(procedures),或使用面向对象的诸多概念,以便完成大量复杂的计算或逻辑功能。

但为了兼顾安全性,其中摒弃了大量可能导致程序产生不可预知行为的引用或指针,从而使其更加符合线性逻辑,避免程序的非线性行为。


第三,安全性。当前其他语言在选择可执行编码层次时,为了照顾代码安全性,都会选择高级语言或汇编语言。

前者逻辑较为清晰,但验证安全性需要较为强大的编译器;后者则更多需要在运行阶段才能查出错误。

Libra选择了二者的折衷。其采用字节码(bytecode)的模式,介于高级语言和汇编语言之间,并引入了字节码验证器(bytecode verifier)。这一做法可以避免向区块链各个节点引入大计算量的编译器,也无需等到实际运行时才能发现代码问题,从而用较为低廉的成本换取了代码的安全性。


第四,可验证性。Move注意到了其他一些区块链语言的常见问题,并由此对自身功能进行了一些限制:

其一是不允许动态指派,因其容易混淆究竟哪一个模块调用了特定功能,并造成非线性的程序行为;

其二是不允许多个可变的指针同时指向一个变量,这会导致同一时刻该变量被多个来源进行修改,从而导致最终状态难以预测;

其三是对资源进行强制封装,以保证只有本模块能行使对该资源的修改权,从而防止外部模块对资源的破坏。


2)使用拜占庭容错(BFT)共识机制


 Libra采用了LibraBFT共识协议来保障整个网络在高交易处理量、低延迟和更高能效的情况下快速达成一致。为了说明LibraBFT的原理,我们需要首先探讨是什么样的需求使其变得如此重要。


拜占庭容错(Byzantine Fault Tolerance)始于图灵奖得主Leslie Lamport描述的一个计算机领域经典问题:拜占庭将军问题。

问题大意是拜占庭帝国在历史上幅员辽阔,其军队相互分散。在不存在核心指挥官的情况下,相互联系只能依靠各个军队的将军间进行两两点对点通信。

如果需要进攻或有敌军进犯,各将军间便需要通过沟通达到协调一致的效果。

在现实环境下,可能会有若干因素影响共识达成:消息传递通路可能存在问题;部分将军可能叛变;叛变的将军可能会恶意传达错误消息给其他将军;部分军队可能被围困导致无法行动等。

在如此恶劣的环境之下,如何保证大部分军队取得共识?或者说,到底有多少将军同时出现问题,才会导致系统的全盘崩溃?


这个比喻跟区块链系统中面临的问题非常类似。区块链去中心化的根基在于全网需要针对某笔交易(transaction)取得共识。

在没有中心节点的情况下,共识只能依靠网络中各个节点相互之间点对点通信来进行协商。但实际网络中通信链路可能出错,各个节点可能会失效,同时可能会发生恶意攻击。那么如何保证全网能够顺利取得共识呢?


为了解决这个问题,比特币采用的是工作量证明(PoW)的方式,即由矿工们通过付出大量算力挖矿来争夺对当前区块的记账权,他们的回报就是挖矿得来的比特币。

不诚实的矿工不会愿意付出如此大的代价来换取挖矿收益,但为了破坏整个网络,他们必须掌握全网50%以上的算力才可掌控新区块的产生。这在当今世界几乎是不可能的。

但这样做也有明显缺陷,其计算复杂导致能源浪费严重,同时导致区块生成的时间过长,确认交易往往需要数十分钟的等待时间,用作在线支付系统之时实时性难以满足要求。


 LibraBFTHotStuff算法改进而来。为避免过于复杂的技术讨论,本文只简要说明共识的流程。

与比特币完全工作在网状网络不同,BFT算法为了降低流程复杂度,需要工作在有若干重要节点的星型网络中,即各重要节点之间互相通信,其余节点只跟临近的一个重要节点之间产生联系。这也是为何Libra在初期要工作在联盟链,而不是公有链上的重要原因。


LibraBFT定义这些重要节点为验证者(Validator),在网络中起到接受交易请求和验证区块有效性的作用。

当一笔交易产生后,它会被最近的一个验证者接收,此时该验证者就作为发起者(Leader)来组织验证程序。它将若干笔交易打包进一个区块(Block),并广播给网络上所有其他验证者(图1中步骤①)。

其他验证者收到区块后进行验证,如果认可这一区块,则向发起者回传投票(Vote)结果(图1中步骤②)。在收集到足够多的投票后,发起者生成一个法定人数证明(QCquorum certification),代表该区块已经得到了足够多节点的确认,并把该证明向所有验证者广播(图1中步骤③)。

此时所有验证者节点都将根据这一消息更新本地保存的区块链状态,将新验证的内容加入。这一过程称为一轮(Round)。之后其他交易所产生的验证内容也会陆续加入。为了避免前述失效或者恶意节点在此过程中进行破坏,新加入的内容将在三轮之后才正式被全网接纳或提交(Commit),正式成为整个区块链的一部分。

比特币所采用的工作量证明机制可以防止50%的节点失效,而且对所有节点一视同仁,可以直接应用在公有链上。

相比之下,LibraBFT理论上只能防止不超过1/3的节点失效,而且必须指定若干重要节点作为验证者,使得其看起来不如比特币强大。但LibraBFT在较大程度上缩短了交易的确认时间,使其可以适应现实交易需求。

此外,Libra发布初期将工作在联盟链上,各重要节点均为联盟成员提供,恶意节点出现的概率将大大降低。从实践的角度看,LibraBFT在安全性和效率方面是相比于比特币的更优选择。


3)改善的数据结构


Libra虽然自称为区块链(Blockchain),但其白皮书也明确指出在Libra中没有类似于比特币的那种区块链条的模式,而是以统一的数据库(database)形式存储。


 此处需要区分一个重要概念。虽然个人在比特币系统中可以开设账户或钱包,但其内部并没有一个专门的“账户”空间用来存储比特币资产。比特币是将创始以来的所有交易都以链状形式储存。

链上按时间顺序排列了大量节点,每一个节点是一个区块,每一个区块中储存了大量在那个时刻附近发生的交易。如果有用户需要查询自己的账户中有多少余额,对于比特币系统而言,实际的动作并非找到对应账户直接读取余额数据,而是需要遍历与该账户有关的历史交易,通过历次的交易金额来计算出当前的账户余额。该模式被称为未花费的交易输出(Unspent Transaction Output UTXO)模式。


Libra与以太坊一样,定义了账户(account)的概念,账户中存储了相关的资源和模块。如上文所述,libra货币也是以资源形式存储在账户中,从而受到Move语言的保护,不能随意复制或消除。


Libra是以账本的当前状态和历史变化的方式存储整个系统的,有点类似于可恢复到任意一个历史状态的数据库。

每当一组新数据写入数据库,就会生成一个新的历史状态。历史状态通过被称之为默克尔树(Merkle Tree)的数据结构进行组织。如图2所示,H函数代表一个哈希(Hash)函数,即对输入内容进行编码,输出一个长度始终不变的数,相当于对输入数据加密。

如果输出变化,输入必然有变化,且无法根据输出数据直接反推出输入数据。图中h4h0h1的哈希值,h5h2h3的哈希值。顶层即为默克尔树的根节点(root),图2中根节点的值是h4h5的哈希值。由此可知,默克尔树的一大优势在于只需要观察根节点即可知道整个树上各个节点的状态(例如是否经过篡改),而不必把树上所有节点重新遍历计算一遍。

这种结构的另一个优势在于,可以方便地追溯数据库任意一个账户在任意一个历史时刻的状态。尽管Libra账户与用户真实身份并不挂钩,但出于方便监管的考量,一旦账户出现异常行为,其所有的历史状态理论上都可以被监管机构快速获得,这点就类似于现实中的银行账户。

如果Libra与现实储备资产的兑换也受到严格管控的话(具体模式尚未公布),其匿名性与比特币相比将大打折扣。

这种特性无疑是一把双刃剑,一方面对用户而言失去了一些吸引力,但另一方面也压缩了非法跨境交易和洗钱的空间,对Libra的生存发展而言不无裨益。


3. 运营模式


1Libra货币的发行机制


根据该白皮书,Libra立志成为一种“稳定的数字加密货币”。因此,Libra“将全部使用真实资产储备(称之为“Libra储备”)作为担保,并由买卖 Libra 并存在竞争关系的交易平台网络提供支持。”


Libra所采用的模式有些类似于布雷顿森林体系时期美元与黄金挂钩的制度,或者香港等地区采用的货币局制度,亦或是国际货币基金组织创设的特别提款权(SDR)。

其货币发行量不