Hi!请登陆

以太坊扩容终极解决方案:Danksharding

2022-6-18 94 6/18

熟悉Vitalik(以太坊创始人)的都了解其著名的不可能三角理论,相较于传统货币理论,一国无法同时实现货币政策的独立性,汇率稳定和资本自由流动,最多只能同时满足两个目标,而不得不一定程度舍弃另一个目标,而区块链所面临的不可能三角则是指无法同时满足去中心化,安全,可扩展性/效率这三项特征。其最近的文章Endgame则再次强调了区块链的终极形态,区块生产将由中心化的生产者主导,而区块链验证将由更多资源消耗较低,门槛较低的去中心化部署的,无需许可的节点参与(可以通过个人手机,PC等),同时实现真正的防审查的开放网络。在之前的区块链模块化演变之路中,我们也多次强调,以太坊的愿景是成为一个以Rollups为中心的,统一的解决和数据可用性协议,通过去中心化的验证节点,以太坊网络获得了较高的安全性,尽管相较于其他Layer1, Rollups的费用较高(主要是post to Layer1的费用,下文会提到解决方案),并且缺少一定灵活性,但是Rollups在享有Layer1的安全性同时,通过以太坊的结算和数据可用性获得了一定的扩展性。

以太坊目前采取了数据层面的分片,Rollups可以通过这种分片方式提交数据, 因而摒弃了之前的分片计划(Sharding1.0)。通过这种分片,底层的数据容量将会提升,因此Rollups提交数据的成本将会大大降低。当然还是通过以太坊的内置执行环境实现, 但是其巨大的状态,给其执行带来一定的难度。我们会在Danksharding(二)中介绍弱无状态Weak Stateleness和沃尔克树Verkle Tree的概念,试图解决状态验证和状态存储的问题。而Celestia通过将执行层和数据可见层分离的方式,通过引入数据可见抽样以及轻节点的概念,极大地提升了其可扩展性。

在Sharding1.0的设计中,每个区块有64个分片,每个分片有单独的提议者和委员会,轮流通过节集合选举出来。每个提议者和为委员会负责验证自己的分片数据(1/64)。而在Sharding1.0中,以太坊并没有采用数据可见采样,而是通过每个分片验证集合大多数诚实节点假设下载全部数据实现。

这个设计显得冗余和复杂,同时存在攻击者风险,通过分片来分配节点的方式也不妥。同时,因为信标链上的验证者需要收集所有的委员会投票,这需要时间,所以保证在一个时隙内(Slot)完成投票也非常困难,除非引入额外假设(比如同步假设)。

而相比于Sharding1.0的设计,Danksharding的设计则引入了大区块的设计,大区块将信标区块和所有分片数据结合并且实现同步确认,大区块由专门的创建者(Builder)创建,而验证节点通过数据可见采样确保所有数据都是可见的。

数据可见采样我们之前在多篇文章中已经介绍过,由于资源和成本限制,大部分节点无法下载全部的数据,如何在不下载全部数据的情况下验证数据/交易呢?我们需要通过数据可见采样确保数据的可见性,所以节点(即使是轻节点)可以轻松安全的在无需下载全部数据的情况下验证数据。

而数据可用采样是根据长期存在的数据保护技术删除码(erasure coding),就是利用这个技术本身可以让原本的数据实现扩展,比如双倍大小, 那么原本的数据可以恢复,比如通过这些扩展数据的50%。Reed-Solomon可以将原有数据进行拓展,而拓展的数据和原有的数据则通过拉格朗日插值公式(Lagrange interpolation formula)形成多项式。多项式式中的次数是其最高指数。比如x³ x² 2x-4的次数为3.

相关推荐