スーパーノードプログラム⚓︎
スーパーノードプログラムは、ネットワークの安全性確保とアプリケーションへの信頼性の高いデータアクセス提供に貢献する、公開 NEM ノードに報酬を与えます。 すべての XEM はネメシスブロックで発行されたため、NEM には新規発行によるブロック報酬がありません。 スーパーノードプログラム用に XEM の一部が確保されています。
報酬の資格は毎日 4 ラウンドで確認され、6 時間ごとに 1 ラウンド実施されます。 その日の報酬を受け取るには、参加ノードが各ラウンドのすべてのテストに合格する必要があります。
テストは、中央で管理される コントローラー というスーパーノード監視サービスによって実施されます。 一部のテストでは、参加ノードと信頼できる 参照ノード を比較します。
参加ノードでは、NIS1 クライアントと同じマシン上で軽量アプリケーションの Node Servant も実行します。
Servant はスーパーノードプログラムのテストを実行し、その一部で使われる /nr/... エンドポイントを公開します。
資格テスト⚓︎
各テストラウンドには、次の確認が含まれます。
-
チェーン高:ノードは
/chain/heightGETAPI を通じて現在の高さを報告します。 高さが参照ノードより 4 ブロック以内の遅れであれば、テストに合格します。 -
チェーン部分:ノードは、最近のブロック 60 ~ 100 個からなるランダムなグループを
/local/chain/blocks-afterPOSTAPI を通じて提供します。 コントローラーはブロックの署名を検証し、そのブロックから計算した複合ハッシュを、参照ノードから同じ方法で計算したハッシュと比較します。 -
残高:ノードのメインアカウントには少なくとも 10,000 XEM が必要です。 コントローラーは参照ノードを経由して、
/account/get/forwardedGETAPI でこれを確認します。 -
計算能力:ノードは、ランダムなハッシュから公開鍵導出を 10,000 回繰り返し実行します。 最終的な公開鍵がコントローラーの結果と一致し、ラウンドトリップ全体が 5 秒以内であれば、テストに合格します。
-
バージョン:ノードは
/node/infoGETAPI を通じて NIS クライアントのバージョンを報告します。 バージョンが参照ノードのバージョンと同じか、それより新しければ、テストに合格します。 -
Ping:コントローラーは
/nr/task/pingAPI を通じて、ランダムなパートナーノードを 5 つ Servant に渡します。 Servant は各パートナーの/nr/pingAPI を 5 回呼び出します。 失敗する Ping が 1 回以下で、成功したラウンドトリップ時間の平均が 200 ms 未満であれば、テストに合格します。 -
帯域幅:コントローラーは Ping テストで最速だったパートナーとランダムなハッシュシードを、
/nr/task/bandwidthAPI を通じて Servant に渡します。 Servant とパートナーは同じ 30,000 ハッシュ計算を実行します。 両方のハッシュ結果が一致し、測定された転送速度が少なくとも 5 Mbit/s であれば、テストに合格します。 -
応答性:コントローラーは
/chain/heightGETAPI に 10 件のリクエストを送信します。 少なくとも 9 件のリクエストが成功し、すべてのリクエストが 1 秒以内に完了すれば、テストに合格します。 時間制限だけが不合格の理由である場合、コントローラーはこのテストを最大 4 回再試行します。
プログラムへの登録⚓︎
登録する前に、次の準備ができていることを確認してください。
-
NEM NanoWallet がインストールされていること。
-
少なくとも 10,010 XEM がある NEM アカウント。 プログラムへの参加には 10,000 XEM が必要で、これに加えて委任ハーベスティングと登録トランザクションの手数料として約 10 XEM が必要です。
-
メインアカウントで委任ハーベスティングが有効になっていること。 リモートアカウントは約 360 ブロック、つまり約 6 時間後に使用可能になります。 リモートアカウントの秘密鍵が使用可能になり次第、登録を開始できます。
-
同期済みのパブリックノード。 まだ持っていない場合は、ノードのインストールガイドに従ってください。
nis.shouldAutoHarvestOnBootプロパティがtrueに設定されているか、設定されていないことを確認してください。 -
安定したパブリック IP アドレスまたはドメイン名がノードに付与されていること。
リモートアカウントの秘密鍵を使用する
ノードと Servant の設定にはリモートアカウントの秘密鍵を使用します。 メインアカウントの秘密鍵は使用しないでください。
メイン秘密鍵はアカウントの資金を管理します。 リモートアカウントの秘密鍵は委任ハーベスティングだけを管理し、漏えいした場合は置き換えられます。
NEM NanoWallet でリモートアカウントの秘密鍵を見つけるには、Services、Delegated Harvesting、Manage Delegated Account の順に開きます。 Show delegated account keys を選択し、ウォレットのパスワードを入力してリモートアカウントの秘密鍵を表示します。
手動で行う⚓︎
Servant を設定する⚓︎
-
Node Servant をダウンロードします。
-
Servant のインストールフォルダーになるフォルダーにファイルを解凍します。 NIS1 のインストールフォルダーと同じである必要はありません。
servantフォルダーを開きます。 -
Servant の
config-user.propertiesファイルを開きます。 -
nem.hostをノードの静的 IP アドレスまたはドメイン名に設定します。 コントローラーが同じノードをテストできるよう、この値は安定していなければなりません。 -
servant.keyをリモートアカウントの秘密鍵に設定します。 -
ファイルを保存します。
-
Servant がスーパーノードプログラムのテストを受信できるよう、受信接続と送信接続用に TCP ポート 7880 を開きます。
Servant を起動する⚓︎
NIS を起動して同期させてから、次のコマンドで Servant を起動します。
Docker を使用する⚓︎
これらの手順は、Windows Subsystem for Linux を含む Linux システムでのみ動作します。
Servant を設定する⚓︎
ノードをDocker 用のインストールガイドの説明どおりに Docker でインストールした場合、Servant はすでにインストールされているため、設定するだけで済みます。
ノードを制御するの説明どおりに、実行中であれば NIS1 クライアントを停止します。
custom-configs フォルダー内で、次の操作を行います。
servant.config.properties.sampleファイルをservant.config.propertiesにコピーして編集します。 少なくともnem.hostとservant.keyプロパティの値を指定します。supervisord.conf.sampleファイルをsupervisord.confにコピーして編集します。[program:nis]セクションと[program:servant]セクションの両方でautostart=trueを設定します。
Servant を起動する⚓︎
これで、NIS1 クライアントを起動するたびに Servant も起動します。
次のコマンドで確認できます。
登録を送信する⚓︎
毎月の登録アドレスは、NEM コミュニティの各種チャンネルで告知されます。
NEM NanoWallet で登録する⚓︎
-
Services を開きます。
-
SuperNode Program を開きます。
-
Check & Enroll in Program を開きます。
-
Enroll in Program を選択します。
-
現在の登録アドレスとノードホストを入力します。
ホストは、ノードの
/node/infoGETエンドポイントが返すホストと一致していなければなりません。 -
登録トランザクションを送信します。
手動で登録する⚓︎
手動で登録するには、現在の登録アドレスへ、次の暗号化されていないメッセージを含む転送トランザクションを送信します。
<NODE_HOST>はノードの/node/infoGETエンドポイントが返す値です。-
<CODEWORD_HASH>は次のクエリが返す値です。公開鍵を使用する
-
ノードでハーベストするために使う リモートキー ではなく、プログラムに登録したアカウントの メイン公開鍵 を使用します。
/node/infoGETが返すのはリモートキーであることに注意してください。
テスト結果を確認する⚓︎
スーパーノードプログラムのページでノードのテスト結果を確認します。 登録直後には結果が表示されません。
スーパーノードホストを編集する⚓︎
ノードの IP アドレスまたはドメイン名が変わった場合は、ノードと Servant の設定を更新します。 その後、変更したホストで新しい登録トランザクションを送信します。
毎月再登録する⚓︎
スーパーノードプログラムでは、毎月の再登録が必要です。 毎月新しい登録アドレスがあり、NEM コミュニティの各種チャンネルで告知されます。
次の月の登録は、現在の月の終了 4 日前に開始されます。 新しい登録アドレスを使って、毎月登録プロセスを繰り返します。