精华篇 | 王嘉平:突破不可能三角「异步共识组Monoxide」(附PPT)

整理 | 传神

出品 | 区块链大本营(blockchain_camp)

近日,CSDN联合创新工场执行董事王嘉平博士于北京成功举办个人见面会之后,业内外技术人士和广大开发者对此极为关注。纷纷表示希望能有机会再深入理解本次演讲内容,能够公开分享演讲资料。在区块链大本营获得创新工场和王嘉平博士本人授权之后,终于为大家献上了本次演讲精华+公开讲义(文末)。

本次见面会是继王嘉平博士于计算机顶级学术会议NSDI 2019上发表一篇名为Monoxide: Scale Out Blockchain with Asynchronized Consensus Zones轰动性区块链扩容论文后,在国内举办的首场公开技术分享活动。

该论文提出了 Monoxide 方案并获得了业界的高度关注与广泛认可,关键设计就是通过其创新的“异步共识组”(Asynchronized Consensus Zones),将区块链性能提升至比特币的千倍以上,并同时兼顾安全性与去中心化。活动吸引了众多高校学者、开发者以及区块链技术爱好者前来参加,许多观众还带着打印好的原版论文前来请教。

开场时,王嘉平分享了自己对区块链的理解。他认为,区块链最伟大的地方是分布式计算系统的设计,它是在去中心化的系统上设计的,任何人都没有壁垒、可以公平、透明、安全地参与。

首先,王嘉平回顾了这篇论文为何会投在一个分布式系统的会议中。他认为,目前区块链在性能上几乎没有什么提高,容量也没有太大变化,尽管很多公链在谋求某种突破,同时也在控制层面提出了很多方案。但在他看来,如果我们关注的是性能和状态容量的问题,那么它们就跟分布式系统有直接关系,而跟共识算法没什么关系,所以该论文投在一个分布式系统设计与实现的会议中。

从整个学术界的领域来说,这个会议对区块链的关心非常少,这篇论文是NSDI上唯一一篇区块链的论文。

以下是本次分享的重点,王嘉平从两部分展开讲解:

第一部分:从分布式系统的视角,剖析区块链系统的基本工作原理与技术本质,分析目前区块链系统的性能与瓶颈所在。 第二部分:详细讲解今年在USENIX的旗舰学术会议 NSDI 2019 上发布的最新研究成果,如何在保障安全性与丝毫不牺牲去中心化特性的前提下,通过异步共识组架构实现高性能可伸缩的区块链系统,并与大家分享了最新的研究进展与思考。

01

分布式系统视角下的区块链原理与瓶颈

首先,王嘉平博士从结构上剖析了什么是区块链。他认为,从最简单的结构来看,区块链就是一个状态机,它内部有一个状态,这个状态可以是一个树或一堆树,也可以是一个哈希表或一个数据库,这个系统工作是从外部收到input,因为外部系统的不断输入,它会改变自己的状态,这也是所有计算机系统的运作模式。

另外,他也从比特币和以太坊系统设计的角度,来说明什么是状态机以及区块链系统如何运作的,同时也介绍了两者在系统设计上的区别和存在的弊端。

接下来,王嘉平介绍了状态机的性能。他认为,状态机最核心的性能包含几个方面的因素。

第一个方面是状态容量,其最大的瓶颈是内存问题,不是指历时交易要保存下来的问题,而是指当下要记住这个状态。他指出,余额就是一个最典型的例子,比如系统要记住用户余额是多少,为什么余额要存储在状态内存中而不是状态硬盘里呢?因为系统要能够随时随地访问这个数据,当收到一笔交易要验证这个交易的有效性的时,系统就要去访问这个账户里有多少余额,所以这个信息必须要放在内存中,不能放在硬盘里。而目前很多公链系统对状态机没有任何改善。

第二方面是吞吐量,吞吐量就是每秒能处理多少个交易,对于状态机来说就是每秒可以处理多少个inputs。比特币当时设计的整个网络平均带宽比现在低很多,这就是比特币当时为什么用10分钟出一个块,这种非常保守的吞吐量设计。现在比特币的分叉率与当时相比低很多,就是因为现在整个互联网的传输速率比以往高很多,这是最大的不同。后来由于不同公链采用的共识算法的改进,导致吞吐量不同程度地增大。

回到区块链(blockchain)定义和原理上来,王嘉平认为,并不是每个input都是有用的、合法的,每一次input都需要验证,尤其在区块链中,每一次验证是有代价的,同时验证是分批验证,因此就会出现block,这也是为何区块链叫blockchain。

区块链作为一个有验证的状态机,而且还是一个分布式的状态机,不是放在机房里面就可以自己运行的,而是让大家随时随地都能运行,并且保持状态一致。随后,他也进一步介绍了区块链中每个块(block)之间的逻辑关系。

关于区块链的出块速度能达到什么程度呢?王嘉平也给出了解释和证明,他认为区块链的出块速度不可能很快,并用理论公式和技术原理怎么了这一结论。

在TPS的计算公式中:

TPS=BlockSize/(TxSize × BlockInterval)

即每个块的大小除以每个交易的大小与出块间隔的乘积。

对于市面上号称实现百万TPS的区块链,王嘉平也给出了验证和反驳,带宽是有理论上限的,在去中心化的网络中,每个节点不仅要把块收回,还要把块发送出去,所以这里的带宽往往是放大的,若从极端角度来讲,只收块而不送出块,最高的TPS可达到7k多。这也是区块链的核心性能瓶颈。

为何特别强调带宽呢?王嘉平认为,因为在所有计算资源中,唯独带宽不是充分市场化的,内存、硬盘、CPU都可以买到,唯独带宽不行,一是它只有几家运营商能提供,二是高带宽受地理位置的限制。如果提高带宽要求,那就会极大地损失去中心化的程度。

随后,他从计算模式上分析了POW和POS共识算法的区别、出块的机制、解决问题的关键。区块链状态机不仅仅是分布式的,还是去中心化的,出块具有随机性,所有的共识算法是解决由谁来出块,并要达到公平、安全。而共识不仅要解决块由谁来出,还要解决出块冲突的问题。

关于区块链吞吐量的限制问题,王嘉平详细讲解了采用不同共识算法POS和POW的不同,并用函数证明了随着时间推移,全网节点被传播抵达的比例,这条曲线可以直接分析分叉率。

对于区块链不可能三角,王嘉平认为确实存在这个问题,但有个前提假设,如果是单链系统一定会有这个问题,它有安全性、正确性的要求,这意味着全网络节点要复制所有状态;去中心化要求参与门槛低,带宽、CPU、内存要求比较低,否则会有节点参与不进来。在这两个相矛盾的约束下,导致其性能的状态容量不高。

吞吐量就是平均带宽除以交易的大小,单链系统要求每一台电脑维护整个区块链世界交易里涉及的数据,这就决定了其吞吐量不可能太高。

第一部分演讲结束之后,王嘉平针对大家的提问给出了详细的回答。经过短暂的中场休息,活动进入了更为精彩的下半场。

02

异步共识组:高性能可伸缩性区块链系统

第二部分演讲中,王嘉平针对论文提出的 Monoxide方案进行了详细解析。在他看来,这篇论文本质上解决性能这个问题是不需要一个节点去掌控、维护全网交易和数据。并实验中通过2000个分片实现了1000倍的吞吐量提升。

在这样一张曲线图中,横轴是这些节点被划分成了多少个共识组,纵轴是平均每秒处理的交易量。在测试中,最大的共识组数量为2048,此时吞吐量为11694 TPS。这个数字已经远超现今所有公开发表的运行于互联网上的公链项目,当然那些只在机房里面跑,单节点采用怪兽般服务器的项目除外。

世界计算机不是区块链的本质,区块链的核心诉求在于关注计算过程的可信,而不是为了获得计算的结果。这一点是与为了高效将计算完成,获得结果的云计算本质的区别。云计算无法实现向第三方证明其计算过程是可信的,区块链对于计算任务本身也无法向云计算那样的高效和低成本。

王嘉平还强调了区块链去中心化计算是为了让计算变得更加可信,使得实际部署的代码和运算逻辑真实可靠、不可篡改的,而不单单是为了实现计算并输出一个结果的任务这一点是与为了高效将计算完成并获得结果的云计算本质的区别,云计算无法实现向第三方证明其计算过程是可信的,而区块链对于计算任务本身也无法像云计算那样高效和低成本。

同时,区块链带来的问题和瓶颈是低TPS,难以扩展;每个节点都要复制,所以有带宽的瓶颈;交易要验证,因此对CPU有要求;交易记录要保存下来,因此对硬盘的I/O也有要求;每个节点要存储状态,因此对内存有要求。

为何低TPS是目前区块链系统的通病呢?王嘉平也给出了解释:系统中的每个节点都需要处理网络中出现的所有交易。无论这里的共识算法是什么,PoW、PoS还是BFT,情况总是这样。可伸缩性问题的根本原因不是安全性或去中心化。这是因为它们的系统设计中,让更多节点加入到网络中并不是帮助其工作,只是增加了工作负载的重复。这就是为什么在这些系统中每秒的交易数如此之低。

为了解决区块链系统的可扩展性问题,本篇论文提出了异步共识组。其基本思想是让不同的节点组在网络的不同分区上工作,并称这些分区为组zones。

在该方案中,随着整个网络被划分为更多的组zones,交易吞吐量和状态容量被扩展。共识组由多个同质的、功能上完全一致、地位上也完全平等,并逻辑上尽量隔离的独立共识系统的实例所构成,他们并行工作,分摊全网的吞吐、计算、存储的压力,分摊全网状态的维护工作。

最后,王嘉平针对异步共识组的系统设计进行了详细讲解,并从可扩展性、安全性以及去中心化三个方面进行了深度分析。

活动结束之后,仍有不少观众与王嘉平博士围坐一起,深入交流和探讨学习心得。

原文发布于微信公众号 - 区块链大本营(blockchain_camp)

原文发表时间:2019-04-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券