Block Template は、Bitcoin ネットワークの新しいブロック候補を組み立てるための情報です。その後、マイナーはブロックのデータを短くまとめたヘッダーについて、有効な計算作業の証明を探します。テンプレートは選択した取引、報酬、構築ルールを結び付けます。入手しただけでブロックを採掘したり、ネットワークに受け入れられたりしたことにはなりません。
新しいブロックは、特定の先行ブロックに続く形で作られます。テンプレートでは、その固有の指紋を previousblockhash で指定し、候補ブロックのチェーン内の位置を height で示します。ほかに、ヘッダーのバージョン version、採掘結果が満たす目標値の短い符号化 bits、時刻の情報などがあります。これは特定のブロックを組み立てる資料であり、独立した支払い一覧ではありません。同じ取引でも、異なる先行ブロックに続ければ別の課題になります。 [1]
アンナがビットコインを受け取り、それで支払うとします。両方の送金を同じブロックに入れるなら、資金を彼女に割り当てる取引を先に、その資金を使う取引を後に置く必要があります。テンプレートの形式を説明する技術文書 BIP 22 は、この関係を depends という項目で表し、transactions 一覧の先行項目を一から始まる番号で参照します。この一覧には、採掘報酬を割り当てる特別な最初の取引 coinbase は含まれません。depends がない場合は依存関係が不明なのであって、存在しないと確認されたわけではありません。情報不足を空の一覧とみなしてはいけません。 [1]
報酬には、その高さのルールに従う新規発行分と、実際に含まれる取引の手数料が入ります。参照している Bitcoin Core v29.0 もこのように報酬を計算します。このソフトウェアはブロックや取引を検証し、採掘用のテンプレートも準備できます。独自の例として、取引の手数料合計が 10000 sats あり、手数料 3000 sats の独立した取引を外せば、残る手数料は 7000 sats です。Sats はビットコインの小さな単位です。coinbasevalue は、元の取引の組み合わせでマイナーが受け取れる報酬の上限を示します。取引の組み合わせを変えたら、この金額も計算し直す必要があります。古い内容の合計ではなく、実際の手数料から計算する必要があります。 [4] [1]
ブロックにはデータを確認するための暗号学的な指紋もあります。BIP 141 が定める witness commitment は、支出権限を示す署名などの witness データに内容を結び付けるものです。そのデータを含む識別子 wtxid から計算されます。Bitcoin Core 29 は変更されていないテンプレート用に default_witness_commitment を提供します。関係する取引や順序を変えたら、この値を確認または再計算しなければなりません。ヘッダー内の取引全体の指紋である Merkle root も、変更後の coinbase の識別子を含む、最終的な TXID 識別子から計算する必要があります。内容を変えた後に古い封印をそのまま使うことはできません。 [5] [3]
ブロックの容量は限られ、マイナーが何を入れるかを選びます。Bitcoin Core v29.0 は関連する取引のまとまり、データ負荷を数えるための重み、ブロックの上限に照らして数える署名検証操作である sigops を考慮します。blockmaxweight と blockmintxfee は、構築するブロックの大きさや要求する手数料率に影響する設定です。これは選択方針であり、そのために外れた支払いがネットワークのルール上も無効とは限りません。また、マイナー独自の設定で、他のノードが検査するネットワークの上限を引き上げることもできません。 [4] [3]
BIP 23 の mutable には、時刻の調整や取引の追加など、サーバーが許可する変更が並びます。これは特定のテンプレートを扱うための取り決めです。他の参加者が独立して検査する有効性のルール、つまりコンセンサスを無効にする許可ではありません。先行ブロック、時刻、難易度、取引は引き続き正しくなければなりません。テンプレートへアクセスできても、接続したすべての採掘機が内容を自由に変えられるとは限りません。構成と渡される課題によって異なります。 [2]
計算している間に、他のマイナーがチェーンを延ばすことがあります。新たに受け入れたブロックに続くブロックを作るには、古いテンプレートの先行ブロックの指紋だけを置き換えても不十分です。一部の取引はすでに承認されているかもしれず、高さや他の条件も変わります。BIP 23 は expires を作業の時間制限、prevblock を異なる先行ブロックに対して作業を使う許可として定めています。その許可があっても、取引、報酬、新しい状況全体を確認し直す必要があります。 [2]
自分の下書きにある誤りは、長時間の探索前に見つける方がよいでしょう。BIP 23 の proposal モードでは、有効な Proof of Work、つまり必要な計算作業を示す発見済みの結果がなくても、案を確認してもらえます。肯定的な結果は、ブロックが発見・配信されたことや、チェーンに永久に残る保証を意味しません。該当する事前確認に通ったという意味です。完成したブロックを提出するときには、計算作業の証明も含め、必要な検証を受けなければなりません。 [2]
理解を深めるには、この項目とあわせて次もお読みください Mining Pool, Block Header, Extranonce, Merkle Tree, Bitcoin, Bitcoin Core. 次の項目からも参照されています コインベース取引, ASIC Miner, Mining Pool, Nonce.