原文作者:Vitalik Buterin
原文编译:bayemon.eth, ChainCatcher
特别感谢 Mike Neuder、Justin Drake 和其他人的反馈和审查。另请参阅:Mike Neuder、Dankrad Feist 和 arixon.eth 早前就类似主题发表的文章。
当前以太坊的发展现状可以说包含了大量双重质押(two-tiered staking),这里所说的双重质押是指有两类参与者的质押模式。
节点运营者 Node Operator:运营节点,并以自己的声誉活一定数额的自有资本作抵押
代理商 Delegator:代理商们质押一定数量的以太坊,没有最低额度,对抵押品以外的其他参与方式也没有额外的限制
这种新兴的双重质押是通过大量参与提供流动性质押代币(LST)的质押池产生的。(Rocket Pool 和 Lido 都是这种模式)。
然而当前的双重质押存在两种缺陷:
节点运营者的中心化风险:当前所有质押池中节点运营者的选取机制仍然过度中心化
不必要的共识负担:以太坊 L1 每个 Epoch 要验证约 800000 个签名,这对单个 slot 而言是极大的负荷。此外,由于流动性质押池需要的资金较多,而网络本身并没有从这种负荷中充分获益。因此,如果以太坊网络能够实现合理的分散性与安全性,而不需要每个质押者依照时段签名,那么社区就可以采纳这类解决方案,从而有效缩减每个时段的签名数量。
本文将描述解决上述两个问题的方案,首先假设,大多数资本都掌握在那些不愿意以当前形式亲自管理质押节点、在每个 slot 上签署信息,锁定存款并再分配给资金被削减者,那么在这种情况下,这些人还能扮演怎样的角色,从而依然为网络的去中心化与安全性作出有意义的贡献呢?
当前的双重质押是如何运作的?
目前最流行的两个质押池分别是 Lido 和 RocketPool,就 Lido 而言,参与的两方分别是:
节点运营者:由 Lido DAO 投票选出,这也就意味着这实际上是由 LDO 持有者选出,当有人将 ETH 存入 Lido 智能合约系统时,就会创建 stETH,节点操作员可将其投入质押池(但由于提现凭证与智能合约地址绑定,运营者不能随意提现)
代理商:当有人将 ETH 存在 Lido 智能合约系统时,会产生 stETH,节点运营者可以将其作为质押(但由于提现凭证与智能合约地址绑定,运营者不能随意提现)
对于 Rocket Pool 而言,则分别是:
节点运营者:任何人都可以成为节点操作员,只需提交 8 个 ETH 和一定数量的 RPL 代币。
代理商:当有人将 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,流动性总量上限为 625 万 ETH,同时节点运营商回报率降至 1% 。再来计算:
从攻击成本的角度来考虑这两种情况。在第一种情况下,攻击者不会注册成为代理商,因为代理商本质上并没有任何提款的权利,所以没有意义。因此,他们会把所有的 ETH 都用来质押并成为节点运营商。要达到质押总量的 1/3 ,他们需要投入 208 万个以太坊(公平地说,这仍然是一个相当大的数字。在第二种情况下,攻击者只需投入资金,要达到质押池总量的 1/3 ,他们仍然需要投入 208 万个以太坊。
从质押经济学和攻击成本的角度来看,两种情况的最终结果完全相同。节点运营商持有的 ETH 总供应量份额每天增加 0.00256% ,非节点运营商持有的 ETH 总供应量份额每天减少 0.00017% 。攻击成本为 208 万 ETH。因此,在这个模型中,代理商似乎成了一台毫无意义的 Rube Goldberg 机器,理性的社区甚至倾向于去掉中间人,大幅减少押注奖励,并将质押的 ETH 总量限制在 625 万个。
当然,本文并不主张将质押奖励降低 4 倍,同时将质押总量上限定死在 625 万。相反,本文的观点是一个运作良好的质押系统理应具备一个关键属性,即代理商应当在整个系统中承担重要的责任。此外,如果代理商在很大程度上受到社区压力和利他主义的激励而采取正确的行动,那也没有关系;毕竟,这才是今天激励人们推行去中心化、高安全性的质押解决方案的主要力量。
代理商的职责所在
如果代理商可以在质押系统中发挥有意义的作用,那么这种作用可能是什么?
我认为有两类答案:
代理商选择:代理商可以选择将自己的利害关系委托给哪些节点运营商。节点运营商在共识机制中的 权重 与委托给他们的总质押成正比。目前,代理商选择机制仍然有限,即 rETH 或 stETH 持有者可以撤回其 ETH 并切换到不同的池,但代理选择的实际可用性可以大大提高。
共识机制参与:委托人可以选择在共识机制中扮演一定的角色,责任比全额认购“更轻”,也不会有很长的退出期和削减风险,但仍能起到制衡节点运营商的作用。
增强代理选择权
有三种增强代表选择权力的方式:
在池中改进投票工具
增加池之间的竞争
将代表权固定化
目前,在池中进行投票实际上并不实际:在 Rocket Pool 中,任何人都可以成为节点操作员,在 Lido 中,投票由 LDO 持有者决定,而不是 ETH 持有者。Lido 提出了一项关于 LDO + stETH 双重治理的提案,他们可以激活一个保护机制,阻止新的投票,从而阻止节点操作员被添加或移除,这某种程度上让 stETH 持有者有发言权。尽管如此,这种权力还是有限的,可以更强大。
跨池竞争今天已经存在,但相对较弱。主要挑战在于较小的质押池的质押代币具有较低的流动性,较难获得信任,并且较少得到应用程序的支持。
我们可以通过将惩罚金额限制在较小的数量,例如 2 或 4 个 ETH,来改善前两个问题。然后,剩余的 ETH 可以安全地存款和立即提取,从而让双向兑换对于较小的质押池依然成立。我们可以通过创建一个总发行合约来改进第三个问题,即用于管理 LST(类似于 ERC-4337 和 ERC-6900 用于钱包的合同),以便我们可以保证通过该合约发行的任何质押代币都是安全的。
目前,在协议中尚未存在固化的代表权力,但这类情形对未来似乎也有存在的可能。它将涉及与上述想法类似的逻辑,但在协议级别实施。有关固化事物的优缺点,请参阅这篇文章。
这些想法都是对现状的改进,但它们能够提供的优势都是有限的。代币投票治理存在问题,最终任何形式的非激励代理选择都只是一种代币投票的形式;这一直是我对委托权益证明的主要不满之处。因此,考虑实现更强大的共识参与方式也是有价值的。
共识参与
即使不考虑流动性质押的当前问题,对于当前的独立质押方法也存在限制。假设使用 single-slot finality,理想状态下每个 slot 可能处理约 100, 000 到 1, 000, 000 个 BLS 签名。即使我们使用递归 SNARKs 来聚合签名,为了签名的可追踪性,需要赋予每个签名一个参与者的位字段。如果以太坊成为一个全球规模的网络,那么完全分散化存储位字段也不足够:每个 slot 中的 16 MB 只能支持大约 6400 万名质押者。
从这个角度来看,将质押分为更高复杂度的可减持层和较低复杂度的层是有价值的,高复杂度的层每个 slot 都会生效,但可能只有 10, 000 名参与者,而较低复杂度的层只在偶尔被调用以参与。较低复杂度的层可以完全免于减持,或者可以随机赋予参与者机会,在几个 slot 内存款并成为减持对象。
实际上,这可以通过提高验证者余额上限,随后增加余额阈值(例如, 2048 ETH)来确定哪些现有验证者进入更高复杂度或较低复杂度层。
以下是关于这些小额质押角色如何运作的一些建议:
每个 slot,会随机选择 10000 名小额质押者,他们可以签署他们认为是能够代表该 slot 的内容。使用小额质押者作为输入运行 LMD GHOST 分叉选择规则。如果由小额质押者驱动的分叉选择和节点运营者驱动的分叉选择存在一定的分歧,用户的客户端将不接受任何区块作为最终确认,并显示错误。这迫使社区介入解决情况。
代理可以发送交易,向网络宣告他们在线并愿意在接下来的一个小时内担任小额质押者。节点发送的消息(区块或证明)计算,需要节点和随机选择的一个代理都签署节点的确认信息。
代理可以发送交易,向网络宣告他们在线并愿意在接下来的一个小时内担任小额质押者。每个时期,会选择 10 名随机的代理作为包含列表提供者(inclusion list provider),并选择 10000 名更多的代理作为选民。这些在 k-slot 之前被选择,并且给予一个 k slot 窗口来在链上发布确认他们在线的消息。每个确认的选择的包含列表提供者都可以发布一个包含列表,除非对于每个包含列表,要么包含该包含列表中的交易,要么包含一般 1 被选择的选民的投票,显示该包含列表不可用,否则区块将被视为无效。
这些小型质押节点的共同点是,它们不需要积极参与每个 slot,甚至只需要轻节点就可以完成所有的工作。因此,节点部署只需验证共识层即可,节点运营商可以通过应用程序或浏览器插件来实现,这些应用程序或浏览器插件大多是被动的,对计算开销、硬件要求或技术诀窍的要求都很低,甚至不需要像 ZK-EVM 这样的先进技术。
这些“小角色”也都有一个共同目标:防止 51% 的多数节点运营商进行交易审查。第一种和第二种还能防止多数人参与终局性还原。第三种则更直接地关注审查,但它更容易受到多数节点运营商选择的影响。
这些想法是从实施在协议中的双重质押解决方案的角度编写的,但它们也可以作为质押池的功能来实施。以下是一些具体的实施想法:
协议角度来讲,每个验证者都能设定两个质押密钥:一个持续质押密钥 P,以及绑定的可供调用的以太坊地址,并输出一个快速质押密钥 Q。节点对分叉选择的签署信息跟踪以 P 表示,签署的信息以 Q 表示,如果 PQ 存储结果不一致,则不接受任何区块的最终确定,由流动性池负责随机选取代表
协议大体上可以保持不变,但该验证器在该时段的公开密钥将被设置为 P+Q。请注意,对于减持而言,两个可减持的消息可能具有不同的 Q 密钥,但它们将具有相同的 P 密钥;减持设计需要处理这种情况。
Q 密钥只能在协议中用于对区块中的包含列表进行签名和验证。在这种情况下,Q 可以是一个智能合约,而不是一个单一的密钥,因此,质押池可以使用它来实现更复杂的投票逻辑,接受来自随机选择的提供者的包含列表或足够多的表示包含列表不可用的投票。
结论
如果正确实施,对权益证明设计的微调可以一举解决两个问题:
为那些今天没有资源或能力进行独立权益证明的人提供了一个机会,使他们有机会参与权益证明,从而保留更多的权力在他们手中:包括(i)选择支持哪些节点的权力和(ii)以某种比完全运营权益证明节点更轻便但仍有意义的方式积极参与共识。并非所有参与者都会选择其中一个或两个选项,但任何参与者如果选择了其中一个或两个选项,都会相对于现状有重大改进。
减少以太坊共识层在每个 slot 中需要处理的签名数量,即使在单 slot 最终性制度下,也将其减少到约 10, 000 个之类的较小数量。这也将有助于去中心化,使每个人都更容易运行验证节点。
对于这些解决方案,可以在不同的抽象层次上找到解决问题的方法:在权益证明协议内授予用户的权限、在权益证明协议之间的用户选择以及在协议中的设立。应该谨慎考虑这种选择,并且通常最好选择最小可行设立,以最大程度地减少协议的复杂性和对协议经济学的更改程度,同时仍然实现所期望的目标。