跳转至主要内容

页面最后更新: 2023年9月25日

秘密领袖选举

在当前基于权益证明的共识机制中,即将出现的区块提议者的列表是公开的,并且可以映射他们的 IP 地址。 这意味着攻击者可以识别哪些验证者将要提出区块,并针对他们进行拒绝服务 (DOS) 攻击,使他们无法及时提出区块。

这可能为攻击者创造获利的机会。 例如,为时隙 n+1 选择的区块提议者可以对时隙 n 中的提议者进行拒绝服务攻击,使其错过提出区块的机会。 这样可以让发起攻击的区块提议者提取两个时隙的最大可提取价值,或者获取本应分配到两个区块的所有交易,并将它们全部添加到一个区块,从而获得所有相关费用。 这对家庭验证者的影响可能比先进的机构验证者更大,机构验证者可以使用更先进的方法来保护自己免受拒绝服务攻击,因此可能推动中心化。

这个问题有多种解决方案。 一种是分布式验证器技术(opens in a new tab),旨在将与运行验证器相关的各种任务分散到多台机器,以提供冗余,从而大大增加攻击者阻止在特定时隙中提议区块的难度。 然而,最强大的解决方案是单一秘密领袖选举 (SSLE)

单一秘密领袖选举

在单一秘密领袖选举中,使用巧妙的加密技术来确保只有被选定的验证者知道自己被选中。 要实现这一点,需要让每个验证者提交对他们都知道的秘钥的承诺。 然后将承诺打乱并重新配置,以便没有人可以将承诺映射到验证者,但每个验证者都知道哪个承诺属于自己。 之后,随机选择一个承诺。 如果验证者检测到其承诺被选择,就知道该他们提出一个区块了。

这一想法的主要实现称为 Whisk(opens in a new tab)。 其工作原理如下:

  1. 验证者提交共享秘钥的承诺。 承诺方案的设计使得承诺可以绑定到验证者身份,但绑定是随机的,以便没有第三方可以对绑定进行逆向工程,将特定承诺关联到特定验证者。
  2. 在一个时段开始时,使用 RANDAO 选择一组随机验证者来对 16,384 个验证者的承诺进行抽样。
  3. 对于接下来的 8182 个时隙(1 天),区块提议者使用自己的私有熵打乱承诺的子集并随机化。
  4. 打乱后,使用 RANDAO 创建有序的承诺列表。 该列表映射到以太坊时隙。
  5. 验证者看到他们的承诺附加到特定时隙,到该时隙时,他们提出一个区块。
  6. 重复这些步骤,以便给时隙的承诺分配始终远远早于当前时隙。

这可以防止攻击者提前知道哪个特定验证者将提同下一个区块,从而防止拒绝服务攻击。

非单一秘密领袖选举 (SnSLE)

此外,还有一个单独的提案,旨在创建一个场景,其中每个验证者都有一次随机机会在每个时隙中提出一个区块,类似于工作量证明下的区块提出决定方式,这称为非单一秘密领袖选举 (SnSLE)。 要做到这一点,一种简单的方法是利用 RANDAO 函数来随机选择当今协议中的验证者。 RANDAO 的想法是,通过混合许多独立验证者提交的哈希值来生成足够随机的数字。 在非单一秘密领袖选举中,这些哈希值可用于选择下一个区块提议者,例如通过选择最低哈希值。 可以限制有效哈希值的范围,以调整每个时隙中选择单个验证者的可能性。 如果主张哈希值必须小于 2^256 * 5 / N,其中 N = 活跃验证者的数量,则在每个时隙中选择任何单个验证者的可能性将是 5/N。 在此示例中,至少有一个提议者在每个时隙中生成有效哈希的可能性为 99.3%。

当前进展

单一秘密领袖选举和非单一秘密领袖选举均处于研究阶段。 这两种想法都还没有最终的规范。 单一秘密领袖选举和非单一秘密领袖选举是相互竞争的提案,无法同时实施。 在发布之前,它们还需要更多的研究和开发、原型设计以及在公共测试网上实施。

延伸阅读

本文对你有帮助吗?