BIP 34
ブロック v2 — コインベースへのブロック高の埋め込み
原題: Block v2, Height in Coinbase
- Status
- Deployed
- Type / Layer
- Specification / Consensus (soft fork)
- Author
- Gavin Andresen
- 割り当て日
- Status 検証日
- 原文
- github.com/bitcoin/bips/blob/master/bip-0034.mediawiki
要約
ブロックとトランザクションにバージョン番号を持たせて段階的な仕様変更の経路を作り、あわせて coinbase トランザクションの scriptSig の先頭にそのブロックの高さを入れることを義務づけた提案です。狙いは二つあります。ひとつは、ネットワーク全体が合意しながら構造を変えていくためのアップグレード機構を用意すること。もうひとつは、すべてのブロックを一意にすることです。coinbase の中身が完全に同じだと、まったく同じトランザクション ID を持つ coinbase が二度現れうるという問題がありましたが、必ず異なるブロック高が入るならこれは起こりません。加えて、鎖につながっていない状態で受け取ったブロックについても、どの高さのものかを内容だけから判断できるようになります。高さは最小限の長さで符号化した CScript として、長さ 1 バイトのあとにリトルエンディアンで書きます(genesis ブロックを 0 とする)。展開は二段階の閾値方式で行われ、直近 1000 ブロックのうち 750 が version 2 以上になった時点で不正な v2 ブロックを拒否し、950 に達した時点で version 1 のブロックそのものを拒否する運用に切り替えました。
技術的意義
バージョン番号でソフトフォークを展開するという発想の出発点であり、この方式を一般化して並行デプロイを可能にしたのが BIP9 です。coinbase に入るブロック高は現在も全ブロックに存在し、ブロックの内容だけから高さが分かるという前提は、検証やインデックス処理で当たり前に使われています。
関連する BIP
関連する解説記事
このページに掲載しているのは原文の翻訳ではなく日本語の要約です。BIP は原文が正であり、Status を含むメタデータは上記の検証日時点で bips リポジトリから転記した値です。実装・検証の際は必ず原文を参照してください。