第一部分:分析
可能有人会问,为什么”中本聪”在最初设计区块链的时候没有考虑性能?其实,并不是“中本聪”不想,而是其中面临一个如何取舍的问题。这就涉及到了分布式系统设计层面的一个“三元悖论”,如下图所示:
第二部分,进一步分析
去中心化使任何人都可以公平地参与到这个分散的生态系统中。扩展性关乎在给定网络上处理交易的能力。如果公共区块链要为大众所用,那么它们必须能够处理数百万用户同时在线的情况。安全性则与账目的不可篡改性和抵抗攻击的能力有关,例如抵御双花攻击、算力攻击、女巫攻击、DDoS攻击等。
之所以称之为“三元悖论”,意思是图中这三个技术指标不能同时被满足;当满足其中两个,剩下的那一个指标一定不能被充分满足。例如,比特币(Bitcoin)和以太坊 (Ethereum)的区块链设计注重去中心化和安全性,就是以牺牲“可扩展性”为代价的。与之形成对比的是EOS,设置了21个超级节点,降低了去中心化的程度,并一定程度上提升了扩展性,但也因此被质疑有“中心化”的倾向。
这三项指标是“此消彼长”的,需要相互权衡的关系。扩展性提升的同时,势必需要削弱设计中去中心化或安全性的。其中安全性在产品应用中是不可或缺的,实际设计中我们看到的几乎都是“牺牲”部分去中心化来换取扩展性提升,例如分片、侧链、DAG等,其都可以简单地理解为为了提升扩展性而在去中心化上做出了让步。换个角度,“全网”同步处理事务也的确在某种意义上浪费了资源约束了扩展性,是不是可以相应的缩小这些处理事务的范围,并相应的提升性能?
第三部分:解决方法或者有可能解决的方法
基于这个思路,目前流行的几种扩展方案可以这样简单理解:
分片(sharding)是将区块链网络划分成若干能够处理交易的较小的网络,由这些较小的网络来并行地处理原先需要全网处理的事务。
侧链(SideChains)(包括子链、链中链概念),则是将一些需要高性能的事务放到另一个专门的分布式网络(侧链)中进行处理,待处理完后再将最终的状态反映到主链上。
有向无环图(DAG) 不使用链的形态组织数据,改而使用互相引用的事务组成图状结构,可以想像DAG是多条区块链的相互引用交错,而其中某一条比其他的链拥有更高的权重。
虽然设计形式上不同,但本质上这几种方案还是为了一定地提升扩展性,使用了“更小的”去中心化网络并行地高效地完成原先“全网”同步完成的事务。
结尾
目前各种区块链扩展方案还处于刚刚起步的初期,哪种更为有效,哪种更符合场景的需求,在目前尚不得知。我们也有理由相信近期还会有新的扩展方案出现,最终哪些方能经得住推敲,哪些会成为通用的方案,十分值得期待。
(TACHION 老姜)
原创文章,作者:TACHION,如若转载,请注明出处:http://www.doubi.com/?p=234