Protocol DAO (pDAO)
Rocket Pool Protocol DAO (pDAO) 负责塑造协议的方向,由 RPL 治理运行。其成员及其投票权由节点运营商组成,无论大小,他们都直接参与协议。它为整个 Rocket Pool 社区服务,包括 rETH 持有者、节点运营商和 RPL 持有者。pDAO 优先考虑 Rocket Pool 协议的安全性和 Ethereum 网络的健康。有关 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 升级还引入了一项新功能,可以在每个奖励期向指定受益人进行重复国库支付。
Protocol 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激励撤除无效/恶意提案。
挑战者提供一个索引到 Merkle-sum 树,他们声称该索引是不正确的。任何节点运营商都可以参与挑战欺诈性提案(并因此获得奖励)。如果您有兴趣选择加入,请随意阅读 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 限制,完整的网络投票权树存储在链外。当用户提交新提案时,他们负责在目标区块号处构建网络投票树。此树在链外生成,但可以通过链上提交的 Merkle 根进行验证。协议依赖验证者来检查提议者提交的详细信息。
任何节点都可以参与跟踪和验证提案的正确性。要选择加入此职责,请使用命令 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 提案和挑战系统的细节,请查看技术规范。如果您有兴趣研究深入到底层细节的示例,请随意跳到有关挑战流程的部分。