オンチェーンpDAOプロポーザルへの参加

投票権がゼロでないノードは、いつでもpDAOプロポーザルを提起または参加できます。プロポーザルは次のタイプのいずれかです:

  • pDAO設定の変更
  • 一時的な財務支出
  • 定期的な財務支出(管理委員会)
  • Security Councilメンバーシップ

詳細と根拠については、プロポーザルタイプを参照してください。 pDAOプロポーザルは、プロトコルレベルで変更を実行するために存在するオンチェーンエンティティであることを理解することが重要です。

ガバナンスプロセス

プロポーザルは、オンチェーンに到達する前に、ガバナンスプロセスによって予測される必要があります。

Rocket Poolプロトコルへの変更は、厳格でありながら透明性のあるガバナンスプロセスを使用して提案、投票、実行されます。プロセスは、Discordコミュニティ内でのアイデアの非公式な議論から始まります。このアイデアは、Discordの#governanceチャンネルとDAO Forumでの正式な議論に進み、Rocket Pool Improvement Proposal (RPIP)の準備のために、徹底的な調査、モデリング、精査を受けます。その後、RPIPドラフトが作成され、指定されたRPIPレビュアーによってレビューされ、DAOへの提示に向けて品質と準備状況が確認されます。ドラフトプロポーザルは、さらなるレビュー、フィードバック、必要な変更の組み込みのために、フォーラムでDAOに提示されます。コミュニティの意見に基づいてプロポーザルが洗練されると、RPIPテキストを最終化する準備ができているかを測るために、DAOフォーラムで投票が行われます。投票が通過し、コミュニティの承認を示すと、RPIPは最終版としてマークされ、snapshotを介して実施されるProtocol DAO投票の準備が整います。

ここから、Oracle DAOがオンチェーンプロポーザルを提起します。Protocol DAO、Oracle DAO、コミュニティがプロポーザルをレビューできる期間があります。合意が得られると、プロポーザルが実行され、プロトコルに変更が適用されます。

このプロセスの便利な視覚的表現は、Rocket Poolウェブサイトで見つけることができます。

前提条件

続行する前に、プロポーザルのライフサイクルをお読みください。すべての投票期間の違いと、各期間中に実行できるアクションについて説明します。

このページの残りの部分では、オンチェーンpDAOプロポーザルへの参加に必要な手順を説明します。

投票の初期化

Houston upgradeの前に登録したNode Operatorの場合、投票権のロックを解除するために投票を初期化する必要があります。投票権を持つには、少なくとも1つのminipoolを持つことが要件であることに注意してください。

rocketpool pdao initialize-voting

このコマンドは、以下のプロンプトを表示します。注意深く読んでください:

Thanks for initializing your voting power!

You have two options:

1. Vote directly (delegate vote power to yourself)
   This will allow you to vote on proposals directly,
   allowing you to personally shape the direction of the protocol.

2. Delegate your vote
   This will delegate your vote power to someone you trust,
   giving them the power to vote on your behalf. You will have the option to override.

You can see a list of existing public delegates at https://delegates.rocketpool.net,
however, you can delegate to any node address.

Learn more about how this all works via: /ja/pdao/participate#participating-in-on-chain-pdao-proposals

Please type `direct` or `delegate` to continue:
  • directと応答すると、投票権がノードに初期化され、Protocol DAOプロポーザルに直接投票できるようになります。
  • delegateと応答すると、同じトランザクション内で投票の初期化と委任先の設定を行うことで、ガスを節約できます。

これは一度だけ行う必要があります。ノードの初期スナップショット情報を設定します。投票を初期化した後、実行されるすべてのアクションによって、ノードのスナップショット情報が更新されます。投票権が初期化されたら、次のsmartnodeコマンドを使用して、投票権がどれだけあるかを確認できます:

rocketpool pdao status
NOTE

新しいプロポーザルが作成されると、プロポーザルとともに、ネットワークの投票権と委任情報のスナップショットを表す投票ツリーが作成されます。これは、投票を初期化する前にプロポーザルが提起された場合、ノードの投票権がプロポーザルに含まれないことを意味します。rocketpool pdao statusは、最新ブロックでのノードの投票権を表示しますが、特定のプロポーザルでの投票権を表すものではない場合があります。

投票権の自動初期化

Smartnodeバージョン1.13.8は、まだ投票権を初期化していないノードで自動的に投票権を初期化するように設計された新機能Auto Initialize Vote Powerを導入しています。自動的に初期化された投票権は自己委任されます。この機能は、rocketpool service configを実行し、Smartnode and TX Feesセクションに移動することで、Smartnode設定で設定できます。

Auto-Init Vote Power Gas Thresholdは、この自動トランザクションの制限(gwei単位)です。しきい値を0に設定することで、このタスクをオプトアウトできます。ノードがHouston upgradeの後に登録された場合、または投票権がすでに有効になっている場合は、オプトアウトしてください。

Snapshot Signalling Addressの設定

Snapshot signalling addressを設定すると、ノードキーをホットウォレットに公開することなく、ブラウザまたはモバイルデバイスでsnapshot投票に参加できます。

準備すべきことがいくつかあります:

  • ノードのアドレス
  • snapshot投票に使用したいアドレス(signalling address)

ノードのアドレスが新しいアドレスに委任できることを示すメッセージに署名します。このメッセージは、ウォレットアドレスをSnapshot signalling addressとして使用する意図を示しています。

使用しているネットワークを以下のタブから選択してください。

Hoodi Testnet
Mainnet
Hoodi testnetで試している場合は、このページで署名できます: https://testnet.node.rocketpool.net/signalling-address
WARNING

ノードの秘密鍵をホットウォレットに読み込まないでください。signalling addressとして別のアカウントを選択してください。signalling addressを設定した後、ノードの投票権を使用してsnapshotで投票できます。

まず、MetaMask、WalletConnect、またはウェブサイトがサポートするその他の方法を使用して、signalling addressとして使用したいアドレスをウェブサイトに接続します。次に、ノードアドレスを検索するためのダイアログが表示されます。

次に、ノードアドレスを入力し、オレンジ色の「Find」ボタンをクリックします。これにより、アドレスが登録されたノードかどうかがチェックされ、次のステップに進みます。

TIP

これを行う前に、正しいノードアドレスを持っていることを確認してください! ノードのアドレスを確認する必要がある場合は、rocketpool node statusコマンドを使用してCLI経由ですばやく取得できます。

サインインしてノードアドレスを確認すると、Snapshot signalling addressが表示されます。これは、サイトにサインインしたアカウントと同じである必要があります。続行する前に、これが正しいことを再確認してください。目的のアカウントにサインインしていることを確信したら、オレンジ色の「Sign Message」ボタンをクリックします。ウォレット拡張アプリで次のメッセージに署名するプロンプトが表示されます:

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

署名にはガスはかかりませんが、設定にはガスがかかります。署名した後、フロントエンドは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`
TIP

誤ってサイトを閉じたり、コマンドを見失ったりしても心配しないでください。手順を繰り返し、同じノードアドレスとsignalling addressを使用して再度署名するだけです。フロントエンドはethersライブラリのsigner.Signmessage()を使用しており、同じ入力が与えられると署名は決定論的です。 詳細については、こちらをクリックしてください。

signalling addressをクリアするのは非常に簡単で、CLIで次のコマンドを使用するだけです:

rocketpool pdao clear-signalling-address

RPLロックの許可

プロポーザルへの投票にのみ関心がある場合は、この手順を無視できます。RPLロックの許可は、プロポーザルを提案またはチャレンジしたい人にのみ必要です。

提案とチャレンジにはRPLロックが必要です。デフォルトでは、任意の目的でのRPLのロックは無効になっています。Node Operatorは、ノードまたはプライマリ出金アドレスからRPLのロックを有効にすることで、ガバナンス活動の実行にオプトインします。Smartnodeでこのコマンドを使用して実行できます:

rocketpool node allow-rpl-locking

これにより、ガバナンスプロポーザルの作成またはチャレンジ時にRPLのロックを許可するようにプロンプトが表示されます。逆に、次のコマンドを使用してRPLロックをオプトアウトできます:

rocketpool node deny-rpl-locking
NOTE

ロックされたRPLは、報酬、投票、担保要件の目的で、通常のステーキングされたRPLと同じように機能します。 ロックされたRPLは、RPLを引き出すためのしきい値にはカウントされません。

投票権の委任

Node Operatorは、投票権を別のNode Operatorに委任することを選択できます。唯一の要件は、委任先が登録されたノードであることです。

別のノードにオンチェーン投票権を委任するには、次のコマンドを使用します:

rocketpool pdao set-voting-delegate `address`
NOTE

投票権を別のNode Operatorに委任した場合、委任先アドレスを自分のノードのアドレスに設定することでリセットできます。

  • プロポーザルのフェーズ1中:VotersDelegatesはプロポーザルに投票できます。
  • プロポーザルのフェーズ2中:投票を委任したNode Operatorsは、委任先の投票に同意しない場合、投票を覆す機会を得ます。

委任された投票権を持つNode Operatorの場合、委任された投票権がプロポーザルにカウントされるためには、投票フェーズ1で投票する必要があります。フェーズ1での投票は、ローカル投票権 + 委任された投票権の価値があります。フェーズ2での投票は、ローカル投票権のみの価値があります。

プロポーザルの作成

提案する資格を得るには、ノードはいくつかの要件を満たす必要があります:

  • スナップショットに含まれている(投票の初期化またはHouston後の登録による)
  • 少なくとも1つのminipoolを持っている
  • ゼロでない投票権を持っている
  • RPLロックを許可している
  • プロポーザルボンドよりも大きいRPLステーク(すでにロックされているRPLを除く)を持っている

プロポーザルは、パラメータを変更し、プロトコルレベルでコードを実行するために存在します! プロポーザルがオンチェーンで作成される前に、ガバナンスプロセスを通じて議論と合意が必要です。

コマンドrocketpool pdao proposeを使用して、オプションのメニューを表示します

COMMANDS:
   rewards-percentages, rp      Propose updating the RPL rewards allocation percentages for node operators, the Oracle DAO, and the Protocol DAO
   one-time-spend, ots          Propose a one-time spend of the Protocol DAO's treasury
   recurring-spend, rs          Propose a recurring spend of the Protocol DAO's treasury
   recurring-spend-update, rsu  Propose an update to an existing recurring spend plan
   security-council, sc         Modify the security council
   setting, s                   Make a Protocol DAO setting proposal

これらの各コマンドは、目的のプロポーザルを作成するための入力のリストを求めます。このガイドでは、例として、ノードをsecurity councilに招待します。security councilにノードを招待するプロポーザルを提起するには、次のコマンドを使用します:

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プロポーザルが作成されます! プロポーザルは作成時にvote delay periodに入ります。

プロポーザルの状態の表示

すべてのプロポーザルにはproposalIDが割り当てられます。この場合、0xBdbc...をsecurity councilに招待するプロポーザルはID 71で表されます。プロポーザルの状態を表示する方法はいくつかあります。1つの方法は、すべてのpdaoプロポーザルのリストと状態(保留中、成功、実行済みなど)を表示します。2つ目の方法は、特定のプロポーザルに関する詳細情報を表示します。

Viewing a List of Proposals
Viewing Proposal Details

すべてのプロポーザルをリストするには、次のコマンドを使用します:

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が終了すると、プロポーザルはアクティブな投票フェーズに移行します。リフレッシャーとしてプロポーザルのライフサイクルを確認してください。

プロポーザルへの投票

投票期間中、Node OperatorsDelegatesは4つのオプションのいずれかで投票できます:

1. Abstain: 投票者の投票権は定足数に貢献しますが、プロポーザルに賛成でも反対でもありません。
2. For: 投票者はプロポーザルの実行に賛成票を投じます。
3. Against: 投票者はプロポーザルの実行に反対票を投じます。
4. Veto: 投票者はプロポーザルに反対票を投じ、プロポーザルをスパムまたは悪意のあるものと見なしていることを示します。

投票権は、選択したオプションに適用されます。投票権は「有効なRPLステーク」の関数です。 より詳細な説明は、rocketpool-researchリポジトリで見つけることができます。

NOTE

委任された投票権を持つNode Operatorの場合、委任された投票権がプロポーザルにカウントされるためには、投票フェーズ1で投票する必要があります。フェーズ1での投票は、ローカル投票権 + 委任された投票権の価値があります。フェーズ2での投票は、ローカル投票権のみの価値があります。ノードはプロポーザルに対して一度だけ投票できることに注意してください。慎重に選択してください。

投票するには、このコマンドを使用します:

rocketpool pdao proposals vote

アクティブな投票フェーズに少なくとも1つのプロポーザルがある場合、投票するプロポーザルを選択するようにプロンプトが表示されます。 メニューには、ノードが投票できるすべてのプロポーザルが表示されます:

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)

オプションを選択すると、ネットワークの現在のガスコストの推奨事項が表示されます。ガス価格の選択を確認し、残りのプロンプトに従ってください。

+============== 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]

最初のオプションを選択してすべての利用可能なプロポーザルを請求する場合、それぞれが個別に実行され、1つのトランザクションとして実行されないことに注意してください。

定期的な財務支出の作成

定期的な財務支出を作成するには、いくつかの入力を準備する必要があります:

  • コントラクト名
  • 受信者のアドレス
  • 期間ごとに送信するRPLの量
  • 定期支払いの開始時刻(UNIXタイムスタンプとして)
  • 各支払い期間の長さ(時間/分/秒)(例:168h0m0s)
  • 支払い期間の数
INFO

受信者は、支払いを請求するためにコントラクト名をメモしておく必要があります。ただし、この情報は保存され、コマンド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時間ごとに合計24回の支払い1 RPLが割り当てられます。

定期的な財務支出の請求

定期支払いの請求は非常に簡単です! こちらのフロントエンドツールに移動して実行してください。Hoodi testnetで試している場合は、代わりにこのリンクを使用してください。

サイトにアクセスしたら、connect walletボタンをクリックします。利用規約とプライバシーポリシーをお読みいただき、同意してください。これにより、さまざまな接続方法が有効になります。次に、metamaskに接続をクリックします。

MetaMaskは、ウェブサイトに接続するアカウントを選択するようにプロンプトを表示します。サインインした後、コントラクト名を入力する必要があります。これを行うと、すべての関連する詳細が表示されます。受信者のアドレスを再確認してください。誰でもクレーム関数を呼び出すことができますが、各支払いコントラクトには、RPLを分散するための指定された受信者がいます。

いつでも支払いを請求できます。最新の期間までの未請求のRPL合計を受け取ります。 または、すべての期間が経過するまで待って、一度にすべてを収集し、ガスを節約できます。

準備ができたら、大きなオレンジ色のクレームボタンを押して、metamask(または好みのウォレット)でトランザクションを確認してください。完了したら、すべて完了です!