原文标题:《科普 | Eth2 Staking 指南 #3:分片化的共识》 特别感谢 Sacha Yves -Leger 和 Joseph Schweitzer 的指正。 Sharding (「分片」)是 Eth2 对比 Eth1 的许多升级之一。这个名词来源于数据库研究,就是将一个大的数据库切分为许多部分,而一个分片就是一个部分。那么放到 Eth2 和数据库的语境下,分片就意味着要把整个系统的存储和计算切分开来、相互独立地处理各分片,然后随实际需要组成最终结果。具体来说,Eth2 系统中包含了许多分片链,而每一个条分片链的功能(capability)都与 Eth1 区块链相似,这就能带来大幅度的可扩展性提升。 不过,在 Eth2 中还有一种不那么为人所知的分片类型,而且从协议设计的角度来看,这个类型可能更为激动人心:分片化的共识(sharded consensus)。 分片化的共识 就像网络中最慢节点的处理能力限制了网络的吞吐量,单个验证者的计算资源也决定了能够参与共识的验证者总数量。因为每新增一个验证者,都会给系统中的所有其他验证者带来额外的工作量,那么随着验证者数量的增加,最终会达到一个状态:资源最少的那个验证者将不再能够参与共识(因为它不再能够全程追踪所有其他验证者的投票)。那么 Eth2 处理这个问题的方案就是分片化的共识。 分析 Eth2 的系统中有两种基本的时间单位,时隙(slot)和时段(epoch)。 一个时隙是 12 秒,这是我们预期可出一个区块的时间;区块其实是一种让验证者的投票能集合发布到链上的机制,不止于包含交易让链变得有用。 一个时段由 32 个时隙组成(因此是 6.4 分钟),在一个时段中,信标链要执行所有跟链的维护相关的计算,包括:合理化及敲定新区块、给验证者发放奖励和惩罚。 我们在本系列的第一篇文章中提到,验证者会被分配到不同的委员会中执行工作。那么在任一时刻,都有验证者同时既是信标链委员会成员、也是某一个分片链委员会的成员;每个验证者在一个时段中都要发出见证消息一次 —— 为已经提出的信标链区块投票。 Eth2 的分片化共识的安全模型,基于这样一个观念:让委员会在某种程度上就是整个验证者集合的准确统计学代表。 举例而言,如果整个验证者集合中有 33% 的验证者是恶意的,那么他们可能就会进入到同一个委员会中。那就完蛋了。 所以,我们需要确保事情不至于如此。换句话来说,我们需要保证的是,如果 33% 的验证者是恶意的,那么在一个委员会中只有约 33% 的验证者是恶意的。 我们需要两个举措来实现这一点: 保证验证者的委员会分配是随机的组成委员会有数量下限要求举个例子,如果单个委员会由 128 个随机选出的验证者组成,那么一个控制了全网 1/3 验证者的攻击者能够控制单个委员会的 2/3 验证力量的概率是非常非常小的(概率低于 2^-40)。 综合 验证者提交的投票叫做 「见证消息」。见证消息由几个部分组成: 对信标链顶端区块的投票对 合理化信标区块 / 确定化信标链区块 的投票对分片链最新状态的投票所有同意该投票的验证者的签名把尽可能多的部分都组合到一条见证消息中,系统的整体效率便得以提升,因为,在检查验证者的签名时,不再需要分别验证对信标链区块的投票和对分片链区块的投票,节点只需基于见证消息做运算,即可得知信标链区块的状态和每一条分片链的状态。 如果每一个验证者都提交了自己的见证消息,而每一条见证消息都需要被所有其它节点单独验证一次,那么 Eth2 的节点的开销可能会变得很大。这就是为什么我们需要 「聚合技术」。 见证消息被设计成容易组合的形式,因此,如果有两个乃至更多验证者做了同样的投票,那就可以用一条见证消息把他们的投票都汇总起来,只需把签名字段放在一起即可。这就是 「聚合」 和含义。 委员会的投票在根本上来说也是易于聚合的,因为这些验证者都被分配到了同一个分片上,因此分片状态的投票和对信标链区块的投票很可能是相同的。这就是 Eth2 能随着验证者数量的增加而扩展吞吐量的机制。通过把验证者打散到委员会内,验证者将只需关心自己所在委员会的成员,也只需检查极少数从其它委员会处传来的、已经聚合过的见证消息。 签名聚合 Eth2 使用了 BLS 签名方案 —— 一种在多条椭圆曲线上得到定义、对签名聚合较为友好的方案。在方案所选定的曲线上,单个签名的大小是 96 字节。 如果占总量 10% 的 ETH 参与了质押,则 Eth2 会拥有约 35 万个验证者。这就意味着,单个 epoch 产生的签名数据量大小可能会达到 33.6 MB,那么一天就是 7.6 GB。那么,只要 133 天,签名数据就会超过 1 TB。 解决方案是,BLS 签名是可以聚合的。如果 Alice 提交了签名 A,而 Bob 所提交的签名 B 是对相同数据签的名,那么只需存储 C = A+B,就能验证 Alice 和 Bob 的签名。使用了签名聚合技术,整个委员会的验证者前面都可以聚合成一个签名。这样就能将签名数据的存储需求降低到每天 2 MB。 总结 把验证者分配到不同委员会中的设计,让验证 Eth2 所需付出的工作量降低了几个数量级。 对于一个想要验证信标链和所有分片链的节点来说,它要做的仅仅是监测来自每一个委员会的聚合见证消息,只需如此便可知道每条分片链的状态,以及各验证者对哪些区块 属于 / 不属于 信标链主链的看法。 因此,委员会机制帮助 Eth2 实现了两大设计目标:只需消费者级别的笔记本即可参与 Eth2 网络、支持尽可能多的验证者来实现尽可能的去中心化。 用数字来说明:大多数拜占庭容错式的权益证明协议只能支持数十位验证者(在某些案例中可支持数百位验证者),但 Eth2 可以支持数十万验证者同时为系统安全性作贡献,又不牺牲执行时延和吞吐量。 来源链接:blog.ethereum.org —- 编译者/作者:以太坊爱好者 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
科普 | Eth2 Staking 指南 #3:分片化的共识
2020-04-03 以太坊爱好者 来源:链闻
LOADING...