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

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ブロックであった。