特别感谢Sacha Yves Saint-Leger和Joseph Schweitzer进行评论。
碎片是ETH2比ETH1的众多改进之一。该术语是从数据库研究中借来的,其中碎片意味着更大的整体。在数据库和ETH2的背景下,碎片意味着将整个系统的存储和计算分解为碎片,分别处理碎片,并根据需要结合结果。具体而言,ETH2实现了许多碎片链,其中每个碎片具有与ETH1链相似的功能。这会导致大规模缩放的改进。
但是,ETH2中有一种鲜为人知的碎片。从协议设计的角度来看,这可以说是令人兴奋的。 输入碎片共识。
碎片共识
与最慢的节点的处理能力限制了网络的吞吐量一样,单个验证器的计算资源限制了可以参与共识的验证器的总数。由于每个其他验证器都会为系统中的每个其他验证器介绍额外的工作,因此,资源最少的验证器无法再参与的地步(因为它无法再跟踪所有其他验证者的投票) 。解决方案Eth2对此采用的是 碎片共识。
分解
ETH2将时间分为两个持续时间,插槽和时代。
插槽是12秒的时间框架,其中预计将添加一个新块。除了使链条有用的交易之外,块是链接中包括验证者的投票的机制。
一个时期由32个插槽(6.4分钟)组成,在此期间,信标链执行与链条保养相关的所有计算,包括:为新块的合理和最终确定新块,并向验证者发出奖励和罚款。
正如我们在 本系列的第一篇文章,将验证者组织成委员会来完成工作。在任何时候,每个验证者都是一个标准链和一个碎片链委员会的成员,并被要求每个时期确切地证明一次 – 证明是对已提议的信标连锁块的投票一个插槽。
ETH2碎片共识的安全模型取决于委员会或多或少是整体验证器集的准确统计表示。
例如,如果我们的情况有33%的验证者是恶意的,那么他们有可能最终加入同一委员会。对于我们的安全模型来说,这将是一场灾难。
因此,我们需要一种方法来确保这不会发生。换句话说,我们需要一种方法来确保如果有33%的验证者是恶意的,那么委员会中约有约33%的验证者将是恶意的。
事实证明,我们可以通过做两件事来实现这一目标:
- 确保委员会任务是随机的
- 每个委员会需要最少数量的验证者
例如,每个委员会有128个随机采样验证者,有1/3验证者控制> 2/3委员会的攻击者的机会很小(概率小于2^-40)。
建立它
验证者投票称为证明。认证由许多要素组成,特别是:
- 对当前的信标连锁负责人的投票
- 对哪个信标块应合理/最终确定的投票
- 对碎片链的当前状态进行投票
- 所有同意投票的验证者的签名
通过将尽可能多的组件组合到证明中,可以提高系统的总体效率。这是可能的,因为无需分别检查标准块和碎片块的选票和签名,节点只需要在证明方面进行数学,以了解有关信标链和每个碎片链的状态。
如果每个验证者都会产生自己的证明,并且所有其他节点都需要验证所有证明,那么成为ETH2节点将非常昂贵。 输入聚合。
证明旨在易于合并,以便如果两个或多个验证者都以相同的票证证明,则可以通过将签名字段添加在一起,将它们合并在一起。这就是我们的意思。
委员会通过建设委员会的投票将易于汇总,因为它们被分配到同一碎片,因此应该对Shard State和Beacon Chain进行相同的选票。这是ETH2缩放验证器数量的机制。通过将验证者分解为委员会,验证者只需要关心其同胞委员会成员,只需要检查其他每个委员会的汇总证明即可。
签名聚合
ETH2利用BLS签名 – 在几个对聚合友好的椭圆曲线上定义的签名方案。 在选择的特定曲线上,签名是 96字节 每个。
如果所有ETH的10%最终都放了,那么ETH2上将有〜350,000个验证器。这意味着一个时代的签名价值将是 33.6兆字节 来〜7.6千兆字节 每天。在这种情况下,所有关于 ETH1国家规模在2018年达到1TB 在ETH2的情况下,在不到133天的时间内将是正确的(仅基于签名)。
这里的诀窍是可以汇总BLS签名:如果爱丽丝产生签名 一个,鲍勃的签名是 b 在相同的数据上,可以通过存储来存储和检查爱丽丝和鲍勃的签名 C = A + B。通过使用签名聚合,只有1个签名需要存储并检查整个委员会。这将存储要求降低到少于 2兆字节 每天。
总之,
通过将验证者分为委员会,验证ETH2所需的努力通过数量级减少。
为了验证信标链和所有碎片链的节点,它只需要查看每个委员会的汇总证明即可。这样,它就可以知道每个碎片的状态,以及每个验证者对哪些块是和不是链条的一部分的观点。
因此,委员会的机制帮助ETH2实现了在 第一篇文章:即,必须在消费级笔记本电脑上参与ETH2网络,并且必须通过支持尽可能多的验证器来努力最大程度地分散。
为了将数字投入数字,而大多数拜占庭式容错的股权协议证明规模都达到数十个(以及在极端情况下,数百个验证者),但ETH2能够拥有成千上万的验证器,所有验证者都在不影响潜伏期或吞吐量的情况下为安全提供了贡献。