BIP 141: Segregated Witness(コンセンサスレイヤー)
著者: エリック・ロンブロゾ、ジョンソン・ラウ、ピーター・ウィーユ ステータス: ファイナル タイプ: スタンダードトラック 作成日: 2015年12月21日 有効化: 2017年8月24日(ブロック481,824)
概要
Segregated Witness(SegWit)は、ウィットネス(署名)データを別の構造に移動することでビットコインのトランザクションを再構築する。ソフトフォークとしてデプロイされ、古いノードとの後方互換性を維持する。
解決した問題
トランザクション展性: SegWit以前、トランザクション署名はトランザクションID(txid)の計算に含まれていた。このため第三者が署名を無効化せずに変更し、txidを変更することが可能だった。これはライトニングネットワークなどのセカンドレイヤープロトコルにとって致命的なブロッカーだった。
ブロックサイズ制限: 1MBのブロックサイズ制限がビットコインのスループットを制約していた。SegWitは「ブロック重量」(最大400万重量単位)を導入し、ハードフォークなしで容量を約2〜4MB/ブロックに効果的に増加させた。
署名検証のスケーリング: SegWitは署名ハッシュアルゴリズムを変更し、検証時間がトランザクションサイズの二乗で増大する二次ハッシング問題を回避した。
主要な変更点
- ウィットネスデータがベーストランザクション構造から分離
- マーカー、フラグ、ウィットネスフィールドを持つ新しいトランザクション形式
- ブロックサイズに代わる制限指標としてのブロック重量(非ウィットネスデータ1バイト=4重量単位、ウィットネスデータ1バイト=1重量単位)
- ウィットネスプログラムによるスクリプトバージョニング、将来のアップグレードを可能に(Taprootで使用)
ブロックサイズ戦争
SegWitの開発と有効化は、論争的な「ブロックサイズ戦争」(2015〜2017年)の最中に行われた。一部のコミュニティメンバーはハードフォークによる単純なブロックサイズ増加を主張し、SegWit推進派はソフトフォークアプローチを支持した。この論争は最終的にハードフォークの道を選んだBitcoin Cash(BCH)の誕生(2017年8月)につながった。
SegWitは2017年8月24日、ブロック高481,824でBIP 9シグナリングにより有効化された。
意義
SegWitは初期リリース以降最も重要なビットコインプロトコルアップグレードと広く見なされている:
- ライトニングネットワークやその他のレイヤー2ソリューションを実現
- スクリプトバージョニングを導入し、Taproot(BIP 341)への道を開いた
- 後方互換性を壊すことなく根本的な設計上の欠陥(トランザクション展性)を解決
- 重要なプロトコル変更がソフトフォークとしてデプロイ可能であることを実証