以太坊2.0的分片是如何工作的?

小鼹鼠挖矿
什么是分片?
    分片(Sharding)指的是将整个以太坊网络分成许多个小部分(Shards)。每个分片都包含独立的状态、完整的账户系统和智能合约。
    分片绝对是最复杂的以太坊扩展解决方案,因此它也被放在了以太坊2.0路线图中的最后一阶段,给开发者充足的时间开发和在生产环境中测试。
    在进入分片的技术细节之前,我们首先需要了解节点在以太坊网络中扮演的角色。节点负责验证链上交易并确保交易都遵守区块链共识规则。要做到这一点,最好的方法就是让每个节点都保留一份以太坊交易账本的完整副本,用以验证交易的真实性和完整性。但是以太坊的链上数据一直在快速增长,目前的数据大小已经超过1TB,对于普通人来说保存完整的数据副本是不切实际的。
    
    以太坊的瓶颈
    这就导致了一个大问题:如果以太坊全节点的运营成本过高,运营全节点的人数就会越来越少,网络将更容易受到中心化的影响。
    同时,如果每笔交易都需要通过所有节点验证,那以太坊也将难以实现可拓展性,分片将是这些问题的终极解法。
    分片与状态通道和plasma等拓展解决方案不同的是,分片不会将任何交易数据放到链下处理。分片只是将链上数据分成很多个部分,节点就不需要处理网络上的所有交易,而只要处理某一个片区的交易。分片也引发了一个讨论,分片后还能保障区块链的安全吗?
    
    分片的优势
    迄今为止,还没有任何区块链网络可以同时实现以下三个特性:去中心化、可扩展性、安全,这被称为区块链不可能三角。所以,分片可以看做是在这个三难困境前提下,相对牺牲了一部分安全性的情况下,解决以太坊可拓展性的解决方案。
    在每一个分片中,将会周期性地随机挑选出一批公证人(Notaries)用于验证区块,相当于PoW链中矿工的角色。然后以太坊主链上将会有一个委员二次检验这些区块的真实性(Validity)。每个分片的出块方式和块之间的排列方式与主链是完全一样的。
    每个分片都以默克尔树的形式与以太坊主链相关联,两者之间的链接也是加密的。每个分片都可以充当独立的区块链。每个分片上的用户都有自己的账户余额,与以太坊主链无关,只能用于与用一个分片上用户间交易。
    对于以太坊分片最简单的理解方式就是,想象以太坊链被分裂成数千座岛屿,每个岛屿有自己的特色,也是主权独立的。如果他们想联系其他岛屿,将需要使用某种特定协议。每个分片独立存储了该分片上的交易信息,但是在需要时又可以随时返回主链。
    
    分片的挑战
    虽然分片在理论上听起来很不错,但也存在许多潜在的攻击途径。一种特定的攻击是单分片接管攻击(Single-shard takeover attack)。这种攻击的方式是,攻击者接管了某一分片中的大多数出块者,创建了一个提交不实交易信息的恶意分片。
    以太坊核心开发人员提出了随机抽样检查的应对方法,这个解决方案目前还在积极开发中。
    分片在权益证明链上比在工作量证明链上更容易实现。因为权益证明链上本来就已经有活跃的验证者,这些验证者可以被进一步随机指派到不同的分片中去。而在工作量证明中则无法阻止矿工向特定分片贡献算力。如果矿工可以选择他们想要验证的分片,他们就可以联合起来共谋作恶。
    _______________________
    作者 | district0x
    翻译&校对 | 林芒果
    本文由矿视界(奇迹摩尔)翻译整理编辑,如需转载,请标明出处