协议 DAO(pDAO)
Rocket Pool 协议 DAO(pDAO)负责塑造协议的方向,由 RPL 治理运行。其成员及其投票权由大大小小的节点运营者组成,所有这些运营者都直接参与协议。它为整个 Rocket Pool 社区提供服务,包括 rETH 持有者、节点运营者和 RPL 持有者。pDAO 优先考虑 Rocket Pool 协议的安全性和以太坊网络的健康。有关 pDAO 是谁和什么的明确定义,请随时查看 pDAO 章程。
Houston 中的新 pDAO 功能
pDAO 职责的链上执行
Houston 升级引入了 pDAO 治理系统执行过程的链上替代方案。它使用乐观欺诈证明系统,允许任何节点运营者提出提案并对提案进行投票,以调整"pDAO 协议参数"并支出国库资金。要查看 pDAO 可控参数的完整列表,请单击此处。 在 Houston 之前,核心团队负责按照社区治理流程的要求执行 pDAO 职责。例如,团队按照治理投票的支付时间表执行每月 IMC 和 GMC 支付。计划是这种权力暂时由团队掌握,直到建立新的权力结构来接管这些职责。Houston 消除了对团队的这种依赖,使协议更加去中心化和无需信任。
安全委员会
Houston 升级还包括一个新的安全委员会,以帮助在协议出现任何潜在问题时快速做出反应。这些成员可以由 pDAO 选举,并有能力立即提出和执行变更。pDAO 有权从安全委员会中选举和罢免成员。这是一个严肃的角色,pDAO 应该制定强有力的准入要求和清除停滞成员的流程。pDAO 守护者将在 Houston 开始时成为安全委员会的唯一成员。
经常性国库支出
RPL 的通胀率为 5%。根据 RPIP-25 的定义,这种通胀的 22% 被定向到 pDAO。pDAO 可以将这些资金用于各种目的。例如,流动性提供者(LP)奖金等激励措施、第三方改进和项目的拨款和赏金,以及资助 Rocket Pool 协议的开发。Houston 升级还引入了一项新功能,能够在每个奖励期向指定受益人进行经常性国库支付。
协议 DAO(pDAO)提案
任何具有非零投票权的节点都可以随时提出或参与 pDAO 提案。提案可以是以下类型之一:
- 更改 pDAO 设置
- 一次性国库支出
- 重复国库支出(管理委员会)
- 安全委员会成员资格
有关更多详细信息和理由,请参阅提案类型。重要的是要理解,pDAO 提案是一个链上实体,存在于执行协议级别的变更。
pDAO 提案的生命周期
提案应该在最终上链之前通过治理流程进行预测。它由 4 个阶段组成,所有这些阶段都是 pDAO 可控参数:
- 投票延迟期:
proposal.vote.delay.time - 投票阶段 1:
proposal.vote.phase1.time - 投票阶段 2:
proposal.vote.phase2.time - 执行:
proposal.execute.time
投票延迟期
为了决定提案的结果,协议必须知道所需的法定人数。提议者在链下计算此值,并将其与提案一起提交。该值被乐观地接受,但在欺诈的情况下,验证者可以执行挑战/响应流程来证明该值不正确。无效的提案随后被丢弃。
提议者和挑战者需要锁定 RPL 的几个原因。
proposal.bond激励有效提案并抑制垃圾邮件。proposal.challenge.bond激励删除无效/恶意提案。
挑战者提供他们声称不正确的默克尔和树的索引。任何节点运营者都可以参与挑战欺诈性提案(并因此获得奖励)。如果您有兴趣选择加入,请随时阅读有关 pDAO 挑战流程的内容。在投票延迟期结束时未在挑战中被击败的提案将进入投票阶段。
当 proposal.vote.delay.time 到期时,提案不再能够被挑战或击败。
投票期 1
在投票期间,节点运营者和代表可以投票,有四个选项之一:
他们的投票权将包含在他们选择的选项中。
这可以使用以下命令完成:
如果达到否决法定人数(由 proposal.veto.quorum 参数定义),提案将立即被击败,提议者将失去其保证金。这是为了阻止垃圾邮件、低质量提案或尚未经过链下流程的提案。smartnode 命令 rocketpool pdao proposals finalize 用于通过燃烧提议者锁定的 RPL 保证金来最终确定被否决的提案。
阶段 1 的持续时间由 proposal.vote.phase1.time 参数确定。无论是否达到 proposal.quorum,提案都将过渡到阶段 2。
投票期 2
代表可以在投票期 2 期间投票,但他们的投票仅值其本地投票权。在阶段 1 中未投票的投票者在阶段 2 期间仍然能够投票。不同意其代表选择的节点运营者将有机会推翻其代表的投票。
推翻投票的过程非常简单,只需在投票期 2 期间调用 rocketpool pdao proposals vote 并按照提示操作。代表的投票权将被委托人的投票权推翻。
当投票期 2 结束时,提案的结果就结束了。为了确定结果(并执行),proposal.quorum 总投票权必须在 proposal.vote.phase2.time 结束时达到。如果达到法定人数并达成共识,提案将通过投票期并被标记为成功。
如果未达到 proposal.quorum,则无法采取进一步行动。如果未达到法定人数,提案被视为已结束和最终。
执行
一旦两个投票期都通过并且提案成功,提案就可以执行,变更(由有效负载定义)将应用于 Rocket Pool 协议。要执行提案,请使用以下命令:
您将被提示选择要执行的提案,提案将在此步骤后应用于协议!
在提案通过投票期后,提议者可以领取其锁定的 RPL 保证金,除非提案被挑战击败或被否决。
有一个窗口 proposal.execute.time,在此期间可以执行提案。如果此计时器到期,提案将过期。
就是这样!请记住,上面提到的所有变量都是 pDAO 可控参数。单击此处查看 pDAO 有权使用链上提案更改的每个参数的完整列表。
挑战流程
完整的网络投票权树由于 gas 限制而存储在链下。当用户提交新提案时,他们负责在目标区块号构建网络投票树。这棵树是在链下生成的,但可以通过在链上提交的默克尔根进行验证。协议依赖于验证者来检查提议者提交的详细信息。
任何节点都可以参与跟踪和验证提案的正确性。要选择加入此责任,请使用命令 rocketpool service config,导航到 Smartnode and TX Fee Settings 菜单,并选中 Enable PDAO Proposal Checker 复选框。
启用此设置后,节点将检查新提案,验证其正确性,并向无效提案提交挑战。唯一的先决条件是启用 RPL 锁定。
此检查每 5 分钟运行一次,与其他一些节点相关职责一起运行。我们将通过一个挑战欺诈性提案的示例进行说明。我们可以使用 smartnode 命令 rocketpool service logs node 来监控进度:
我们可以看到我们的节点捕获了一个欺诈性提案并开始了挑战它的过程。区块 1283202 是提案 177 提出的区块,这意味着此提案的投票权将在区块 1283202 计算。如果您有兴趣查看这些投票信息快照是什么样子,您可以在此目录中找到它们: ~/.rocketpool/data/voting
因为提议者被发现提交了不正确的投票信息,我们的节点在提案 177 索引 5 上进行合约调用 Function: createChallenge 并等待提议者响应挑战。
由于提议者的投票信息不正确,它将无法及时响应挑战(由 proposal.challenge.period 确定)。此时提案被视为击败。当提案被击败时,我们的节点自动在提案 177 索引 5 上进行合约调用 defeatProposal 以结束提案。
参与击败提案的挑战者如果提交被证明不正确的索引,将按比例支付提议者保证金的一部分。所有其他挑战者仅收回其保证金。
现在提案被击败了,我们的节点(挑战者)可以领取他们的原始 RPL 保证金以及提议者的 RPL 保证金作为击败欺诈性提案的奖励。
如果您想深入了解 pDAO 提案和挑战系统的细节,请查看技术规范。如果您有兴趣研究深入低级细节的示例,请随时跳到挑战流程部分。