计世网

围绕区块链“不可能三角”的各种可能
作者:焦臻桢 | 来源:计算机世界
2019-04-03
为了更好理解区块链这个有着持续热度的问题,今天我们从技术视角出发,讲讲目前能够带来TPS提升的“靠谱”方法和技术路线。

 

近年来唱衰区块链(尤其是公链)的声音中,提得最多的是它的交易处理效率太差、TPS(每秒交易次数)太低的问题,比如:“比特币每秒只能处理个位数的交易,以太坊也不过20多笔每秒,甚至不具备支持一个普通规模应用的能力,还想C位出道成为下一代分布式社会的底层平台?”这类问题不仅区块链唱衰者常挂嘴边,也常常是国内外区块链团队在讲述自己的工作的聚焦所在。然而,很多团队常在“研发”短短数月内就号称已经研发出TPS高达十万甚至百万的区块链底层系统,噱头十足,然而真真假假,颇难分辨。

为了更好理解这个有着持续热度的问题,今天我们从技术视角出发,讲讲目前能够带来TPS提升的“靠谱”方法和技术路线。希望在阅读这篇文章后,大家再看到类似“百万TPS”之类宣传时,就能够理解他们到底在讲什么:

首先,区块链有一个著名的“三难问题”,也常称为“不可能三角”,即区块链系统无法同时在可扩展性(Scalability,国内也常译为高效性)、安全性(Security)和去中心化程度(Decentralization)这三项指标上做到最优。从另一个角度来说,那就是区块链必须得在这三者之间做出一个优化的权衡。“不可能三角”对区块链的重要意义在于:完全抛开“三角”中的其他两者而孤立地去谈其中一者,那就根本不是区块链。例如,支付宝TPS很高,但它是中心化的,而非区块链所面对的“多方参与、共同记账”的开放环境。再比如联盟链(一种面向企业服务领域的区块链方案),它就是一种TPS很高的区块链,但它在安全和去中心化程度上都有一定的妥协,仅能用于成员已知且可信的环境,而非区块链公链所面对的开放成员(Open Membership)环境。因此,当我们听到别人提起高TPS的时候,首先要想一想,这个高TPS背后隐藏了什么,它究竟是否真的具有价值。

近年来,很多研究工作都围绕如何在“不可能三角”上取得一个优美权衡而努力,而这些努力大致可分为三个大类:第一类是从共识机制出发,第二类是从区块结构出发,第三类是从系统实现出发。

从共识机制出发是近年来最火热的话题和路线

除了我们耳熟能详的工作量证明(PoW)和权益证明(POS)之外,还出现了DPoS、Algorand、zk-SNARK、Stellar等,大概能列出数百种。虽然花样繁多,但是我们可以把它们再细分为三个子类:

1.中本聪原教旨主义者:这部分人以中本聪的比特币白皮书为圣经,最多也就是围绕BIP的工作方向对以PoW为核心的中本聪共识进行小修小补,在这一派中,尝试提升TPS的举措包括调整区块大小(甚至这样的行为都会引发巨大争议)等。这条战线上往往以传统的比特币矿机矿场为主,虽然增加区块大小会在互联网上造成更多的传输延迟继而增加分叉风险,但由于矿场网络的特殊性等原因,在实际中还是能够获得数倍的TPS提升(这一倍数与区块增大倍数直接相关)。

2.在中本聪共识基础上进行较大创新的改良派:这部分人又可以分为两类,一类坚信“计算即正义”,认为只有PoW中的计算才是数字世界的真谛;另一类则务实地认为唯有PoW经历过多年的考验且几乎没有出现过大的问题,所以它仍然应该是首选。不过在改良派中,普通认为基于PoW的共识协议需要有大的创新才能与时俱进。早期从网络和分布式系统等角度对区块链进行改良的学术派多在这个方向上有所建树,代表性工作包括Bitcoin-NG、Byzcoin和Bicomp等。这些方法一般对传统中本聪共识过程有较大的改变,包括改变PoW的作用、改变区块结构、解耦区块产生和交易打包过程等。然而,它们往往也会带来新的问题,比如,Bitcoin-NG可以在PoW共识下达到很高的TPS,但却会造成网络中出现个别节点权力过大的问题。基于此,Bicomp提出一种双层区块结构,让不同节点打包不同功能的区块,各司其职,不能越权,制约了网络中霸权者的产生。除了以上代表性工作,在改良派中还有一部分工作显得更为激进,体现在对区块链的“链”式结构都进行了重构,提出诸如有向无环图(DAG)等结构,代表工作有IOTA和Conflux等,详细介绍参见本文的另一个大类“区块结构”中的内容。该类型工作的TPS参差不齐、相差较大,从数百到数万都有,TPS越高者在PoW安全性和去中心化程度上牺牲越大,这就或多或少违背了选择PoW的初衷。此外,该类方法总体还会受限于PoW的计算耗时、区块衔接设计与传播时间、交易传播时间等。

3.完全抛弃中本聪共识的颠覆派:主要代表为旧派网红PoS、DPoS,或新贵如zk-SNARK、Algorand等。最著名、也是最饱受争议的代表性人物之一可能是EOS的提出人BM。PoS等共识完全抛弃了传统“挖矿”的概念在PoS的支持者看来:“矿工听起来太土了,埋头计算又辛苦又浪费资源,都商业社会了,金钱才是最大的正义”。PoS的理论依据是“掌握了系统中最多钱的人不会去做伤害系统的事情”。妥妥的资本主义!PoS共识无须挖矿且没有繁重的哈希计算过程,可以非常快速地产生区块,因此其TPS方面的表现自然能够高出PoW一大截。然而,实践才是检验真理的唯一标准,EOS等公链上线后曾爆出使用成本过高等问题,各种非议也是接连不断。PoS体系尚未经受过长时间且大范围的考验,不像PoW一样已经扛过了大批黑客一轮又一轮的攻击。因此,很难下断言说PoS是解决“不可能三角”的完美之道。而且,PoS的理论基础必然会带来资源分配的不均,并会随着时间的推移不断放大,产生更大的不公,这恰恰是牺牲了去中心化的一个表现。一些新的工作采用随机选择出块者或验证者的方式来代替“有钱说了算”,例如Algorand,但Algorand饱受争议之处又在于它放弃了经济激励,这又降低了网络节点参与的热情度。干活了不给钱,那还继续留下来干活的很可能就会有越来越多的不良动机者。但不管怎样,越来越多的新工作诞生在这一领域,连以太坊也在严肃思考向PoS迁移,并已基本确定了Casper协议。这一大类的方法往往计算耗时较少,且由于打包过程中没有传统中本聪共识的不确定性,区块尺寸可以更大以容纳更多交易。这个类型的工作以高TPS著称,部分宣称可达百万。但考虑到打包节点的处理能力、其周围网络潜在的拥塞和延迟、打包节点遴选耗时等,真实的TPS很难达到对外宣称的量级。此外,该类工作所经历的现实环境下的考验仍不足以证明其安全性和可靠性,还需我们拭目以待。

从区块结构出发,也是当前的研究和实践的热点

区块链,顾名思义,以链的形式串连区块,这就是区块链的基本结构。然而,有些做法颠覆了这个结构,就是我们上文提到的DAG。DAG不是链,更像一个网。最著名的DAG结构如IOTA,甚至连区块都没有,直接把海量的交易通过单向引用连结成了一张网,如下图所示。

DAG的出现来源于以下两点思考:

一是在有限TPS的条件下,如何记录尽可能多的数据?

二是如何解决传统链式结构下PoW共识易分叉所带来的隐患?

分叉问题是因为网络规模过大时,不同节点可能同时产生不同的区块并在周围延续、形成不同的分支链。当不同分支链相遇时,就必须面临仅可选择其一的窘境,而另一条会被直接丢弃,上面所有的交易也随之消失。PoW区块链的易分叉问题会带来很多不良影响,包括潜在的自私挖矿攻击、算力浪费,以及众所周知的51%攻击等。由此可见,链式结构存在一定顽疾,这也给了DAG一派立足的基础。

采用DAG的方案在近段时间里大量涌现,并常以区块链3.0自诩,俨然已稳居区块链新一代接班人地位。然而,DAG也有其顽疾。首先是交易确认时间:DAG的非链式结构牺牲了稳定性和交易的固定时间序,交易或区块的提交相对链式而言更为随意,因此更难被最终确认,会带来很大的不稳定性,而不能被最终确认的交易,也就谈不上有什么高的TPS。为解决这个问题,IOTA引入了协调器的角色,被协调器确认的交易即是被确认的交易。然而,协调器的出现背离了IOTA最初的理论基础,这个类中心化形态的存在,也让IOTA团队在解释“是否去中心”这个问题上动更多脑筋自圆其说了。与之相比,Conflux引入了一种类似于基准链的设计来解决DAG的高动态问题,可以看成Conflux在链和DAG结构之间进行了融合,用链结构来锚定DAG的时序。

然而,DAG还存在另一个大的问题:缺乏可行的激励机制。虽然采用PoW,却无法激励矿工挖矿,甚至无法结算交易的手续费,这还是因为DAG结构中写入区块过于随意而导致的。

需要说明的是,正如我们上文提到的,严谨地说,DAG类型的工作应该归入我们上文提到的中本聪共识改良派中进行介绍。然而,对区块结构变化的探讨并不仅限于DAG,一些团队也开始在这个方向上有了新的思考和尝试。尤其是随着区块链在物联网等场景的继续深入,在链式结构或DAG结构之外,还会有新的高效结构来满足更多的业务场景。因此,我们将其作为一个独立的大类,并会在后续进行更多介绍。

从系统实现的工程角度提升区块链TPS

系统实现流派奉行“少谈理论,多讲算法,务求快速且实用”的理念。系统实现派可以在不改动现有共识机制的基础上提高TPS,其做法也可细分三个子类。

1

多链并行

古语有云,“三个臭皮匠顶个诸葛亮”。多链并行的做法显然受到了这一思想的影响。一条链TPS低,同时运行多条链一起记账总能提升TPS吧?然而,多链会带来跨链的问题,随着交易量的增加,跨链数据的互通可能十分频繁,资金可能在多个链上流转,一个账户可能同时在多个链上产生交易,这些会带来管理和效率的问题。多链并行的实现中,计算TPS往往是简单累加,于是,商业宣传想要多高的TPS,就并行多少条链。这样做宣传可行,实际实施和管理却不现实。

2

侧链技术

侧链技术是在用户间临时搭建交易链路,解决同一对用户的多次频繁交易给系统带来的TPS压力,其代表项目是闪电网络。比如有两个商户一天内多次互相交易,但是当一天结束时,却发现双方你来我往了2000多次交易,但来往金额却刚好相抵归零,正是侧链技术最适合运用的场景。侧链让双方先在链下交易,一段时间后,将最终结算金额记录在链上,减少直接作用在链上的交易数量。但是,侧链的实现借助了中心化的方法,它的TPS数量不应该计入区块链的TPS。因此,侧链技术也常被称为链下扩展。不过,很多项目在宣传中故意无视这之间的差异,混淆大众视听。侧链技术除了无法提升区块链本身的TPS之外,另一个大问题是,中心化的管理方式不论安全还是效率都存在瓶颈。

3

分片技术

分片技术是将数据处理分散在不同的系统分片内,也是目前较为热门的技术之一。分片技术源于分布式数据存储,与多链技术类似,属于并行化解决方案。它与多链技术最大的区别在于,所有分片仍然基于一条链,因此,在不同的分片间高效协同以保持共识的有序性和正确性极具挑战。分片条件下的TPS计算,应以交易的终局状态达成为准。将各分片瞬时TPS累加进行宣传是常见做法,但缺乏实际意义。分片是目前的热点方向,在前述工作如Bicomp中也采用了分片的架构。未来我们也会对这一技术进行更为详细的介绍。

可以看到,提高TPS的技术路线各有利弊与挑战。希望读完本文后,当我们再听到诸如百万TPS的宣传时,能够理性判断个中虚实。

我们身边常充斥着虚假的技术进步和宣传,总以为技术已一日千里。但吹嘘出来的泡沫,就像沙滩上盖不起高楼,不可能在实践中展现出真正的进步。于是,每当现实不能满足期待,大众的信心就被消磨,大众也会迅速从期待转化为失望,继而转变为唾骂。

但技术的发展一定需要严谨的探讨,更需要长时间、科学有序地实践、演进和完善。我们往往因为缺乏对技术本身的理解和对技术发展规律的必要尊重,对包括区块链在内的技术操之过急,对现状有过高期待,这样的心态无益于新兴技术的发展。而从业者则更应该在这样的环境压力下苦练内功,务实创新,用实际行动为行业营造良性的环境和发展动能。

作者:焦臻桢 博士 中国科学院计算技术研究所副研究员 硕士生导师

责任编辑:周星如