Vitalik:应对两层质押风险,这些改变可能提高去中心化并减少共识开销

当前以太坊网络双层质押(节点运营商和代理商),存在着中心化风险和不必要的共识层负担。本文介绍了解决这些问题的可能方案。

原文:https://notes.ethereum.org/@vbuterin/staking_2023_10

翻译:ChatGPT + 登链翻译小组

特别感谢 Mike Neuder、Justin Drake 和其他人的反馈和审查。另请参阅:Mike NeuderDankrad Feistarixon.eth之前关于类似主题的帖子。

以太坊的现状可以描述为包括大量新兴的两层质押(two-tiered staking)。在这里,我所说的两层质押是指存在两类参与者的质押模型:

  1. 节点运营商(Node operators),他们运行节点并以自己的声誉或一定数量的资本作为抵押品。
  2. 代理商(Delegators),他们提供一定数量的 ETH,没有最低额度,除了提供抵押品外,没有严格的其他参与要求。

这种新兴的两层质押是通过大量参与质押池的质押者的行动产生的,这些质押池提供流动质押代币(LSTs),例如Rocket PoolLido

现状存在两个主要缺陷:

  • 节点运营商的中心化风险。现有质押池选择节点运营商的机制要么不太去中心化,要么存在其他缺陷。
  • 不必要的共识层负担。以太坊 L1 每个Epoch(一个Epoch由32个slots组成)验证约 80万个签名,并且随着单个slot最终性的实现,这个数字可能增加到每个slot的 80万个签名。这是一个很大的负荷。此外,由于流动质押的大量存在,网络无法充分享受承担这一负荷的全部好处。如果网络可以在不要求每个质押者在每个slot中签名的情况下达到可接受的去中心化和安全性,那么我们可以更加依赖这个解决方案,并将每个slot的签名数量减少到例如 1万 个。

本文将描述解决这两个问题的可能方案。它将特别从以下角度出发:假设我们认为大部分资本都掌握在不愿意以目前的形式运行质押节点、每个slot签署消息、锁定押金并使其面临惩罚的人手中,那么他们还能扮演什么角色,对网络的去中心化和安全性有实质性的贡献呢?

两层质押是如何运作的?

目前最受欢迎的两个去中心化质押池,Lido 和 RocketPool,都创建了新兴的两层质押生态系统。在 Lido 的情况下,这两层是:

  • 节点运营商:这些运营商由Lido DAO 的投票选择,实际上是由 LDO 持有者选择的
  • 代理商:持有 stETH 的人。当有人将 ETH 存入 Lido 智能合约系统时,会创建 stETH,使节点运营商可以对其进行质押(但由于提款凭证绑定到智能合约 ETH 地址,节点运营商无法自己提现)

在 Rocket Pool 的情况下,这两层是:

  • 节点运营商:任何人都可以通过提交 8 ETH 押金和一定数量的 RPL 代币成为节点运营商
  • 代理商:持有 rETH 的人。当有人将 ETH 存入 Rocket Pool 智能合约系统时,会创建 rETH,使节点运营商可以对其进行质押(但节点运营商无法自己提现)

代理商的角色

在这些系统中(或由潜在的未来协议更改启用的新系统),一个关键问题是:从协议的角度来看,代理商的存在有何意义?

为了理解为什么这个问题是有意义的,让我们考虑以下情况。在最近的一篇帖子中提出的协议更改(链接)中,将惩罚金额限制为 2 ETH。Rocket Pool 也会将节点运营商的押金降低到 2 ETH。Rocket Pool 的市场份额增加到 100%(对于质押者和ETH 持有者:由于 rETH 变得无风险,几乎所有 ETH 持有者都成为 rETH 持有者或节点运营商)。

假设 rETH 持有者获得 3% 的回报(包括协议内的奖励、优先费用和 MEV),节点运营商获得 4% 的回报。假设 ETH 的总供应量为 1 亿。

下面是计算过程。为了避免复利计算,我们将考虑每日回报而不是年度回报,这样二阶项就足够小可以忽略不计:

现在,让我们考虑一个不同的世界。Rocket Pool 不存在。每个质押者的最低存款减少到 2 ETH,并且质押的 ETH 总量上限为 625 万。此外,节点运营商的回报降低到 1%。我们来计算一下:

现在,让我们从攻击成本的角度来考虑这两种情况。在第一种情况下,攻击者不会注册为代理商:代理商没有权力,所以没有意义。因此,他们会将所有的 ETH 都用于注册为节点运营商。为了达到总质押的 1/3,他们需要投入 208 万 ETH(公平地说,这仍然是相当多的!例如,请参阅这篇关于超级委员会的讨论,这是一个质押扩容提案,也会将攻击成本降低到类似的值)。在第二种情况下,攻击者只需质押,为了达到总质押的 1/3,他们需要投入...208 万 ETH。

从质押经济学的角度和攻击成本的角度来看,两种情况的最终结果完全相同。节点运营商持有的总 ETH 供应份额每天增加 0.00256%,非节点运营商持有的总 ETH 供应份额每天减少 0.00017%。攻击成本为 208 万 ETH。因此,在这个模型中,代理商变成了一个无意义的复杂机器:我们可以直接剔除中间人,并大幅降低质押奖励,将总质押 ETH 限制在 625 万。

这个参数的目的并不是主张将质押奖励降低 4 倍,并将总质押的 ETH 上限设为 625 万。相反,它是为了指出一个良好运行的质押系统应该具备的一个关键特性:即代理商应该做一些真正重要的事情。此外,如果代理商在很大程度上受到社区压力和利他主义的激励来正确行事,那也是可以接受的;毕竟,这是目前激励人们以去中心化增加安全性(但需要更多努力)的方式进行质押主要动,而不是以中心化威胁安全性(但需要更少努力)的方式。

如果代理商可以扮演一个有意义的角色,将会是什么?

我看到两类答案:

  • 代理商选择:代理商可以选择将他们的质押份额委托给哪些节点运营商。节点运营商在共识中的“权重”与委托给他们的总质押份额成比例。代理商选择当前以以很有限的方式存在,例如 rETH 或 stETH 持有者可以撤回他们的 ETH 并切换到不同的池子,实际上改善委托选择的可用性是非常重要的。
  • 共识参与:代理商可以选择扮演共识中的一个角色,这个角色比全面质押要“轻”,不受长时间提现和惩罚风险的限制,但仍然可以作为对节点运营商的一种检查。许多代理商可能不愿意这样做,他们更喜欢持有 ERC20 代币并且不做其他任何操作,但也有一些人会选择这个选项。

扩展代理商选择权力

有三种方法可以扩展代理商选择权力:

  • 更好的池内投票工具
  • 加强池间的更多竞争
  • 确立委托权力(Enshrined delegation)(协议化)

在池内进行投票在今天实际上并不存在:在 Rocket Pool 中,任何人都可以成为节点运营商,在 Lido 中,投票权由 LDO 持有者决定,而不是 ETH 持有者。Lido 提出了LDO + stETH 双重治理的提案,这将使 stETH 持有者有发言权,因为他们可以激活一个机制来阻止新的投票,从而阻止节点运营商的增加或删除。尽管如此,这种方式还是有限的,可以进一步加强。

池间竞争目前存在,但相对较弱。主要挑战在于较小的质押池的质押代币(i)流动性较差,(ii)难以信任,以及(iii)应用支持较少。

我们可以通过将惩罚金额限制在较小的数额,例如 2 或 4 ETH,来改善前两个问题。剩余的(未惩罚的)ETH 可以安全地存入和立即提取,使基于该 ETH 的 LST 与 ETH 双向转换,即使对于最小的质押池也是如此。我们可以通过为 LST 创建一个中央发行合约来改善第三个问题,该合约与ERC-4337ERC-6900类似,用于钱包,以便我们可以保证通过该合约发行的任何质押代币是安全的。应用程序(例如支持质押 ETH 的RAI的版本)可以被强烈鼓励支持通过此注册表发行的所有质押代币。

确立委托目前在协议中不存在,但有可能被引入。它将涉及与上述思想类似的逻辑,但在协议级别实施。有关确立事物的优缺点,请参阅此文章

所有这些想法都是对现状的改进,但它们能提供的好处是有限的。代币投票治理糟糕透顶,而且最终任何形式的非激励式代理选择只是一种代币投票的一种形式;这一直是我对委托权益证明的主要不满。因此,思考如何实现更强大的共识参与方式也是有价值的。

共识参与

即使不考虑当前关于流动性质押的问题,当前的独立质押方法也存在限制。假设单Slot最终性,理想状态下,每个Slot可以处理约 10万 至 1,00万 个 BLS 签名,这还假设Slot时间显著增加。即使我们使用递归 SNARK 来聚合签名,为了可惩罚,签名的参与者位字段必须对每个签名可用。如果以太坊成为全球规模的网络,那么即使使用完全的 danksharding 来存储位字段也是不够的:每个Slot的 16 MB 仅支持约 6400 万个质押者。

从这个角度来看,将质押分为一个更高复杂度的可被惩罚层和一个较低复杂度的偶尔参与层是有价值的。高复杂度层在每个slot都起作用,但可能只有 1万 个参与者,而低复杂度层只会偶尔被调用参与。低复杂度层可以完全免于惩罚,或者可以随机给予参与者临时的(例如几个slot)存款并受到惩罚。

实际上,可以通过提高验证者余额上限来实现这一点,然后通过余额阈值(例如 2048 ETH)来确定哪些现有验证者进入高复杂度层和低复杂度层。

以下是关于这些小规模质押者如何工作的一些建议:

  • 每个slot,随机选择 1万个小规模质押者,并且他们可以对他们认为是该slot头部的区块进行签名。使用小规模质押者作为输入运行 LMD GHOST 分叉选择规则。如果小规模质押者驱动的分叉选择节点运营商驱动的分叉选择发生分歧,用户的客户端将不会接受任何区块作为最终确认,并显示错误。这迫使社区进行调解。
  • 代理商可以发送一笔交易向网络声明他们在线并愿意在接下来的一个小时内担任小规模质押者。为了使节点的消息(区块或证明)被计数,节点和一个随机选择的代理商都必须签名
  • 代理商可以发送一笔交易向网络声明他们在线并愿意在接下来的一个小时内担任小规模质押者。每个Epoch,随机选择 10 个代理商作为包含列表提供者,并选择另外 1万个作为投票者。这些选择是提前 k 个slot进行的,并给予一个 k 个slot的窗口来在链上发布确认他们在线的消息。每个已确认的选择的包含列表提供者可以发布一个包含列表,而且只有当对于每个包含列表,要么(i)它包含该包含列表中的交易,要么(ii)它包含来自一半选择的投票者的投票,显示该包含列表不可用时,区块才是有效的。

这些小额质押者的共同点是它们不需要积极参与每个Slot,不可被惩罚(因此具有非常低的密钥管理风险),并且非常“轻量”,甚至不需要运行完整节点。仅验证共识层即可。因此,它们可以通过应用程序或浏览器插件来实现,这些应用程序或插件大多是被动的,计算开销非常低,硬件要求和技术要求也非常低,甚至不需要像 ZK-EVM 这样的技术进步

这些小额质押者的共同目标是防止 51% 的节点运营商参与交易审查。第一和第二个方法还可以防止多数节点运营商参与最终性的撤销。第三个更直接地关注审查,尽管它更容易受到节点运营商多数选择审查确认消息的影响。

img

这些想法是从协议实现的两层质押解决方案的角度编写的,但它们也可以作为质押池的功能来实现。以下是一些具体的实现想法:

  • 在协议层面,每个验证者可以指定两个质押密钥:一个持久的质押密钥 P,以及一个以太坊地址,当调用时输出一个快速的质押密钥 Q。节点跟踪由 P 密钥签名的消息和由 Q 密钥签名的消息的分叉选择;如果两者不一致,它们不接受任何区块作为最终确定性。质押池负责随机选择代理商作为当前Slot的 Q 密钥持有者。
  • 或者,协议可以基本保持不变,但该验证者在该Slot的质押公钥将设置为 P+Q。请注意,对于惩罚,两个可惩罚的消息可能具有不同的 Q 密钥,但它们将具有相同的 P 密钥;惩罚设计需要处理这一点。
  • 或者,Q 密钥可以仅在协议中用于签署和验证区块中的包含列表。在这种情况下,Q 可以是一个智能合约,而不是单个密钥,因此质押池可以使用它来实现更复杂的投票逻辑,接受来自随机选择的提供者的包含列表或足够多表明包含列表不可用的投票。

结论

如果正确实施,对质押设计的微调可以一举解决两个问题:

  1. 给那些今天没有资源或能力进行单独质押的人提供参与质押的机会,使他们能够更多地掌握权力:既有权力选择支持的节点,又有权力以某种轻量级但有意义的方式积极参与共识。并非所有参与者都会选择其中一个或两个选项,但任何选择这样做的人都会相对于现状有显著的改善。
  2. 减少以太坊共识层在每个slot中需要处理的签名数量,即使在单slot最终性制度下,也将减少到大约 10,000 个。这也有助于去中心化,使每个人都能更容易地运行验证节点。

对于许多这些解决方案,存在不同的抽象层次,问题的解决方案可以存在于其中:在质押池协议中授予用户的权限,用户在质押池协议之间的选择,以及在协议中的设定。这个选择应该经过仔细考虑,并且通常最好采用最小可行的确立方式,即在实现所需目标的同时最大限度地减少协议复杂性和协议经济学更改的程度。

点赞 2
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Vitalik Buterin
Vitalik Buterin
https://vitalik.ca/