ブロックチェーン/レベル III · ネットワーク/3.2 マイニング/レッスン 5
ブロックテンプレートとStratum V2
ヘッダーのジョブ、テンプレートの選択、そして筆を握るのは誰か
用意するものStratum V2仕様(stratumprotocol.org)BIP22とBIP23
問い
- 専用ハードウェアを持つマイナーが、どのトランザクションをブロックに入れるかの決定を依然としてプール運営者に頼っているのはなぜでしょうか?
- プールに参加するマイナーが、プールの報酬を分け合いながらも、自分のブロックに入れるトランザクションを選べるのは何によるのでしょうか?
- JSONからバイナリプロトコルへの移行は、高速なマイニング運用においてセキュリティと効率の両方の課題にどう対処するのでしょうか?
探究
- このプロトコルが誕生して以来、有効なブロックにはすべてトランザクションの選択が必要です。初期には、フルノードを動かすマイナーが自分でこれを選んでいました。2012年になると、ハードウェアが専門化して高価になったため、ほとんどのマイナーがプールに参加していました。同年にSlushが導入したStratumプロトコルは、プールサーバーがメンバーに作業を配布する方法を標準化しました。プールは2010年からブロックを構築しており、Stratumはその仕組みを格段に効率化するとともに、ブロック構築の中央集権性もそのまま引き継ぎました。
- Stratum V1では、プール運営者が各候補ブロックの唯一の設計者として機能します。サーバーは自身のメンプールからトランザクションを集め、ジョブの構成要素をマイナーに送ります。具体的には、コインベーストランザクションの前半と後半、マークルブランチ、前のブロックのハッシュ、ターゲット、時刻です。マイナーは自分のエクストラノンスを挿入してマークルルートを計算し、有効なハッシュを探しますが、どのトランザクションを含めるかについては決定権を持ちません。
- このアーキテクチャにより、プール運営者はトランザクションの選択に大きな権限を持ちます。ネットワークのハッシュレートのかなりの部分を握るプールは、単にテンプレートから特定のトランザクションを除外するだけで、事実上それらを検閲できます。これが実際に行使されることはまれですが、構造的にはその余地が存在します。また、プールサーバーがダウンしたりサービス妨害攻撃を受けたりすると、接続しているすべてのマイナーが停止状態となり、彼らの収益にとって単一障害点となります。
- 2012年にBIP22およびBIP23によって`getblocktemplate`が導入され、マイニングソフトウェアがノードから完全なブロックテンプレートを要求できるようになりました。これは、プールのメンバーが独自のブロックを作成できるように設計されたものです。プールは内部で`getblocktemplate`を利用して自分たちのノードからテンプレートを取得しますが、メンバーが独自のブロックを作成できるようにすると検証やシェアの集計が複雑になり、この機能を提供するプールはほとんどありませんでした(Eligiusは例外でした)。
- 2019年以降、BraiinsやMatt Coralloらによって開発されたStratum V2は、これらの課題に対処するためにプロトコルを再設計しました。オーバーヘッドを減らすバイナリ形式と、セキュリティのための暗号化を導入しています。決定的に重要なのは、Job Declaration Protocol(ジョブ宣言プロトコル)を含んでいる点です。これにより、自分のフルノードを運用するマイナーは、独自のブロックテンプレートをプールサーバーに宣言できます。プールはこのカスタムジョブからのシェアを受け入れ、通常の方式に従って報酬を分配しますが、どのトランザクションを含めるかの決定権はマイナーが保持します。
- OceanのDATUMプロトコル(2024年)などの別の取り組みも、テンプレート構築の分散化という同様の目標を追求しています。Stratum V2仕様のJob Declarationのセクションを読み、知っているプールがどのようにテンプレートを構築しているかと比較してみてください。これらのプロトコルが採用されたところでは、トランザクションの選択権がハードウェアの所有者の側へと戻りつつあります。
重要な事実
- 2012年にSlushが導入したStratum V1では、ブロックテンプレートの作成がプール運営者に集中しています。
- Stratum V1では、マイナーはヘッダーのジョブしか受け取らず、トランザクションの選択に影響を与えることはできません。
- BIP22/BIP23(2012年)はgetblocktemplateを定義しましたが、メンバーがそれを使って自分のブロックを構築できるようにしたプールはごくわずかでした。
- Stratum V2(2019年以降)は、より高いセキュリティと効率性を実現するために暗号化されたバイナリプロトコルを使用しています。
- Stratum V2のJob Declaration Protocolにより、マイナーは独自のブロックテンプレートをプールに提出できます。
- OceanのDATUMプロトコル(2024年)は、プールに参加するマイナーの間でトランザクション選択を分散化することを目指す、もう一つの取り組みです。
演習 九・六・三・一
9集めるブロックの生成に関わる決定を9つ挙げ(たとえば、どのトランザクションを含めるか、コインベースメッセージ、タイムスタンプ、ノンス)、Stratum V1のもとでそれぞれを誰が決めているかを記録してください。
6まとめる誰がそれを制御しているかに基づいて、9つを6つに分類してください:プール、マイナー、ノードソフトウェア、コンセンサスルール、偶然、その他。
3絞り込む6つのカテゴリーを、トランザクションの選択権がブロック生成者にとって経済的・政治的に重要である3つの核心的な理由に絞り込んでください。
1結晶化するStratum V2のJob Declaration(ジョブ宣言)が、プール運営者と個々のマイナーの力関係をどのように変えるのかを説明する文を1文で書いてください。
事実確認
日付、数字、主張は、下記に記載された公表資料と照合して確認しました。