Block Template は、ヘッダーの proof of work を探索するブロックを組み立てるためのデータです。前ブロック、取引、coinbase、採掘上の制約を結び付けますが、ブロックの発見や受理の証明ではありません。
previousblockhash と height は候補のチェーン上の位置を定めます。version、bits、時刻情報も含まれます。テンプレートはブロックを組み立てる材料であり、同じ計算を無批判に繰り返すための完成済みヘッダーだけではありません。 [BIP 22 — Block template structure]
BIP 22 の depends は、coinbase を含まない transactions リストの先行項目を、1から始まる番号で参照します。同じブロック内の親取引の出力を子取引が使うなら、親は先に置く必要があります。depends の欠落は依存関係が不明という意味で、存在しないという意味ではありません。 [BIP 22 — Block template structure]
Bitcoin Core v29.0 は、その高さの補助金と採用取引の実際の手数料から coinbase を構築します。取引を削除した後、古い coinbasevalue を正当な報酬として自動的に維持することはできません。選択を変えたら利用可能な手数料を再計算します。 [Bitcoin Core v29.0 — Block assembler]
BIP 141 の witness commitment は wtxid を通じて witness データを束縛します。Bitcoin Core 29 の default_witness_commitment は変更していないテンプレート用です。関連取引や順序を変えた後はコミットメントを確認または再計算し、結果の TXID をヘッダーの Merkle root に反映する必要があります。 [BIP 141 — Witness commitment] [Bitcoin Core 29 — getblocktemplate RPC]
Bitcoin Core v29.0 は依存関係を含むパッケージを選び、重量と sigops を守ります。blockmaxweight と blockmintxfee は組み立てに影響します。この方針による除外だけで取引のコンセンサス違反は証明できず、採掘者の設定でネットワークの上限を増やすこともできません。 [Bitcoin Core v29.0 — Block assembler]
BIP 23 は mutable で時刻や取引などの変更許可を示します。サーバーの許可はコンセンサスを無効にしません。前ブロック、時刻、難易度、取引は引き続き正しくなければなりません。テンプレートを得られても、末端機器による無制限な内容選択が保証されるわけではありません。 [BIP 23 — Mutations and proposals]
BIP 23 は expires で作業期限を制限し、prevblock の変更権限を指定できます。チェーン先端が変わったとき、前ブロックのハッシュだけを置き換えても他のすべてが有効とは限りません。高さ、取引、報酬、その他の文脈条件を再評価する必要があります。 [BIP 23 — Mutations and proposals]
BIP 23 の proposal モードは、有効な proof of work を要求せず候補を確認します。肯定的な結果はブロックの発見、公開、チェーンへの恒久的な包含を意味しません。完成したブロックは提出時に適切な検証を受けなければなりません。 [BIP 23 — Mutations and proposals]
理解を深めるには、この項目とあわせて次もお読みください Mining Pool, ブロックヘッダー, Extranonce, Merkle tree. 次の項目からも参照されています コインベース取引, ASIC Miner, Mining Pool, Nonce.