原文链接:Validated, staking on eth2: #3 - Sharding Consensus
分片(sharding) 是Eth1过渡到Eth2中最重要的提升。分片这一术语是从数据库研究(一个分片就是整体的一片)中引入的。在数据库和Eth2的背景下,分片就意味着将整体的存储和计算划分到分片中,分片再进行各自的处理,在需要的时候将计算的结果进行结合。Eth2实行了大量的分片链,每个分片链相似于Eth1主链,这导致了巨大的性能提升。
然后很少有人知道分片链的类型。从协议设计的角度来看,这可能更令人兴奋。
在集群工作环境中,我们能够知道,单个节点的计算速度可能会影响到整个集群的计算速度,因此计算最慢的那个节点不会参与集群工作中。(拖后腿)。而Eth2为了避免单个分片的共识对整体共识产生影响。采用的是一种分片共识(sharding consensus).
Breaking it downEth2将时间划分成Slots、Epochs。
一个Slot是12秒,在这12秒内会生产一个区块,添加到链上。区块和交易是通过验证者的投票才能上链。
一个Epoch由32个Slots组成,即6.4分钟,在这段时间里,信标链要完成所有的计算,包括:确定(justifying)和最终化 *(finalising) 新区块, 以及 奖励、惩罚验证者。
正如我们在本系列的第一个文章中提到的,验证者会被组织成委员会,来进行他们的工作。在任何时候,每个验证者都是一个信标链和一个分片链委员会的成员,并被要求在每个Epoch提供证明(attestation),即对一个Slot提出的信标链块进行投票(vote)。
分片链共识的安全模型是基于以下思想:委员会或多或少是全体验证者的准确统计代表。(committees are more or less an accurate statistical representation of the overall validator set.)
举例:假如所有验证者中有33%是恶意的,同时他们会被分派到一个委员会中,这将对于我们的安全模式是灾难性的打击。因此我们需要保证这些恶意验证者不能聚集在一个委员会里,及一个委员会里只要不到33%的验证者是恶意的。我们的做法是:
- 确保委员会里成员的分配是随机的
- 委员会里的验证者数量有最小限制
举例。如果每个委员会里有128名验证者,那么一个攻击者控制1/3的验证者的几率微乎其微。[参考阅读:Sharding]
Building it up上图我们可以看到如果验证者没有被混洗(shuffliing),那么很容易出现恶意验证者扎堆现象,为了防止这种情况,采用混洗算法,使得每个委员会里的恶意验证者不超过1/3
验证者投票(vote)被称为证明(attestation),一个证明是由一下部分组成,特别的:
- 为当前信标链头投票
- 当信标需要被确定和最终化 (justified/finalised)时,也要投票
- 为分片链的当前状态投票
- 所有同意该投票的验证人签名
将上述四点以及其他组成一份证明,提高了系统的整体效率。这样做是可行的,因为节点不必分别检查信标块和分片块的投票和签名,只需要对证明进行数学运算,即可了解信标链和每个分片链的状态。
如果每个验证者都生成了自己的证明,并且每个证明都需要由所有其他验证者进行验证,那么成为eth2节点将非常昂贵,因此需要对证明进行聚合。
证明要被设计地易于组合,以便如果两个或多个验证者具有相同投票,则可以通过在一个证明中一起添加签名字段,来组合这些相同的投票。这就是我们所说的聚合。
从结构上看,一个委员会内验证者的投票很容易被聚合,因为验证者被分配到同一分片链上,因此应该对分片状态和信标链具有相同的投票。这是 eth2 缩放验证器数量的机制。通过将验证者组合成一个个委员会,验证者只需要关心他们自己所在委员会里的其他成员,只需要检查来自其他每个委员会的少量的聚合证明。
Signature aggregationEth2使用的是BLS签名算法 - 一种在几条椭圆曲线上定义的签名方案,对聚合很友好。在选择具体的曲线上时,每个签名都是96 bytes
如果ETH币中有10%被质押,那么Eth2上将有大约350000验证者。这就意味着一个Epoch的所有验证者生成的签名数据大小是33.6MB,一天大约在7.6G。之前有传言说Eth1在2018数据量会达到1TB,如果Eth2不采用聚合签名,只要最多113天就会达到1TB。
减少如此的数据量方法是聚合BLS签名。举例:如果Alice和Bob 在同一份数据上生成签名A和签名B,那么可以通过聚合将A和B聚合成C。通过使用聚合签名可以使得一个委员会只存储一份签名,同时被其他所有的委员会验证。这将减少每天的存储不到2M
In summary,通过将验证者划分成委员会,验证eth2所需的工作量减少了几个数量级
如果一个验证者想要验证信标链和所有分片链,它只需要查看来自每个委员会的聚合证明。通过这种方式,它可以知道每个分片的状态,以及每个验证者对于哪个区块的投票
因此,委员会机制帮助Eth2实现了第一篇文章中确定的两个设计目标:即普通的消费级笔记本电脑即可参与Eth2网络,并且让可能多的验证者参与进来,来实现去中心化。
为了说明这一点,虽然大多数拜占庭容错权益证明协议只可以扩展到数十个(在极端情况下才能达到百个验证者),但Eth2能够拥有数十万个验证器,所有这些验证器都有助于安全性,而不会影响延迟或吞吐量。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)