あなたのアカウントのインポータンスを安全にノードと共有して報酬を得ます。
デリゲートハーベスティング によって ノードを運用せず にアカウントで ブロック報酬を得る ことができます。同時にノードはアカウントの (おそらくはより高い) インポータンススコア の恩恵を受けることができます。
注釈
ノード所有者はノードの設定にアクセスできるため、 リモートハーベスティング を利用する方が便利です。
SDK または CLI を使用した、 開発者向け に 手動で デリゲートハーベスティングを有効にする方法をガイドします。一般ユーザは デスクトップウォレット を使用してください。
必要なステップ:
リクエストに応じるのは完全にノード次第であることに注意してください。一部のノードは現在のデリゲートハーベスタの一覧を要求できますが、この情報が常に利用できるとは限りません。 (以下の 有効化の確認 を参照)
デリゲートハーベスティングを有効にするには、次のアイテムが必要です:
symbol.xym
以上と支払うトランザクション手数料が必要です。アカウントには 0 より大きい インポ―タンススコア (このスコアは 12 時間ごとに計算されます) が必要です。これはハーベスト手数料を受け取るアカウントです。その秘密鍵は常に秘匿してください。オプション:
symbol.xym
を持つ アナウンサーアカウント (A) 。 M の代わりに、このアカウントを介して最終的なデリゲートハーベスティングリクエストをアナウンスすることで、M がデリゲートハーベスティングに関与しているという事実をネットワークから隠蔽します。プライバシーを強化するためにはこのアカウントを使用してください。必要であれば、新しいアカウントの作成ついて、 アカウントの作成 ガイドを参照してください。
注釈
次の bash コードスニペットは symbol-cli で メインアカウント (M) が デフォルト プロファイルとして設定されていることを前提としています。そうでない場合は ‑‑profile
パラメタを使用してください。
M のインポータンスを R へ委譲 するための AccountKeyLinkTransaction を作成します。 M でトランザクションに署名し、ネットワークにアナウンスします。
const accountLinkTransaction = AccountKeyLinkTransaction.create(
Deadline.create(epochAdjustment),
remoteAccount.publicKey,
LinkAction.Link,
networkType,
UInt64.fromUint(2000000),
);
M を VRF キーへリンク するための VrfKeyLinkTransaction を作成します。 M でトランザクションに署名し、ネットワークにアナウンスします。
const vrfLinkTransaction = VrfKeyLinkTransaction.create(
Deadline.create(epochAdjustment),
vrfAccount.publicKey,
LinkAction.Link,
networkType,
UInt64.fromUint(2000000),
); // Absolute number
M をノードの TLS キーへリンク するための NodeKeyLinkTransaction を作成します。 M で NodeKeyLinkTransaction に署名し、ネットワークにアナウンスします。
注釈
ノードの公開 TLS キーは通常、ノードの所有者によって提供されます。しかし、Dual ノード (Peer と API ノードの両方) を実行している、バージョン 2.2.0 以上の REST ゲートウェイ はその情報を REST エンドポイント node/info
の nodePublicKey
フィールドで提供します。
ブラウザで http://<NODE_URL>:3000/node/info
を開きます。
const nodeLinkTransaction = NodeKeyLinkTransaction.create(
Deadline.create(epochAdjustment),
nodeAccount.publicKey,
LinkAction.Link,
networkType,
UInt64.fromUint(2000000),
); // Absolute number
トランザクションが確認されたら、次のステップで R の秘密鍵をノードと共有 します。これはノードの所有者であり、ノードの構成にアクセスできるかどうかに応じて、2 つの方法があります。
ノード所有者 の場合は、フィールドにリモートアカウントの秘密署名鍵を ハーベスティング設定 の harvesterSigningPrivateKey
設定するだけです。
それ以外の場合 PersistentDelegationRequestTransaction を使用しなければなりません。秘密鍵は 暗号化メッセージ で共有されるため、ノードだけが平文を確認できます。さらに R はモザイクを保有していません。
ハーベスティング手数料は NodeKeyLinkTransaction を介してノードとリンクを確立しているので、M へ送られます
M (または前述の通りプライバシーのために A) PersistentDelegationRequestTransaction で署名して、ネットワークへアナウンスします。
const persistentDelegationRequestTransaction = PersistentDelegationRequestTransaction.createPersistentDelegationRequestTransaction(
Deadline.create(epochAdjustment),
remoteAccount.privateKey,
vrfAccount.privateKey,
nodeAccount.publicKey,
networkType,
UInt64.fromUint(2000000),
);
注釈
上記すべてのトランザクションは、単一の アグリゲートトランザクション でまとめてアナウンスできます。
すべてが成功すると、ノードは WebSockets を使用して暗号化メッセージを受信します。ノードがデリゲートハーベスティングをする秘密鍵を復号すると、次の条件を満たす場合、ノードの所有者は デリゲートハーベスターとして R を追加 できます。
リモート秘密鍵はノードごとに ディスクに保存されている ため、ノードが一時的に切断された場合でも、ノードがネットワークに再接続すると、永続的にデリゲートハーベスタが再確立されます。
さらに、暗号化メッセージを使用すると、ノード情報の バックアップ が作成されます。デリゲートキーを含むディスクが破損や破壊された場合でも、ノード所有者はブロックチェーンを照会してデータを取得できます。
ノードを構成するのではなく PersistentDelegationRequestTransaction を介して委任をリクエストする場合、ノードがデリゲートハーベスティングを有効にしているかどうかは、 ネットワークではなく ノードに依存しています。要求に応じるか、その状態について嘘をつくかは、完全にノードによります。
したがって、アカウントがハーベスターになったかどうかを知るための 信頼できる 方法は (ブロックチェーンにリモートアカウントが署名したブロックが表示され、メインアカウントがハーベスト手数料の受け取りが始まるのを待つ以外に) ありません。
とはいえ、 Dual ノードとして構成したノード (Peer と API ノードの両方) は現在のデリゲートハーベスタのリストを照会できます。繰り返しますが、この情報はノードから取得されるものであり、ブロックチェーンにバックアップされないので、あまり信頼しないでください。
このリストは getUnlockedAccount
API エンドポイント (ブラウザで http://<NODE_URL>:3000/node/unlockedaccount
を開きます) または Typescript SDK for example) を使用して取得できます。これにはノードに登録している、すべてのデリゲートハーベスタ公開鍵が含まれているため リモートアカウント (R) の公開鍵がここに表示されます。
デフォルトでは、ノードは最大 5 つのデリゲートハーベスタ (ハーベスティングスロット) を持ち、ノードが適切と判断した場合、過剰な要求に優先順位を付けることがあります。これは ハーベスティング設定 の maxUnlockedAccounts
と delegatePrioritizationPolicy
で設定できます。
importanceGrouping
プロパティを参照してください。お探しのものは見つかりましたか? フィードバックをください。