比特币的性能成为人们关注的焦点,同时也成为人们攻击的焦点。甚至有文章说比特币最大的有点是安全性,而这个安全性是用性能为代价去换取的。这个观点笼笼统统,似是而非,很具有误导性。但比特币性能的降低,到底是不是和安全性有关呢?还是和它的开放性有关呢?还是和它的广域分布式特性有关呢?
关于区块链性能瓶颈的讨论很多,解决的提案也不少,但都太过于深入细节。我们希望有一个简单但可信的框架性讨论。这个工作也有研究人员在做,其中一个框架是分五个平面来讨论,网络,共识,存储、视图和侧链(Cornell/Berkley Paper)。这篇论文通过对比特币的分析计算和测试,得出一个重要结论是小修小补的调整参数,对性能提升很有限,而且任何参数调整都增加一致性风险。它建议重新设计四个平面,彻底消除瓶颈。
比特币系统的容量受系统参数,块大小,出块时间,和交易尺寸的限制。出块时间是交易时延和容量的双重瓶颈,而交易时延才是核心困难。在比特币里面,这是硬性设定的10分钟。设计为这么长的原因是因为网络时延大约在10到几十秒之间,而区块链的最长链共识算法(最终一致性),需要确认时间远远大于时延。
想象一下,如果有一个完美的网络,它的时延是零,而带宽是无穷大。那么交易时间是不是可以设定到毫秒甚至微秒级别?另外,需要注意广播还有一个隐式的数据复制环节,想象一下把1M的数据解包,验证,拷贝,再从新打包,这一系列动作要重复一百万次,还要在网上等。这个时延在系统时延高的时候被忽略了。低时延的时候,拷贝会成为主要瓶颈,
所以,如果拷贝和网络都是完美的,那么至少时延问题可以大幅度提升,从10分钟提升到600毫秒,也就是提升1000倍。这足以支撑任何日常应用,包括交易所级别的业务。当时延提升1000倍时,交易容量也提升一千倍,到7000次每秒的量级。再加上多链部署,容量是可以上到几十万次的,这已经赶上淘宝了。
附录 技术部分
View是从数据库引入的概念,代表数据库中查询取得的一个子集。数据库理论,我表示不明觉厉。
出块时间还受算法限制,这个问题以色列的Aviv团队已经解决,可以在100ms的时间出块。SPECTRE Confirming Transactions via recursive election。
高速数据拷贝的软硬件,已经被加拿大研究团队在2016年中解决。实现了680亿硬件广播不丢包。