ビットコイン・インスティテュート

BIP 34 — ブロック v2、​コインベースへの​高さ埋め込み

BIP: 34
  Layer: Consensus (soft fork)
  Title: Block v2, Height in Coinbase
  Authors: Gavin Andresen <gavinandresen@gmail.com>
  Status: Deployed
  Type: Specification
  Assigned: 2012-07-06

概要

ビットコインのブロックとトランザクションはバージョン管理されたバイナリ構造である。現在はいずれもバージョン 1 を用いている。本 BIP は、バージョン管理されたトランザクションおよびブロックのためのアップグレード経路を導入する。新たに生成されるコインベーストランザクションに一意な値を追加し、ブロックをバージョン 2 に更新する。

動機

  1. ビットコインネットワークがトランザクションまたはブロックのバイナリ構造・ルール・振る舞いのアップグレードに集合的に合意する仕組みを明確化し、実際に機能させる。
  2. ブロックおよびトランザクションの一意性を強制し、未接続ブロックの検証を補助する。

仕様

  1. バージョンが 1 より大きいトランザクションを非標準として扱う(公式のサトシクライアントはこれらをマイニングもリレーもしない)。
  2. コインベーストランザクションの scriptSig の先頭項目として高さを追加し、ブロックバージョンを 2 に引き上げる。高さのフォーマットは「最小限にエンコードされたシリアライズ CScript」であり、先頭バイトは数値のバイト数(メインネットでは、223-1 ブロックに達するまでの今後およそ 150年間は 0x03 となる)、続くバイトは数値のリトルエンディアン表現(符号ビットを含む)である。高さとは、ブロックチェーン内でマイニングされたブロックのブロック高を指し、ジェネシスブロックのブロック高はゼロ(0)である。
  3. 75%ルール:直近 1,000 ブロックのうち 750 ブロックがバージョン 2 以上であれば、無効なバージョン 2 ブロックを拒否する(testnet3:直近 100 ブロック中 51 ブロック)。
  4. 95%ルール(「引き返せない地点」):直近 1,000 ブロックのうち 950 ブロックがバージョン 2 以上であれば、すべてのバージョン 1 ブロックを拒否する(testnet3:直近 100 ブロック中 75 ブロック)。

後方互換性

すべての旧クライアントはこの変更と互換性がある。ユーザーおよび商店は影響を受けないはずである。マイナーにはバージョン 2 ブロックへのアップグレードを強く推奨する。マイナーの 95%がバージョン 2 にアップグレードした時点で、アップグレードしなかった残りは孤立ブロックとなる。

実装

https://github.com/bitcoin/bitcoin/pull/1526

結果

ブロック番号 227,835(タイムスタンプ 2013-03-24 15:49:13 GMT)が最後のバージョン 1 ブロックであった。