ハーベスティング

新しい ブロック を生成するプロセスをハーベスティングと呼びます。

このプロセス中には、ブロックをハーベストする アカウント - ハーベスタ と呼びます - はブロックに追加された トランザクション手数料 報酬と生成された インフレーション トークンが提供されます。

アカウントがブロックをハーベストすると、そのブロックは自身の ヘッダ にハーベストアカウントによって生成された公開キーと署名を記録します。

適格基準

インポータンススコア はそのアカウントがハーベスティングがオンになっていて、他のすべてのアカウントもハーベストしている場合に、アカウントが次のブロックをハーベストする確率を決定します。

Symbol のパブリックネットワークはアカウントが少なくとも 10,000 ハーベスティングモザイク を保有する必要があることを定義しています。適格なアカウントは ノードの運用 または リモートノード にデリゲートすることでインポータンススコアを新しいブロック生成のために使用することができます。

選択した方法に関係なく、ハーベスティングをアクティブ化したいアカウントは、最初に有効な VrfKeyTransaction を通知します。VRF トランザクションはハーベスタアカウントと 2 番目のキーペアをリンクして、ブロックの生成とリーダーの選択をランダム化します。

ハーベスティングモザイク

Symbol ソフトウェアはビジネスニーズに合わせたハーベスティングを目的とした モザイク定義 をサポートします。

例えばコンソーシアムネットワークではインフラを運営する企業間でハーベスティングモザイクを配布することができますが、他の参加者はサービスを利用するために 通貨モザイク を支払う必要があります。

これとは対照的に、パブリックネットワークではトランザクション手数料の支払いとネットワーク運用には同じモザイクを使用することがあります。たとえば Symbol のパブリックネットワークでは symbol.xym をハーベストモザイクとして使用して、適格な参加者が新しいブロックをハーベストできるようにしています。

報酬

ネットワークオペレーターはハーベスト報酬 (ブロック 手数料 および インフレーション)の割合を受け取る ネットワーク手数料シンクアカウント を定義できます。パブリックネットワークにおいて、この手数料はスーパーノードプログラムの作成、ファイナライズプロセスに参加するアカウントへの報酬、またはネットワーク開発の前進に使用できます。デフォルトでは、パブリックテストネットワークはこの割合を5%に設定します。

さらに、各ノードは 受益者アカウント を設定して、ハーベスト報酬の割合 (最大25%) を共有できます。ノードオペレータはこの機能を使用して、ノードサポータのインセンティブ構造を作成できます。

受取人の共有比率とネットワークシンクアカウントは ネットワークごとに設定可能 です。

../_images/network-sink-beneficiary.png

ネットワークシンクに対するネットワークの共有率が20%であり、受益者に対するネットワークの共有率が10%である場合の報酬区分

注釈

受益者の割合の計算は、ネットワークシンク計算後に行われます。ノードオペレーターが受取人またはネットワーク手数料シンクを定義しない場合、すべての報酬はブロック署名者に送られます。

ローカルハーベスティング

適格なアカウントはノードを実行して新しいブロックを収集できます。ローカルでハーベスティングするために、アカウントは config-harvesting.properties ファイルに次のプロパティを記入します:

プロパティ タイプ 説明 Default
harvesterSigningPrivateKey string ハーベスタアカウントの秘密鍵。パブリックネットワークでは、このアカウントが 0 より大きいインポータンススコアを得るには、少なくとも 10,000 ハーベスティングモザイク ユニットを保有している必要があります。  
harvesterVrfPrivateKey string アカウントにリンクされた VRF 秘密鍵。  
enableAutoHarvesting bool true の場合、デリゲートハーベスティングが有効になります。 false
maxUnlockedAccounts uint32_t デリゲートハーベスティングアカウントの最大数 5
delegatePrioritizationPolicy harvesting::DelegatePrioritizationPolicy ノード一度が保持した maxUnlockedAccounts アカウントを維持するための、デリゲートハーベスター優先順位付けポリシー。可能な値は 「Importance」 または 「Age」 です。 Importance
beneficiaryAddress Address HarvestBeneficiaryPercentage によって定義された、ブロック手数料の割合を受け取るアカウントのアドレス。 0000000000000000000000000000000000000000000000000000000000000000

ローカルハーベスティングでは、プライベートキーを格納しているノードのインスタンスに誰もアクセスしない限りは安全です。

デリゲートハーベスティング

デリゲートハーベストにより、アカウントのインポータンススコアを使用して、ローカルでノードを実行しなくても、新しいブロックを作成して報酬を受け取ることができます。

適格なアカウントはそのインポータンススコアを新しい プロキシアカウント に委任できます。プロキシアカウントの秘密鍵は、デリゲートハーベストの接続を実行するローカルハーベストを実行している任意のノードと安全に共有できます。

../_images/delegated-harvesting.png

デリゲートハーベスティングの有効化

デリゲートハーベスティングを有効にするには、アカウントの所有者が AccountKeyLinkTransaction をアナウンスすることでインポータンススコアをプロキシアカウントにリンクする必要があります。リモートアカウントがデリゲートハーベストを受け入れられるためには、リモートアカウントがトランザクションを送受信したことがなく、以前に別のアカウントにリンクされたことがあってはなりません。

注釈

リモートアカウントはデリゲートアカウントである間、トランザクションに関与できません。

次に、アカウントは TransferTransaction を用いて 特別な暗号化メッセージ をノードへ送信する必要があります。このメッセージは受信者だけが解読できるように AES を用いて暗号化されたリモートの プロキシ秘密鍵 が含まれていなければなりません。

ノードは WebSockets を通じて暗号化メッセージを受信します。ノードがデリゲートハーベスティングをする秘密鍵を復号すると、候補アカウントが条件を満たす場合、ノードの所有者はリモートアカウントをデリゲートハーベスターとして追加できます。

リモート秘密鍵は ディスクに保存されている ため、ノードが一時的に切断された場合でも、ノードがネットワークに再接続すると、永続的にデリゲートハーベスターが再確立されます。さらに暗号化メッセージを使用すると、ノード情報の バックアップ が作成されます。デリゲートキーを含むディスクが破損や破壊された場合でも、ノード所有者はブロックチェーンを照会してデータを取得できます。

セキュリティに関して、プロキシの秘密鍵を共有しても、次の理由から元のアカウントが侵害されることはありません:

  • リモートアカウントは残高0です。
  • リモートアカウントそれ自身だけでは、インポータンスを他のアカウントに移すことはできません。
  • 元のアカウントは結果の手数料を受け取ります。

以下の条件を満たす場合、リモートハーベスターは全報酬を受け取ることができません:

  • ネットワークハーベスティング共有率が 0 より大きい。
  • 受益者アカウント を定義している選択されたノード。
ローカルとデリゲートハーベスティングの比較
  ローカルハーベスティング デリゲートハーベスティング
設定 catapult-server ノードのセットアップ リモートハーベスティングの有効化
コスト ノードのメンテナンス(電気、VPNのコスト) + VrfKeyLinkTransaction アナウンス手数料 VrfKeyLinkTransaction + AccountKeyLinkTransaction + TransferTransaction アナウンス手数料
セキュリティ ノードは秘密鍵を保存します。 プロキシ秘密鍵はノードと共有されます。
報酬 トータル報酬。ノード所有者は報酬の一部を受取アカウントと共有できます。 合計報酬 - ノードの受益者分配

ガイド

次項: インフレーション