肖臻:北京大学计算机系研究员、博士生导师,肖臻老师本科毕业于北京大学计算机系,之后在美国康奈尔大学计算机系取得博士学位,毕业后在美国AT&T实验室(其前身是贝尔实验室)和IBM T. J. Watson Research Center担任高级研究员。在AT&T工作期间获得“研究卓越成就奖”。2008年以“百人计划”身份回到北京大学计算机系担任研究员、博士生导师,带领“云计算与大数据”课题组致力于区块链、分布式系统以及机器学习领域的研究。肖臻老师在北大教授的《区块链技术与应用》公开课在网上获得了广泛好评,荣获2018年“北京大学教学优秀奖”。
以下为对话全文(有删改):
佟扬:第一个问题是:您认为央行的数字货币与之前facebook准备推出的Libra相比,在技术上有什么区别?技术上出现这种区别的原因是什么?
肖臻:目前官方还没有公布央行数字货币的技术细节,一种说法是将在技术上保持中性,既不排斥基于区块链技术的实现,也不排斥其它实现方案。
Libra已经公布了初步实现代码,这个代码还有很多不够完善的地方,但是看得出来是基于区块链技术实现的,类似于联盟链。
技术区别主要还是潜在应用场景的不同。Libra声称的目标1000 TPS,也就是每秒钟处理一千个交易。它目前的开源版本还远远达不到这个性能,但是即使我们假设将来它达到了这样的性能,跟国内双十一、春节抢票这样的场景相比,在性能上仍然要相差好几个数量级。
所以,我觉得央行发行的数字货币在技术实现上比较大概率会更像传统的分布式系统,而不是比特币那样的区块链记账方式。Libra目前设计的性能指标无法直接应对广大消费者,当然将来可能通过分片、分区等技术提高性能,但是也很难提升到为27亿facebook用户服务的目标。
当然,Libra在技术上也有一些亮眼的地方,比如基于拜占庭协议的LibraBFT共识协议以及新的智能合约编程语言Move。
以太坊上的智能合约出现过很严重的漏洞,比如2016年的The DAO盗币事件。这些事件引起了人们的反思,当时就有人提出应该用函数式编程语言,认为函数式语言不容易出错,而且将来的终极目标是从理论上证明智能合约的正确性。Facebook提出的这个Move语言也是基于这个思路,理念上跟之前的一些函数式语言比如Ocaml很像。
二十年前我在Cornell读博士的时候,用Ocaml写过一个很大的项目。当时全世界也没有多少人会用这种编程语言。其实你用熟练之后,是非常好用的,写出来的程序比C语言要直观的多。当然,这种语言也是有缺陷的,比如速度慢,编译出来的程序比C++慢得多,而且语法对初学者来说比较别扭,因为跟其它语言不太一样。其实速度慢这个缺点对于智能合约来说并不是太大的问题,因为现在的智能合约对于执行效率的要求并不高。
业界对于Facebook发布的Move语言期待很高,有的把它称为“抢占先河”之举,其实有些过誉了。用形式化的方法验证程序的正确性是很好的目标,但是实现起来难度非常大,往往只能证明一些很简单的程序,所以可能需要对智能合约的功能加以一定的限制。目前Facebook的实现只是一个很初级的版本,将来能发展到什么程度,我们拭目以待。
佟扬:您提到“央行发行的数字货币在技术实现上比较大概率会更像传统的分布式系统,而不是比特币那样的区块链记账方式”。比特币不也是分布式的吗?这两者有什么区别?央行大概率会更像传统的分布式系统设计的考虑是什么?
肖臻:严格地说,比特币协议是去中心化的,跟分布式的概念不是完全等价的。
去中心化的系统必然是分布式的:如果整个系统只运行在一台机器上,那显然不能称为去中心化的。但是,分布式系统未必是去中心化的。即使系统运行在成千上万台机器上,如果这些机器是由同一个机构管理的,那也不是去中心化的。比如Google的搜索引擎,后台有几十万台服务器,但是这些服务器都是Google内部的,仍然是中心化的。
在一个分布式平台上可以运行一个中心化的应用,也可以运行一个去中心化的应用。
所以像淘宝、天Mall后台的系统应该叫分布式的,而不是去中心化的。
目前央行还没有公布会采取哪种设计,我估计央行自己也没有确定。
不过你说得对,比特币和以太坊采用的都是交易驱动的状态机模式。这种模式的特点是让上千台计算机重复同一组操作,付出很大的代价来维护状态的一致性。这并不是分布式系统常用的工作模式。
绝大多数分布式系统是让每台机器处理不同的任务,然后把处理结果组合起来得到最后的结果。这样做的目的是为了比单机处理速度快,比如用一台机器要处理一个星期的任务,采用10台机器组成的集群可能一天就能处理完。
最理想的状况是达到线性加速比:10台机器的处理速度是1台机器的10倍。实际使用中往往很难达到线性加速比,因为任务拆分、机器之间通讯、整合各台机器的输出结果都有一定的开销,所以10台机器可能只比一台机器快6倍,但还是要比单机速度快,否则用分布式系统就没意义了。
佟扬:几千台计算机重复同一组操作,听上去很浪费但有其所用之处。
肖臻:是的,这种状态机模式的目的本来就不是为了比单机快,而是为了容错。
状态机模式最早的应用场景是一些mission critical application,比如air traffic control, stock exchange, space shuttle等。这些应用的特点是必须无间断地提供服务,哪怕宕机一分钟都会造成很严重的后果。所以要采用状态机模式让很多台机器重复同一组动作,这样一台机器出了问题,其它机器还能继续对外提供服务。
这样付出的代价就是效率很低,整个集群比单机还慢,而且集群中机器越多,速度越慢,因为要同步状态的机器越多。所以,使用状态机的应用场景,一般机器数目都不多,往往就是个位数字。像比特币、以太坊这种上千台机器保持同步的,以前还从来没有出现过。
Libra采用的基于拜占庭协议的共识机制在效率上会好一些,但是不适用于像比特币、以太坊那样的公链。
佟扬:那在您看来,央行发行的数字货币对老百姓的日常生活会有什么影响?中国电子支付规模早就是全球第一,为什么要推进发行数字货币的工作呢?央行数字货币的发行对支付宝、微信而言意味着什么?
肖臻:短期内不会有多大影响,可能会增强老百姓对数字货币的认知程度。
央行推出数字货币更多是从国家战略层面的考虑,为了应对美元霸权通过Libra、Walmart之类数字货币的渗透,可以认为是中美大国博弈的一部分。
数字货币跟电子支付还是不太一样的,电子支付仍然是通过法币和传统的商业银行进行结算的,并不是真正意义下的资产数字化。等到央行的数字货币普及之后,我估计也会出现类似于支付宝、微信之类的支付手段。
佟扬:数字货币跟电子支付还是不太一样的,跟我们平时所说的token也有本质区别~感谢肖老师的分享!
来源:金色财经