参与链上 pDAO 提案

任何具有非零投票权的节点都可以随时提出或参与 pDAO 提案。提案可以是以下类型之一:

  • 更改 pDAO 设置
  • 一次性国库支出
  • 重复国库支出(管理委员会)
  • 安全委员会成员资格

有关更详细的信息和理由,请参阅提案类型。 重要的是要理解 pDAO 提案是一个存在于链上的实体,用于在协议层面执行更改。

治理流程

在提案最终上链之前,应该通过治理流程进行预告。

对 Rocket Pool 协议的更改通过严格但透明的治理流程进行提议、投票和执行。该流程始于 Discord 社区内对想法的非正式讨论。然后这个想法进展到 Discord 上的 #governance 频道和 DAO 论坛的正式讨论,在那里它接受彻底的研究、建模和审查,为 Rocket Pool 改进提案 (RPIP) 做准备。之后,起草 RPIP 草案并由指定的 RPIP 审查员审查,以确保其质量并准备好提交给 DAO。然后在论坛上向 DAO 提交草案提案以进行进一步审查、反馈并纳入任何必要的更改。一旦提案根据社区意见进行了完善,在 DAO 论坛上发起投票以衡量最终确定 RPIP 文本的准备情况。如果投票通过,表明社区批准,RPIP 被标记为最终版本并准备进行 Protocol DAO 投票,该投票通过 Snapshot 进行,以确定是否应实施该提案。

从这里开始,Oracle DAO 将提出链上提案。有一个时间窗口,在此期间 Protocol DAO、Oracle DAO 和社区可以审查提案。如果达成共识,则执行提案并将更改应用于协议。

可以在 Rocket Pool 网站上找到此流程的方便视觉表示。

先决条件

在继续之前,请阅读提案的生命周期。它将解释所有投票期之间的差异以及在每个期间可以采取的行动。

本页面的其余部分将指导您完成参与链上 pDAO 提案所需的步骤。

初始化投票

如果您是在 Houston 升级之前注册的节点运营商,您需要初始化投票以解锁投票权。请记住,拥有至少一个 minipool 是拥有投票权的要求。

rocketpool pdao initialize-voting

此命令将引发以下提示。请仔细阅读:

感谢您初始化投票权!

您有两个选项:

1. 直接投票(将投票权委托给自己)
   这将允许您直接对提案投票,
   让您亲自塑造协议的方向。

2. 委托您的投票
   这将把您的投票权委托给您信任的人,
   让他们代表您投票。您将有机会覆盖。

您可以在 https://delegates.rocketpool.net 查看现有公共代表列表,
但是,您可以委托给任何节点地址。

通过以下方式了解更多有关这一切如何运作的信息:/zh/legacy/houston/participate#participating-in-on-chain-pdao-proposals

请输入 `direct` 或 `delegate` 以继续:
  • 如果您回复 direct,投票权将初始化到您的节点,您将能够直接对 Protocol DAO 提案投票。
  • 如果您回复 delegate,您将有机会通过在同一笔交易中初始化投票和设置代表来节省一些 gas。

您只需要做一次。它为节点配置初始快照信息。初始化投票后,采取的每项行动都将更新节点的快照信息。一旦您的投票权被初始化,您可以使用以下 smartnode 命令检查您有多少:

rocketpool pdao status
注意

每当创建新提案时,都会创建一个代表网络投票权和代表信息快照的投票树。这意味着如果提案是在您初始化投票之前提出的,您的节点投票权将不会包含在提案中。rocketpool pdao status 将显示您节点在最新区块的投票权,这可能代表也可能不代表您在特定提案上的投票权。

自动初始化投票权

Smartnode 版本 1.13.8 引入了一项新功能自动初始化投票权,旨在自动为尚未这样做的节点初始化投票权。自动初始化的投票权是自我委托的。可以通过运行 rocketpool service config 并导航到 Smartnode and TX Fees 部分来在 Smartnode 设置中配置此功能。

自动初始化投票权 Gas 阈值是对此自动交易的限制(以 gwei 为单位)。您可以通过将阈值设置为 0 来选择退出此任务。如果您的节点是在 Houston 升级后注册的,或者投票权已启用,请随意选择退出。

设置您的 Snapshot 信号地址

设置您的 Snapshot 信号地址将允许您在浏览器或移动设备上参与 Snapshot 投票,而无需将节点密钥暴露给热钱包。

需要准备几件事:

  • 您的节点地址
  • 您想用于 Snapshot 投票的地址(信号地址)

您将签署一条消息,表明您的节点地址可以委托给新地址。此消息表明您打算使用您的钱包地址作为 Snapshot 信号地址。

从下面的选项卡之一选择您正在使用的网络。

Hoodi 测试网
主网
如果您在 Hoodi 测试网上尝试此操作,您可以在此页面上签名:https://testnet.node.rocketpool.net/signalling-address
警告

不要将您的节点私钥加载到热钱包。请选择另一个帐户作为您的信号地址。 设置信号地址后,您可以使用它在 Snapshot 上用您节点的投票权投票。

首先使用 MetaMask、WalletConnect 或网站支持的任何其他方法连接您想用作信号地址的地址到网站。然后您将看到此对话框以查找您的节点地址。

接下来,您将输入您的节点地址,然后单击橙色的"查找"按钮。这将检查该地址是否是已注册的节点,然后带您进入下一步。

提示

在执行此操作之前,请确保您有正确的节点地址! 如果您需要确认节点的地址,可以使用 rocketpool node status 命令通过 CLI 快速检索它。

登录并确认节点地址后,您将看到您的 Snapshot 信号地址。它应该与您登录网站的帐户相同。在继续之前,请仔细检查这是否正确。一旦您确信已登录到所需的帐户,请单击橙色的"签名消息"按钮。您将在钱包扩展应用中看到签署以下消息的提示:

`snapshot signalling address` may delegate to me for Rocket Pool governance

签名不会花费任何 gas,但设置会。签名后,前端将为您提供一个要粘贴到 smartnode 的命令。继续将其粘贴到 smartnode 的 CLI 中并按照提示的步骤操作。该命令应该看起来像这样:

rocketpool pdao set-signalling-address
`snapshot signalling address`
`EIP712 signature`

如果您在 CLI 中看到此消息,一切就绪!

The node's signalling address was successfully set to `snapshot signalling address`
提示

如果您不小心关闭了网站或丢失了命令,请不要担心。您只需重复这些步骤并使用相同的节点地址和信号地址再次签名。前端使用 ethers 库中的 signer.Signmessage(),这意味着给定相同的输入,您的签名是确定性的。 点击这里了解更多信息。

清除您的信号地址非常简单,只需在 CLI 中使用此命令:

rocketpool pdao clear-signalling-address

允许 RPL 锁定

如果您只对提案投票感兴趣,可以忽略此步骤。允许 RPL 锁定仅对那些希望提议或挑战提案的人是必需的。

提议和挑战需要 RPL 锁定。默认情况下,出于任何目的锁定 RPL 都将被禁用。节点运营商将通过启用从其节点或主要提款地址锁定 RPL 来选择参与治理活动。您可以在 Smartnode 中使用此命令来执行此操作:

rocketpool node allow-rpl-locking

这将提示您在创建或挑战治理提案时允许锁定 RPL。相反,您可以使用以下命令选择退出 RPL 锁定:

rocketpool node deny-rpl-locking
注意

锁定的 RPL 在奖励、投票和抵押要求方面与常规质押的 RPL 的作用相同。 锁定的 RPL 不计入提取 RPL 的阈值。

委托投票权

节点运营商可以选择将其投票权委托给另一个节点运营商。唯一的要求是您的代表是已注册的节点。

要将链上投票权委托给另一个节点,请使用以下命令:

rocketpool pdao set-voting-delegate `address`
注意

如果您已将投票权委托给另一个节点运营商,您可以通过将代表地址设置为您自己的节点地址来重置此设置。

  • 在提案的第 1 阶段:选民代表可以对提案投票。
  • 在提案的第 2 阶段:委托了投票的节点运营商有机会推翻其代表的投票(如果他们不同意)。

如果您是具有委托投票权的节点运营商,您必须在投票第 1 阶段投票才能使委托的投票权计入提案。您在第 1 阶段的投票将价值您的本地投票权 + 委托的投票权。您在第 2 阶段的投票仅价值您的本地投票权

创建提案

为了有资格提议,节点必须满足一些要求:

  • 包含在快照中(通过初始化投票或在 Houston 后注册)
  • 必须至少有一个 minipool
  • 拥有非零投票权
  • 已允许 RPL 锁定
  • 有一个 RPL 质押(减去任何已锁定的 RPL)大于提案保证金

提案存在是为了在协议层面更改参数和执行代码!在链上创建提案之前,应该通过治理流程进行讨论和达成共识。

使用命令 rocketpool pdao propose 调出选项菜单

COMMANDS:
   rewards-percentages, rp      提议更新节点运营商、Oracle DAO 和 Protocol DAO 的 RPL 奖励分配百分比
   one-time-spend, ots          提议 Protocol DAO 国库的一次性支出
   recurring-spend, rs          提议 Protocol DAO 国库的重复支出
   recurring-spend-update, rsu  提议更新现有的重复支出计划
   security-council, sc         修改安全委员会
   setting, s                   提出 Protocol DAO 设置提案

这些命令中的每一个都会提示您输入一系列输入以创建所需的提案。在本指南中,我们将邀请一个节点加入安全委员会作为示例。要提出邀请节点加入安全委员会的提案,您将使用命令:

rocketpool pdao propose security-council invite

请记住,根据提案类型,此步骤会有一些细微的变化。此特定命令:rocketpool pdao propose security-council invite 将提示您输入 ID,然后输入成员地址。

Please enter an ID for the member you'd like to invite: (no spaces)
test-member

Please enter the member's address:
0xBdbcb42DD8E39323a395B2B72d2c8E7039f1F145

... gas estimations ...

Are you sure you want to propose inviting test-member (0xBdbcb42DD8E39323a395B2B72d2c8E7039f1F145) to the security council? [y/n]

在此被包含在区块中后,将创建一个 pDAO 提案!提案将在创建时进入投票延迟期

查看提案状态

每个提案都被分配一个 proposalID。在这种情况下,我们邀请 0xBdbc... 加入安全委员会的提案用 ID 71 表示。有几种方法可以查看提案的状态。一种方法将显示每个 pdao 提案及其状态(待定、成功、已执行等)的列表。第二种方法显示有关特定提案的详细信息。

查看提案列表
查看提案详情

要列出所有提案,请使用以下命令:

rocketpool pdao proposals list

这将显示所有提案及其状态的列表

1 Pending proposal(s):

71: invite test-member (0xBdbcb42DD8E39323a395B2B72d2c8E7039f1F145) to the security council - Proposed by:
0x681B8BBf08708e64694005c7Dc307b381b4D1A7D

Succeeded proposal(s):

Executed proposal(s):

Destroyed proposal(s):

Quorum not Met proposal(s):

Defeated proposal(s):

Expired proposal(s):

在这里我们可以看到我们的提案 invite test-member 的 ID 为 71 并处于待定状态。在此状态下,挑战者可以对提议者提供的 Merkle pollard(用于计算投票权)的有效性提出异议。当 proposal.vote.delay.time 结束时,提案将过渡到活跃投票阶段。如果需要复习,请随意查看提案的生命周期

对提案投票

在投票期间,节点运营商代表可以使用以下四个选项之一投票:

1. 弃权:选民的投票权计入法定人数,但既不支持也不反对提案。
2. 赞成:选民投票赞成执行提案。
3. 反对:选民投票反对执行提案。
4. 否决:选民投票反对提案,并表明他们认为提案是垃圾邮件或恶意的。

他们的投票权将应用于他们选择的选项。投票权是"有效 RPL 质押"的函数。可以在 rocketpool-research 仓库中找到更详细的阅读。

注意

如果您是具有委托投票权的节点运营商,您必须在投票第 1 阶段投票才能使委托的投票权计入提案。您在第 1 阶段的投票将价值您的本地投票权 + 委托的投票权。您在第 2 阶段的投票仅价值您的本地投票权。请记住,节点可能对提案投票一次且仅投票一次,因此请谨慎选择。

使用此命令投票:

rocketpool pdao proposals vote

如果至少有一个提案处于活跃投票阶段,系统将提示您选择要投票的提案。 菜单应显示您的节点有资格投票的所有提案:

1: proposal 71 (message: 'invite test-member', payload: proposalSecurityInvite(test-member,0xBdbcb42DD8E39323a395B2B72d2c8E7039f1F145), phase 1 end: 14 Mar 24 05:40 UTC, vp required: 0.00, for: 0.00, against: 0.00, abstained: 0.00, veto: 0.00, proposed by: 0x681B8BBf08708e64694005c7Dc307b381b4D1A7D)
2: proposal 72 (message: 'replace langers-not-his-eoa (0xaC1396c21Eaf6630113516C69d63b7CB59B98b3E) on the security council with tpan (0x6E9E4Cc0A8172349E049128574E1fb85B8D3CE9E)', payload: proposalSecurityReplace(0xaC1396c21Eaf6630113516C69d63b7CB59B98b3E,tpan,0x6E9E4Cc0A8172349E049128574E1fb85B8D3CE9E), phase 1 end: 14 Mar 24 05:40 UTC, vp required: 0.00, for: 0.00, against: 0.00, abstained: 0.00, veto: 0.00, proposed by: 0xe2fC31d61E28BB16c0857D4682AB3616FA7A793d)
3: proposal 73 (message: 'set proposal.vote.delay.time', payload: proposalSettingUint(rocketDAOProtocolSettingsProposals,proposal.vote.delay.time,60), phase 1 end: 14 Mar 24 05:41 UTC, vp required: 0.00, for: 0.00, against: 0.00, abstained: 0.00, veto: 0.00, proposed by: 0x681B8BBf08708e64694005c7Dc307b381b4D1A7D)

选择一个选项后,系统会询问您想如何投票。

How would you like to vote on the proposal?
1: Abstain
2: In Favor
3: Against
4: Veto

选择一个选项将显示您的投票权,然后提示您发送交易:

Your current voting power: 20123617964

+============== Suggested Gas Prices ==============+
| Avg Wait Time |  Max Fee  |    Total Gas Cost    |
| 15 Seconds    | 76 gwei   | 0.0176 to 0.0265 ETH |
| 1 Minute      | 56 gwei   | 0.0127 to 0.0190 ETH |
| 3 Minutes     | 56 gwei   | 0.0127 to 0.0190 ETH |
| >10 Minutes   | 56 gwei   | 0.0127 to 0.0190 ETH |
+==================================================+
These prices include a maximum priority fee of 2.00 gwei.
Please enter your max fee (including the priority fee) or leave blank for the default of 56 gwei:

一旦交易被包含在区块中,您就成功对提案投票了!此时,您可以使用 rocketpool pdao proposal details <proposal-id> 查看提案的状态。提案需要达到 proposal.quorum 所需投票权和多数赞成投票权才能成功。

Voting power required:  140970562215
Voting power for:       197980809837
Voting power against:   0
Voting power abstained: 0
Voting power against:   0
Node has voted:         In Favor

要使上面的示例通过,投票权需要超过 140970562215 投票权的法定人数。有 197980809837 投票权赞成,没有反对或弃权的投票。该提案已准备好成功,并准备在 proposal.vote.phase2.time 结束时执行。

执行成功的提案

恭喜!您的提案已通过!现在剩下的就是执行提案。请记住,任何人都可以成为提案的执行者。要执行成功的提案,请输入命令:

rocketpool pdao execute

选择一个选项将提示您发送交易。一旦此交易被包含在区块中,更改将应用于 Rocket Pool 协议!

Please select a proposal to execute:
1: All available proposals
2: proposal 71 (invite test-member (0xBdbcb42DD8E39323a395B2B72d2c8E7039f1F145) to the security council)',
proposalSecurityInvite(test-member,0xBdbcb42DD8E39323a395B2B72d2c8E7039f1F145)

索取保证金和奖励

提议者或挑战者可以在提案结束时索取他们的保证金。根据提案的结果,提议者或挑战者可能能够也可能无法索取他们的 proposal.bondproposal.challenge.bond

以下是一些规则,规定了可以索取保证金的条件:

  • 如果提案被击败,提议者没收其保证金,该保证金在促成提案失败的挑战者之间按比例分配。所有其他挑战者仅收回他们的保证金。
  • 促成提案失败意味着挑战者提交了一个索引,后来被提议者无法回应挑战证明是不正确的。可能有多个不正确的索引,但只有那些导致提案失败的索引共享奖励。所有其他挑战者仅收回他们的保证金。
  • 如果挑战者挑战节点,提议者做出回应,并且提案没有被击败。提议者可以从无效挑战中索取挑战保证金。
  • 如果提案被击败,提议者没收其保证金,该保证金在促成提案失败的挑战者之间按比例分配。

使用此命令索取保证金:

rocketpool pdao claim-bonds

这将显示您有资格从中索取保证金的每个提案。您可以从指定的提案中索取保证金,也可以从所有符合条件的提案中索取保证金和奖励。

Please select a proposal to unlock bonds / claim rewards from:
1: All available proposals
2: Proposal 42 (proposer: true, unlockable: 21.00 RPL, rewards: 0.00 RPL)
3: Proposal 43 (proposer: true, unlockable: 21.00 RPL, rewards: 0.00 RPL)
4: Proposal 44 (proposer: true, unlockable: 21.00 RPL, rewards: 0.00 RPL)
5: Proposal 46 (proposer: true, unlockable: 21.00 RPL, rewards: 0.00 RPL)
6: Proposal 47 (proposer: true, unlockable: 21.00 RPL, rewards: 0.00 RPL)
7: Proposal 48 (proposer: true, unlockable: 21.00 RPL, rewards: 0.00 RPL)
8: Proposal 49 (proposer: true, unlockable: 21.00 RPL, rewards: 0.00 RPL)

选择一个选项后,系统将提示您网络的当前 gas 成本建议;确认您的 gas 价格选择并按照其余提示操作。

+============== Suggested Gas Prices ==============+
| Avg Wait Time |  Max Fee  |    Total Gas Cost    |
| 15 Seconds    | 26 gwei   | 0.1591 to 0.2387 ETH |
| 1 Minute      | 21 gwei   | 0.1261 to 0.1891 ETH |
| 3 Minutes     | 21 gwei   | 0.1261 to 0.1891 ETH |
| >10 Minutes   | 21 gwei   | 0.1261 to 0.1891 ETH |
+==================================================+

These prices include a maximum priority fee of 2.00 gwei.
Please enter your max fee (including the priority fee) or leave blank for the default of 21 gwei:


Using a max fee of 21.00 gwei and a priority fee of 2.00 gwei.
Are you sure you want to claim bonds and rewards from 7 proposals? [y/n]

请注意,如果您选择第一个选项来索取所有可用提案,它们将分别执行而不是作为一笔交易。

创建重复国库支出

您需要准备一些输入来创建重复国库支出:

  • 合约名称
  • 接收者的地址
  • 每期发送的 RPL 数量
  • 重复支付的开始时间(作为 UNIX 时间戳)
  • 每个支付期的长度(以小时/分钟/秒为单位,例如 168h0m0s)
  • 支付期数
信息

接收者需要记录合约名称以索取付款。不过不用担心,此信息已存储,可以使用命令 rocketpool pdao proposals details <proposal-id> 检索

要提出设置重复国库支出的提案,请使用以下 smartnode 命令并按照提示操作:

rocketpool pdao propose recurring-spend

以下是所有内容的汇总:

Please enter a contract name for this recurring payment:
test-recurring-spend

Please enter a recipient address for this recurring payment:
0x681B8BBf08708e64694005c7Dc307b381b4D1A7D

Please enter an amount of RPL to send to 0x681B8BBf08708e64694005c7Dc307b381b4D1A7D per period:
1

Your value will be multiplied by 10^18 to be used in the contracts, which results in:

[1000000000000000000]

Please make sure this is what you want and does not have any floating-point errors.

Is this result correct? [y/n]
y

Please enter the time that the recurring payment will start (as a UNIX timestamp):
1717935233

The provided timestamp corresponds to 2024-06-09 12:13:53 +0000 UTC - is this correct? [y/n]
y

Please enter the length of each payment period in hours / minutes / seconds (e.g., 168h0m0s):
720h

Please enter the total number of payment periods:
24

输入所有必需的输入后,将提出创建重复支付的提案。当 pDAO 通过并执行此提案时,接收者将从 2024-06-09 12:13:53 +0000 UTC 开始每 720 小时分配 1 RPL,总共 24 次支付

索取重复国库支出

索取重复支付应该非常简单!导航到我们的前端工具这里执行此操作。如果您在 Hoodi 测试网上尝试此操作,请使用链接。

进入网站后,单击连接钱包按钮。请阅读并接受服务条款和隐私政策,这将启用不同的连接方式,然后单击连接 metamask

MetaMask 将提示您选择一个帐户连接到网站。登录后,您需要输入合约名称。这样做将显示所有相关详细信息。请确保您仔细检查接收者的地址。任何人都可以调用索取函数,但每个支付合约都将有一个指定的接收者来分发 RPL。

您可以随时索取付款,您只会获得截至最近期间的总未索取 RPL。或者,您可以等到所有期间都过去后一次性收集所有款项并节省 gas。

准备就绪后,只需点击大橙色索取按钮,然后在 metamask(或您喜欢的钱包)中查看交易。完成后,一切就绪!