ブロックテンプレートを使用してマイニングする
ブロックテンプレートの使い方について少し混乱しています。この質問を見て、難易度に合ったハッシュを取得するまで、おそらくこの関数を呼び出す必要があると思いました。基本的に、ブロックテンプレートをマイニングして、submitブロックを呼び出すために実行する必要のある関数呼び出しは何ですか。
これが漠然とした質問である場合は申し訳ありませんが、私はかなり混乱しています。
私もこの質問を見ましたが、やはり、どの関数を呼び出すべきかについては実際には答えていません。
コンテキストを増やすために、私はbazelリポジトリからmoneroを呼び出しているので、物事は少し厄介で複雑です。
回答
ブロックテンプレートの使用方法について少し混乱しています...基本的に、ブロックテンプレートをマイニングして、submitブロックを呼び出すために実行する必要のある関数呼び出しは何ですか。
ブロックテンプレートとは、マイナーが解決策(ネットワークの難しさを満たすハッシュ)を見つけてネットワークに送信するための作業(繰り返しハッシュ)を実行できるブロックのテンプレートです。
したがって、最初にマイナーは、通常はデーモンメソッドget_block_templateを使用してブロックテンプレートを取得します。
次に、マイナーは関連してナンススペース1を更新し、ハッシュ2を実行します(RandomXハッシュ関数を使用)。結果のハッシュ(単なる数値)がネットワークの問題を満たしている場合、デーモンメソッドsubmit_blockを使用してブロックをネットワークに送信できます。
最後に、ピアノードは、提案されたブロックハッシュがネットワークの問題を満たしていることを検証します。他のマイナーが有効なブロック(またはブロックのチェーン)を送信せず、さらに作業を行った場合、60ブロック後に、マイナーに報酬が支払われます。
1ナンススペースは、ブロックヘッダーまたはマイナートランザクションの予約済みスペースのノンスフィールドの任意の組み合わせにすることができます。
2実際にハッシュされるのは、ブロックヘッダーの連結であるブロックハッシュブロブ、ブロックトランザクションのマークルルートハッシュ、およびtxのカウントの変数(src)です。マイナーは、から返されたブロックハッシュblobを直接使用するかget_block_template
、ブロックテンプレートblobを使用してブロックハッシュblobを自分で構築できます。マイナーがマイナーtxの予約済みスペースを変更する場合は、後者が必要です。