技术揭秘 | 去中心化交易能比VISA还快么?

文章来源 | 计算广告

作者 | 北冥乘海生

最近没写文章,正要续上原来留的扣子,才发现虚拟货币价格正在崩塌。对此,我不免拍案称快:把那些无价值的空气币毁灭给人看,才是人间正道。在幸灾乐祸的情感支配下,我更有动力写今天的内容——毕竟,在一片哀鸿声里,没人会以为这是一篇镰刀文了。

现有的去中心化货币和交易系统,由于技术方案的限制,每秒交易次数(TPS)相当低,相应地,交易费用高企,无法支撑中小额、高频次的支付行为。

今天我们要讨论的,是个纯粹的技术问题:去中心化交易的效率到底能不能大幅提高?至于其商业价值,我的观点是:短期来看,没有想象的大;长期来看,又比想象的大得多。诸位可能无法想象:在本世纪初,基本没有哪个教授声称自己是做人工智能的,那就跟承认自己是骗子差不多。

本文的核心内容,来自于上文提到的王成(W)伪博士,加个“伪”字,因为他读的数论和分布式计算两个博士都退学了。王成有项很重要的工作——《线性时间复杂度的拜占庭算法》。正是在两年多前,他在拜访V神时,了解到以太坊面临的困境和正在进行的分片项目,才顿生兴趣开始研究去中心化交易的速度问题。 

《线性时间复杂度的拜占庭算法》:

https://infoscience.epfl.ch/record/210619/files/main.pdf

有人说,比特币的地位类似于数字黄金,支撑日常交易的能力无足轻重。其实,这是一种酸葡萄心理罢了,且不比微信支付和支付宝,加密货币至少应该能以VISA的效率支撑交易,再加持以去中心化的生产关系,才能有更多真正落地的应用产生,而不是像今天这样,与传销和诈骗紧密联系在一起。

还是那句话,我们先不谈DPOS等半中心化方案,只讨论POW。要提升POW机制的交易速度,有两个方向:一是把交易处理尽量打散,由一个链上堆积变成多头并进;二是把账本分解开,变成可扩展(scalable)的。这两个概念前文已经说过,那么,都有些什么新的技术方案呢?

第一类方案,把账本结构由链变成了有向无环图(DAG)。这样一来,就有多个头部可以同时记录交易了,其代表项目是IOTA,账本结构如上图所示。IOTA没有区块的概念,每个交易都会引用过去的两条交易Hash,以证明这两条交易的合法性,并间接证明之前交易的合法性。不过,IOTA能够提高TPS的关键,还是在于图结构相比链结构而言,有多个头部,可以并行确认交易。

话虽如此,IOTA有个致命问题:由于在选择头部的过程中,要用到效率很低的随机行走算法。为了实用,只好引入一个全局协调器(Coordinator),从快照算起以节省时间。您听出问题来了吧?这个快照是由中心节点选取确定的!这样一来,就现状而言,IOTA其实并不是一个去中心化系统!

IOTA的理论和工程挑战还有很多。实际上,它实测的TPS也仅达到1000上下,再加上中心化的缺陷,看起来现实比理想要骨感得多。     

另外一类方案,是把交易分到多条链上,典型的是以太坊的分片(shading)项目。它的思路非常简单直觉:把用户随机分成G个组,每个组单独有一条子链,组内的交易在这条子链上确认即可。显然,这可以提高一些交易速度。

关键的问题是,跨组交易怎么解决?分片项目采用了利用主链进行周转的办法。不谈技术细节,我们从概念上描述一下此过程。如果第1组上的用户a要给第3组上的用户b发送十个币,可以分成如下两步:

1. 第1组的用户a告诉主链,我要给第3组的b用户发送十个币,此步骤相当于生成一张支票;

2. 主链告诉第3组的子链,有第1组的用户a向你这里的用户b发送了十个币,此过程相当于把支票提现。

显然,概率上看,大多数交易都是跨组交易,因此都需要通过主链中转。这也就决定了,分片很难决定性地提高TPS。另外,在此方案中,每个节点都要保留公链和与自己相关的那条子链,需要存储和处理的账本没有变小,因此并不是一个scalable的方案。

因为存在“1%攻击”,即100个分片有一个被攻击,就会影响整个系统,这样的分片方案会降低安全性。另外,还有个严重的问题:此方案目前看来无法跟以太坊图灵完备的智能合约体系相兼容,难道为了提速,先要自断手足么?目前,分片项目进展并不顺利。计划中的六个步骤,才进行到第一步,还只有一些实验性质的代码。可以说,距离美好的梦想还遥遥无期。

是不是没办法了呢?其实,分片项目给了我们很大的启发,曙光就在前方了。我们想想此方案的症结:为什么跨链交易要回到主链上进行呢?能不能把这部分再分解呢?

于是,我们想到这样一个方案:仍然把用户分成G组,但是在子链的设计上有所不同:将第i组到第j组的交易,单独放在一条子链L(ij)上。这样一来,G组用户就对应了G^2条子链,如下图所示。

这样做有什么好处呢?从上图看,假设用户分成两个组,那么第0组的用户在发起交易时,只会依赖L(0,0)、L(0,1)、L(1,0)这三条链上的前序交易,与L(1,1)这条链是毫无关系的!如此一来,第0组的节点,就只需要保存3/4的子链就可以了。

看起来省的不多?其实,在用户分成G组的情形下,每个节点只需要保留2G-1条子链就够了,也就是说,大约只需保留(2G1)/G^22/G的子链,这是相当可观的!比如说,我们把用户分成32个组,那么每个节点都只需要保存1/16的链就可以了,这就实现了scalable特性。

什么,您问还有主链么?既然跨链交易都解决了,还要主链干什么用呢?

这样的方案,没有了主链和子链的概念,交易被用户组结构组织起来的多条链并行处理,就像是百川到海不复还,我们给这样的账本结构起了个名字,叫“区块流”(BlockFlow),如上图所示。当然,具体实现上面的思路和结构,还有很多技术细节甚至巧妙的设计,本文不是白皮书,所以这些就不谈了。

那么,从理论上分析,BlockFlow能支撑什么样的交易速度呢?我们借用上篇文章中的分析,带入上篇文章分析得到的那两个约束公式:

T P' * 4ms / T <= G^2 * 20%

P' * 0.5KB * (1 + D / T) <= G / 2 * 10Mb

可以算出,当我们取G为32时,至少可以达到1万左右的TPS;取G为64时,可以达到4万左右的TPS。

假如能在POW共识机制上达到这样的TPS,有什么现实意义呢?我们将几个典型的方案,和中心化的VISA放在一起比较一下,如上表所示:

  • 两个典型的POW系统比特币(BitCoin)和以太坊(Ethereum),共识机制基本一致,交易TPS也都在10次上下,相应的交易费用大多数时候在零点几美元,不过一旦交易拥堵,就可能上升至数美元到数十美元。即便如此,在面对大额交易时,由于交易费用并不与交易额成正比,比起传统银行还是有很大的成本优势。

  • EOS采用的DPOS的共识机制,类似于代议制:大家先投票选出一组超级节点,再由超级节点完成交易确认。由于投票规则存在较大的调整空间,某种意义上说,这类系统的立法权还是中心化的,而司法过程则是半中心化的。不过,EOS确实显著提升了交易速度,目前的线上TPS大约在数千。

  • 前文提到的IOTA,由于有Coordinator的存在,并不是一个去中心化方案。不过IOTA有个最大的好处,那就是无需交易费用。就目前状况而言,不到1000的TPS,和中心化的现状,让此方案的未来并不明朗。

  • VISA作为老牌的支付巨头,是中心化方案的代表。实际上,VISA系统的平均TPS也并没有想象的高,大约在几千,不过峰值速度要高得多,而且交易确认延迟很短。对于大额交易来说,VISA按固定比例收取的手续费是相当高的。另外,有一点容易被人忽略,中心化方案为抵御攻击需要付出的成本,可一点都不低。

  • 本文介绍的BlockFlow方案,共识机制与传统POW一致,只是在链结构上做了新的设计。从结果上看,至少有两点重要意义:首先,整个链结构是scalable的;其次,TPS大幅提升,必然带来交易费用大幅下降,完全可以做到1美分上下。在安全性方面,BlockFlow跟比特币一致,也存在51%算力攻击。

可以这么说,采用BlockFlow方案,POW在交易速度和成本方面,几乎可以做到一个去中心化版本的VISA了!只是在交易确认时延上还有差距。

那么,BlockFlow这个方案仅仅是一种案头理论分析么?当然不是。目前,此方案的原型系统已经实现出来,正在进行内部alpha版本的测试。根据实测结果,在G=32时,1万的TPS是确定可以达到的。

还有一个遗留的问题,那就是智能合约怎么解决。以太坊引入的图灵完备虚拟机,虽然看上去很美妙,却给分片方案挖了个大坑。在BlockFlow方案中,将采用一种全新的智能合约机制,使得虚拟机的实现更加灵活,也能够兼容多链的结构,不过说起来又需要很大的篇幅了,后面再专门撰文介绍。

曾几何时,多少一夜暴富的神话,让整个币圈不相信技术,只相信信仰本身。这曾让所有对技术本身有怀疑或期望的人,都成了迂腐荒唐的堂吉诃德。庆幸的是,我们终于等到了潮水退去之时,能在平静的心态下讨论技术。而我们也坚信,只有区块链技术本身的进展,才能最终收拾骗子们留下的一地鸡毛。

推荐阅读:

猜你喜欢

转载自blog.csdn.net/Blockchain_lemon/article/details/85261883