EIP-3436: 扩展的 Clique 区块选择规则
Authors | Danno Ferrin (@shemnon) |
---|---|
Created | 2021-03-25 |
Discussion Link | https://ethereum-magicians.org/t/eip-3436-expanded-clique-block-choice-rule/5809 |
Requires | EIP-225 |
简述
为 Clique 添加一个四步区块规则,以减少区块生产死锁
摘要
当前 Clique 的规范允许来自生产者的多个竞争区块,但没有 提供任何策略来选择区块,除了当前的“最高总难度”规则。本 EIP 提出了一个四步选择规则:最高总难度、最短链、最近轮值 以及最低哈希。这将防止在生产系统中发生的死锁。
动机
在 Goerli 多客户端 Clique 网络中已经发生过不止一次死锁。 活跃验证者的数量大于可用验证者数量的 1/2,因此不应该发生链停止。 链停止是通过一个不活跃的验证者重新上线来解决的。链的状态 处于 8 个验证者的两种配置之一,这可能导致链停止。四个客户端中的三个 观察到了最低总难度,然后是第一个观察到的区块的选择序列。Geth 添加了一个额外的规则,即在优先选择第一个观察到的区块之前,优先选择最短链。 这个分支本可以通过 Geth 的规则自行解决,但仍然存在一种配置, 其中链可以使用最短链规则停止。
规范
当 Clique 验证者仲裁两个不同的链头区块之间的规范状态时, 他们应该按照以下优先顺序选择规范区块。
- 选择总难度最高的区块。
- 然后选择区块号最低的区块。
- 然后选择其验证者分配到轮值区块时间最晚的区块。
- 然后选择哈希值最低的区块。
当解决规则 3 时,客户端应使用以下公式,其中 validator_index
是
按照 epoch 检查点排序时,区块签名者的验证者的整数
索引,header_number
是头部的序号,
validator_count
是当前验证者的数量。客户端应选择值最大的区块。
请注意,轮值区块被认为是最近的轮值区块。
(header_number - validator_index) % validator_count
当解决规则 4 时,哈希应转换为一个无符号 256 位整数。
理由
基于当前总难度然后是首先观察到的规则,已知的两种链停止情况。 其中一种情况也对最短链规则具有抵抗性。
对于不同长度的链可以停止的第一种情况,考虑具有 8 个 验证者的区块,其地址的排序与其在本示例中的指定顺序相同。一个完全 有序的链存在,验证者 8 刚刚生成一个轮值区块,然后验证者 5、7 和 8 离线,留下验证者 1 到 6 来生成区块。形成两个分支,一个具有 来自验证者 1 的有序区块,然后是来自验证者 3 的无序区块。第二个分支 由验证者 2、4 和 6 按顺序形成。两者的净总难度都比 共同祖先高 3。因此,在这种情况下,如果两个分支都意识到对方的分支,那么两者都应该 被认为同样可行,并且任何一组验证者都不应切换到新观察到的分支。在 这种情况下,添加最短链规则将打破死锁,因为偶数验证者将 采用较短的链。
对于第二种情况,使用相同的验证者集和有序链,验证者 7 刚刚 生成一个有序区块,然后验证者 7 和 8 离线。形成两个分支,一侧为 1,3,5, 另一侧为 2,4,6。两个分支在生成第三个区块后都意识到对方的分支。 在这种情况下,两个分支具有相同的总难度和相同的长度。因此,Geth 的规则不会打破 僵局,只有缺少验证者之一的到来才能修复链。在最坏的情况下, 奇数链和偶数链将分别为 7 和 8 生成一个区块,并且链将停止, 并且没有尚未选择分支的验证者。只有手动回滚才能解决此问题。
在制定规则时的一个考虑因素是,应该选择区块选择,以便它 鼓励最大数量的有序区块。基于最短链选择链 隐含地倾向于具有更多有序区块的链。当在竞争的无序 链之间进行选择时,最接近在将来生成有序区块的验证者应该 拒绝他们的链,以便他们可以更快地生成有序区块。
至少已经观察到一个客户端以相同的高度和相同的 难度生成多个区块,因此最低区块哈希的最终兜底标准应该打破任何剩余的僵局。
向后兼容性
当前的区块选择规则是最大总难度和最大总难度加上 最短链的混合。
只要大多数活跃的验证者实现区块选择规则,那么一个只 实现了基于现有难度的规则的客户端最终将与这些规则首选的链对齐。 如果少于多数实现这些规则,那么仍然可能发生死锁,并且 取决于首先观察到的问题区块,这并不比当前情况更糟。
如果客户端仅部分实现该规则,只要每个排名较高的规则也被实现, 那么情况就不会比今天更糟。
安全注意事项
参与网络的恶意和有动机的攻击者可以通过精心制作的区块生产来强制链停止。 通过完全确定性的选择规则,停止的机会减少了。攻击者仍然有相同的机会 使用相同高度的多个区块来泛洪网络。基于最低哈希的确定性规则降低了 这种泛洪攻击的影响。恶意验证者可以利用此确定性规则来生成 替换区块。这种攻击存在于当前的实现中,但是确定性哈希规则 使这种替换更有可能发生。但是,目前这种攻击的影响似乎很低或微不足道。
版权
通过 CC0 放弃版权及相关权利。
Citation
Please cite this document as:
Danno Ferrin (@shemnon), "EIP-3436: 扩展的 Clique 区块选择规则 [DRAFT]," Ethereum Improvement Proposals, no. 3436, March 2021. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-3436.