自从比特币热络起来,不少人抱怨系统的结算速度(TPS)太慢。不少人花 精力试图给比特币提速,也有不少人提出新的区块链系统,试图解决速度问题。抱怨比特币速度慢的,都是没看出门道的。当然懂计算机科学的也未必 都懂得为什么比特币结算系统慢。殊不知那是设计的 feature,不是 bug。
其实挖矿难度决定了结算速度,而这个难度是可调的,所以结算速度也是可 长可短的。假想如果结算时间缩称一秒,也就是说挖矿难度降为一秒钟,那会出现什么情况呢?就是常常千万个矿工同时挖到矿。那时候怎么决定哪位幸运矿工分到奖励呢?选出一个幸运矿工又是个共识问题,循环了!再设想若是结算时间变成一小时会怎样?因为挖矿难度的提升,极少可能多个矿工同时挖到矿,产生冲突或临时分链(temporary fork)的可能性很低。所以,结算时间没必要太慢,但绝不能太快。这样就看清楚了那些要给比特币链加速的想法是多么的外行。中本聪在有关比特币的文档中并没有详细阐述其系统设计的渊源,不知是歪打正着,还是有的放矢。
再延伸一下,只要是通过纯挖矿来做共识的公开链,结算速度都不可能太快。 以太坊不也计划要从 PoW 下车了吗?现在再出个以太坊类的东西来忽悠人, 估计就不容易了。我这里说清楚了,可能以后不再有喊着给比特币提速来做 ICO 的了。
还想钻研这个题目的同学们,可以比照大家都用的局部网以太网(Ethernet) 的经验。在局部网上,如果多个节点同时“说话”(传输数据),就会造成冲突。冲突发生后,各节点知道数据没有传出去,再重新试一下。可是如果大家都紧接着重新试传,还会冲突,造成网络堵塞。如果大家都等待某个固定时间再试,一样会冲突。所以,以太网设计是各节点等待一个随机时间再试传,这样就大大降低了冲突率,实现了高速的数据传送。这个等待随机时间的办法适用于比特币吗?明显不行,因为会有不自觉的矿工基于经济利益争着再试,大家都争,又回到原点,没解决问题。