オンチェーンpDAO提案への参加

投票権がゼロでないノードは、いつでもpDAO提案を作成または参加できます。提案は以下のタイプのいずれかです。

  • pDAO設定の変更
  • 一時的な財務支出
  • 継続的な財務支出(管理委員会)
  • セキュリティ評議会のメンバーシップ

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

ガバナンスプロセス

提案がオンチェーンになる前に、ガバナンスプロセスによって予測される必要があります。

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

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

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

前提条件

先に進む前に、提案のライフサイクルをお読みください。すべての投票期間と各期間中に実行できるアクションの違いを説明します。

このページの残りの部分では、オンチェーンpDAO提案に参加するために必要な手順を説明します。

投票の初期化

Houstonアップグレード前に登録したノードオペレーターの場合、投票権のロックを解除するために投票を初期化する必要があります。投票権を持つためには、少なくとも1つのミニプールが必要であることに注意してください。

rocketpool pdao initialize-voting

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

投票権の初期化ありがとうございます!

2つのオプションがあります。

1. 直接投票(自分自身に投票権を委任)
   提案に直接投票できるようになり、
   プロトコルの方向性を個人的に形作ることができます。

2. 投票を委任
   信頼できる誰かに投票権を委任し、
   あなたの代わりに投票する権限を与えます。上書きするオプションがあります。

既存の公開代理人のリストは https://delegates.rocketpool.net で確認できますが、
任意のノードアドレスに委任できます。

これらの仕組みの詳細については、/ja/legacy/houston/participate#participating-in-on-chain-pdao-proposals を参照してください。

続行するには、`direct` または `delegate` と入力してください。
  • directと応答すると、投票権があなたのノードに初期化され、プロトコルDAO提案に直接投票できるようになります。
  • delegateと応答すると、同じトランザクション内で投票を初期化し、代理人を設定することで、少しガスを節約する機会があります。

これを行う必要があるのは1回だけです。ノードの初期スナップショット情報を設定します。投票を初期化した後、実行されるすべてのアクションがノードのスナップショット情報を更新します。投票権が初期化されたら、以下のsmartnodeコマンドを使用して、保有している量を確認できます。

rocketpool pdao status
注意

新しい提案が作成されるたびに、ネットワークの投票権と代理人情報のスナップショットを表す投票ツリーが新しい提案と合わせて作成されます。つまり、投票を初期化する前に作成された提案には、あなたのノードの投票権は含まれません。rocketpool pdao statusは最新のブロックでのノードの投票権を表示しますが、これは特定の提案での投票権を表していない場合があります。

自動投票権初期化

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

自動初期化投票権ガス閾値は、この自動トランザクションの上限(gwei単位)です。閾値を0に設定することで、このタスクをオプトアウトできます。ノードがHoustonアップグレード後に登録された場合、または投票権が既に有効になっている場合は、オプトアウトしてください。

Snapshotシグナリングアドレスの設定

Snapshotシグナリングアドレスを設定すると、ノードキーをホットウォレットに公開することなく、ブラウザまたはモバイルデバイスでSnapshotの投票に参加できるようになります。

準備する必要があるものがいくつかあります。

  • ノードのアドレス
  • Snapshot投票に使用したいアドレス(シグナリングアドレス)

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

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

Hoodi Testnet
Mainnet
Hoodiテストネットで試している場合は、このページで署名できます。https://testnet.node.rocketpool.net/signalling-address
警告

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

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

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

ヒント

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

サインインしてノードアドレスを確認すると、Snapshotシグナリングアドレスが表示されます。これはサイトにサインインしたアカウントと同じである必要があります。続行する前に、これが正しいことを再確認してください。希望のアカウントにサインインしていることを確信したら、オレンジ色の「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`
ヒント

誤ってサイトを閉じたり、コマンドを見失ったりしても心配しないでください。単に手順を繰り返して、同じノードアドレスとシグナリングアドレスを使用して再度署名できます。フロントエンドは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後の登録による)
  • 少なくとも1つのミニプールが必要
  • ゼロでない投票権を持つ
  • 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

これらの各コマンドは、希望する提案を作成するための入力のリストを表示します。このガイドでは、例としてセキュリティ評議会にノードを招待します。セキュリティ評議会にノードを招待する提案を作成するには、次のコマンドを使用します。

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で表されます。提案の状態を表示する方法はいくつかあります。1つの方法は、すべてのpdao提案とその状態(保留中、成功、実行済みなど)のリストを表示します。2つ目の方法は、特定の提案の詳細情報を表示します。

提案リストの表示
提案の詳細表示

すべての提案をリストするには、以下のコマンドを使用します。

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で、保留中の状態にあることがわかります。この状態では、チャレンジャーが提案者によって提供されたマークルポラード(投票権を計算するために使用される)の妥当性に異議を唱えることができます。proposal.vote.delay.timeが終了すると、提案はアクティブな投票フェーズに移行します。復習のために、提案のライフサイクルを自由に確認してください。

提案への投票

投票期間中、ノードオペレーター代理人は4つのオプションのいずれかで投票できます。

1. Abstain: 投票者の投票権は定足数に貢献しますが、提案に賛成でも反対でもありません。
2. For: 投票者は提案の実行に賛成票を投じます。
3. Against: 投票者は提案の実行に反対票を投じます。
4. Veto: 投票者は提案に反対票を投じると同時に、提案がスパムまたは悪意があると判断していることを示します。

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

注意

委任された投票権を持つノードオペレーターの場合、委任された投票権を提案にカウントするには、投票フェーズ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)
  • 支払い期間の数
情報

受取人は支払いを請求するために契約名をメモしておく必要があります。ただし、この情報は保存されており、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テストネットで試している場合は、代わりにこのリンクを使用してください。

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

MetaMaskは、ウェブサイトに接続するアカウントを選択するようプロンプトを表示します。サインインしたら、契約名を入力する必要があります。そうすると、関連するすべての詳細が表示されます。受取人のアドレスを再確認してください。誰でも請求関数を呼び出すことができますが、各支払い契約には、RPLを分配する指定された受取人がいます。

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

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