オンチェーン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を持つことが要件であることに注意してください。
このコマンドは、以下のプロンプトを表示します。注意深く読んでください:
directと応答すると、投票権がノードに初期化され、Protocol DAOプロポーザルに直接投票できるようになります。delegateと応答すると、同じトランザクション内で投票の初期化と委任先の設定を行うことで、ガスを節約できます。
これは一度だけ行う必要があります。ノードの初期スナップショット情報を設定します。投票を初期化した後、実行されるすべてのアクションによって、ノードのスナップショット情報が更新されます。投票権が初期化されたら、次のsmartnodeコマンドを使用して、投票権がどれだけあるかを確認できます:
新しいプロポーザルが作成されると、プロポーザルとともに、ネットワークの投票権と委任情報のスナップショットを表す投票ツリーが作成されます。これは、投票を初期化する前にプロポーザルが提起された場合、ノードの投票権がプロポーザルに含まれないことを意味します。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として使用する意図を示しています。
使用しているネットワークを以下のタブから選択してください。
ノードの秘密鍵をホットウォレットに読み込まないでください。signalling addressとして別のアカウントを選択してください。signalling addressを設定した後、ノードの投票権を使用してsnapshotで投票できます。
まず、MetaMask、WalletConnect、またはウェブサイトがサポートするその他の方法を使用して、signalling addressとして使用したいアドレスをウェブサイトに接続します。次に、ノードアドレスを検索するためのダイアログが表示されます。
次に、ノードアドレスを入力し、オレンジ色の「Find」ボタンをクリックします。これにより、アドレスが登録されたノードかどうかがチェックされ、次のステップに進みます。
これを行う前に、正しいノードアドレスを持っていることを確認してください! ノードのアドレスを確認する必要がある場合は、rocketpool node statusコマンドを使用してCLI経由ですばやく取得できます。
サインインしてノードアドレスを確認すると、Snapshot signalling addressが表示されます。これは、サイトにサインインしたアカウントと同じである必要があります。続行する前に、これが正しいことを再確認してください。目的のアカウントにサインインしていることを確信したら、オレンジ色の「Sign Message」ボタンをクリックします。ウォレット拡張アプリで次のメッセージに署名するプロンプトが表示されます:
署名にはガスはかかりませんが、設定にはガスがかかります。署名した後、フロントエンドはsmartnodeに貼り付けるコマンドを提供します。先に進み、smartnodeのCLIに貼り付けて、プロンプトに従ってください。コマンドは次のようになります:
CLIでこのメッセージが表示されたら、すべて設定完了です!
誤ってサイトを閉じたり、コマンドを見失ったりしても心配しないでください。手順を繰り返し、同じノードアドレスとsignalling addressを使用して再度署名するだけです。フロントエンドはethersライブラリのsigner.Signmessage()を使用しており、同じ入力が与えられると署名は決定論的です。
詳細については、こちらをクリックしてください。
signalling addressをクリアするのは非常に簡単で、CLIで次のコマンドを使用するだけです:
RPLロックの許可
プロポーザルへの投票にのみ関心がある場合は、この手順を無視できます。RPLロックの許可は、プロポーザルを提案またはチャレンジしたい人にのみ必要です。
提案とチャレンジにはRPLロックが必要です。デフォルトでは、任意の目的でのRPLのロックは無効になっています。Node Operatorは、ノードまたはプライマリ出金アドレスからRPLのロックを有効にすることで、ガバナンス活動の実行にオプトインします。Smartnodeでこのコマンドを使用して実行できます:
これにより、ガバナンスプロポーザルの作成またはチャレンジ時にRPLのロックを許可するようにプロンプトが表示されます。逆に、次のコマンドを使用してRPLロックをオプトアウトできます:
ロックされたRPLは、報酬、投票、担保要件の目的で、通常のステーキングされたRPLと同じように機能します。 ロックされたRPLは、RPLを引き出すためのしきい値にはカウントされません。
投票権の委任
Node Operatorは、投票権を別のNode Operatorに委任することを選択できます。唯一の要件は、委任先が登録されたノードであることです。
別のノードにオンチェーン投票権を委任するには、次のコマンドを使用します:
投票権を別のNode Operatorに委任した場合、委任先アドレスを自分のノードのアドレスに設定することでリセットできます。
- プロポーザルのフェーズ1中:VotersとDelegatesはプロポーザルに投票できます。
- プロポーザルのフェーズ2中:投票を委任したNode Operatorsは、委任先の投票に同意しない場合、投票を覆す機会を得ます。
委任された投票権を持つNode Operatorの場合、委任された投票権がプロポーザルにカウントされるためには、投票フェーズ1で投票する必要があります。フェーズ1での投票は、ローカル投票権 + 委任された投票権の価値があります。フェーズ2での投票は、ローカル投票権のみの価値があります。
プロポーザルの作成
提案する資格を得るには、ノードはいくつかの要件を満たす必要があります:
- スナップショットに含まれている(投票の初期化またはHouston後の登録による)
- 少なくとも1つのminipoolを持っている
- ゼロでない投票権を持っている
- RPLロックを許可している
- プロポーザルボンドよりも大きいRPLステーク(すでにロックされているRPLを除く)を持っている
プロポーザルは、パラメータを変更し、プロトコルレベルでコードを実行するために存在します! プロポーザルがオンチェーンで作成される前に、ガバナンスプロセスを通じて議論と合意が必要です。
コマンドrocketpool pdao proposeを使用して、オプションのメニューを表示します
これらの各コマンドは、目的のプロポーザルを作成するための入力のリストを求めます。このガイドでは、例として、ノードをsecurity councilに招待します。security councilにノードを招待するプロポーザルを提起するには、次のコマンドを使用します:
この手順は、プロポーザルのタイプによってわずかに異なることに注意してください。この特定のコマンド:rocketpool pdao propose security-council inviteは、IDとメンバーアドレスを入力するようにプロンプトを表示します。
これがブロックに含まれると、pDAOプロポーザルが作成されます! プロポーザルは作成時にvote delay periodに入ります。
プロポーザルの状態の表示
すべてのプロポーザルにはproposalIDが割り当てられます。この場合、0xBdbc...をsecurity councilに招待するプロポーザルはID 71で表されます。プロポーザルの状態を表示する方法はいくつかあります。1つの方法は、すべてのpdaoプロポーザルのリストと状態(保留中、成功、実行済みなど)を表示します。2つ目の方法は、特定のプロポーザルに関する詳細情報を表示します。
すべてのプロポーザルをリストするには、次のコマンドを使用します:
これにより、すべてのプロポーザルとその状態のリストが表示されます
ここでは、プロポーザルinvite test-memberのIDが71で、保留中の状態にあることがわかります。この状態では、チャレンジャーが提案者によって提供されたmerkle pollard(投票権の計算に使用)の有効性に異議を唱えることができます。proposal.vote.delay.timeが終了すると、プロポーザルはアクティブな投票フェーズに移行します。リフレッシャーとしてプロポーザルのライフサイクルを確認してください。
プロポーザルへの投票
投票期間中、Node OperatorsとDelegatesは4つのオプションのいずれかで投票できます:
投票権は、選択したオプションに適用されます。投票権は「有効なRPLステーク」の関数です。 より詳細な説明は、rocketpool-researchリポジトリで見つけることができます。
委任された投票権を持つNode Operatorの場合、委任された投票権がプロポーザルにカウントされるためには、投票フェーズ1で投票する必要があります。フェーズ1での投票は、ローカル投票権 + 委任された投票権の価値があります。フェーズ2での投票は、ローカル投票権のみの価値があります。ノードはプロポーザルに対して一度だけ投票できることに注意してください。慎重に選択してください。
投票するには、このコマンドを使用します:
アクティブな投票フェーズに少なくとも1つのプロポーザルがある場合、投票するプロポーザルを選択するようにプロンプトが表示されます。 メニューには、ノードが投票できるすべてのプロポーザルが表示されます:
オプションを選択すると、投票方法を尋ねられます。
オプションを選択すると、投票権が表示され、トランザクションを送信するようにプロンプトが表示されます:
トランザクションがブロックに含まれたら、プロポーザルへの投票が完了しました! この時点で、rocketpool pdao proposal details <proposal-id>を使用してプロポーザルの状態を表示できます。プロポーザルが成功するには、proposal.quorum 投票権が必要に達し、過半数の投票権が賛成が必要です。
上記の例が通過するには、投票権が定足数140970562215投票権を超える必要があります。賛成の投票権が197980809837あり、反対または棄権の投票はありません。プロポーザルは成功する準備ができており、proposal.vote.phase2.timeの終わりまでに実行の準備が整います。
成功したプロポーザルの実行
おめでとうございます! プロポーザルが通過しました! あとは、プロポーザルを実行するだけです。誰でもプロポーザルの実行者になれることに注意してください。成功したプロポーザルを実行するには、次のコマンドを入力します:
オプションを選択すると、トランザクションを送信するようにプロンプトが表示されます。このトランザクションがブロックに含まれると、Rocket Poolプロトコルに変更が適用されます!
ボンドと報酬の請求
提案者またはチャレンジャーは、プロポーザルの終了時にボンドを請求できます。プロポーザルの結果によって、提案者またはチャレンジャーはproposal.bondとproposal.challenge.bondを請求できる場合とできない場合があります。
ボンドを請求できる条件を決定するいくつかのルールがあります:
- プロポーザルが敗北した場合、提案者はボンドを没収し、プロポーザルの敗北に貢献したチャレンジャーの間で比例的に分配されます。他のすべてのチャレンジャーは、ボンドのみを取り戻します。
- プロポーザルの敗北に貢献するということは、チャレンジャーが後で提案者がチャレンジに応答できないことによって誤りであることが証明されたインデックスを提出したことを意味します。複数の誤ったインデックスが存在する可能性がありますが、プロポーザルの敗北をもたらしたものだけが報酬を共有します。他のすべてのチャレンジャーは、ボンドのみを取り戻します。
- チャレンジャーがノードにチャレンジし、提案者が応答し、プロポーザルが敗北しなかった場合。提案者は、無効なチャレンジからチャレンジボンドを請求できます。
- プロポーザルが敗北した場合、提案者はボンドを没収し、プロポーザルの敗北に貢献したチャレンジャーの間で比例的に分配されます。
ボンドを請求するには、このコマンドを使用します:
これにより、ボンドを請求する資格のあるすべてのプロポーザルが表示されます。指定されたプロポーザルからボンドを請求するか、すべての適格なプロポーザルからボンドと報酬を請求できます。
オプションを選択すると、ネットワークの現在のガスコストの推奨事項が表示されます。ガス価格の選択を確認し、残りのプロンプトに従ってください。
最初のオプションを選択してすべての利用可能なプロポーザルを請求する場合、それぞれが個別に実行され、1つのトランザクションとして実行されないことに注意してください。
定期的な財務支出の作成
定期的な財務支出を作成するには、いくつかの入力を準備する必要があります:
- コントラクト名
- 受信者のアドレス
- 期間ごとに送信するRPLの量
- 定期支払いの開始時刻(UNIXタイムスタンプとして)
- 各支払い期間の長さ(時間/分/秒)(例:168h0m0s)
- 支払い期間の数
受信者は、支払いを請求するためにコントラクト名をメモしておく必要があります。ただし、この情報は保存され、コマンドrocketpool pdao proposals details <proposal-id>を使用して取得できるので心配しないでください
定期的な財務支出を設定するプロポーザルを提起するには、次のsmartnodeコマンドを使用し、プロンプトに従ってください:
すべてをまとめると次のようになります:
必要なすべての入力を入力すると、定期支払いを作成するプロポーザルが提起されます。pDAOがこのプロポーザルを通過して実行すると、受信者には2024-06-09 12:13:53 +0000 UTCから始まり、720時間ごとに合計24回の支払いで1 RPLが割り当てられます。
定期的な財務支出の請求
定期支払いの請求は非常に簡単です! こちらのフロントエンドツールに移動して実行してください。Hoodi testnetで試している場合は、代わりにこのリンクを使用してください。
サイトにアクセスしたら、connect walletボタンをクリックします。利用規約とプライバシーポリシーをお読みいただき、同意してください。これにより、さまざまな接続方法が有効になります。次に、metamaskに接続をクリックします。
MetaMaskは、ウェブサイトに接続するアカウントを選択するようにプロンプトを表示します。サインインした後、コントラクト名を入力する必要があります。これを行うと、すべての関連する詳細が表示されます。受信者のアドレスを再確認してください。誰でもクレーム関数を呼び出すことができますが、各支払いコントラクトには、RPLを分散するための指定された受信者がいます。
いつでも支払いを請求できます。最新の期間までの未請求のRPL合計を受け取ります。 または、すべての期間が経過するまで待って、一度にすべてを収集し、ガスを節約できます。
準備ができたら、大きなオレンジ色のクレームボタンを押して、metamask(または好みのウォレット)でトランザクションを確認してください。完了したら、すべて完了です!