ビットコイン技術 入門

セグウィット (SegWit) — 署名分離による拡張

セグウィット (SegWit)は2017年に有効化されたビットコインプロトコルアップグレードで、署名データを分離することでブロックの実質的容量を増やした技術です。

· 1分

**セグウィット (Segregated Witness, SegWit)**は2017年8月に有効化されたビットコインプロトコルアップグレードで、トランザクションから署名データ(witness)を分離することでブロックの実質的容量を増やした技術です。セグウィットは単なる技術的改善を超え、ビットコイン史上最も激烈なガバナンス論争であるブロックサイズ戦争の結実でした。

graph LR
  subgraph "従来のトランザクション"
      A1["バージョン"] --- A2["入力
(スクリプト+署名)"] --- A3["出力"] --- A4["ロックタイム"] end subgraph "SegWitトランザクション" B1["バージョン"] --- B2["マーカー+フラグ"] --- B3["入力
(スクリプトのみ)"] --- B4["出力"] --- B5["ウィットネス
(署名分離)"] --- B6["ロックタイム"] end style A2 fill:#f85149,stroke:#f85149,color:#000 style B3 fill:#3fb950,stroke:#3fb950,color:#000 style B5 fill:#58a6ff,stroke:#58a6ff,color:#000

ブロックサイズ戦争の背景 (2015-2017)

ビットコインネットワークのトランザクション処理量が1MBブロックサイズ制限に接近するにつれ、スケーラビリティ問題はコミュニティの中心的な争点となりました。大きく2つの陣営が対立しました。

ビッグブロック陣営はブロックサイズを2MB、8MB、あるいはそれ以上に直接増加させるハードフォークを主張しました。より大きなブロックがより多くのトランザクションを処理できるため、即座のスケーリングが可能だという論理でした。この陣営には多くの大規模マイニングプールと一部の企業が含まれていました。

スモールブロック陣営はブロックサイズの増加がノード運営コストを高め、分散化を弱体化させると懸念しました。代わりにセグウィットのようなソフトフォークによる効率的なスケーリング、そしてライトニングネットワークのような第2層ソリューションによる長期的スケーリングを支持しました。コア開発者の大半と多くのノード運営者がこの立場でした。

この論争は2017年のニューヨーク合意(SegWit2x)、UASF BIP148、そして最終的にはBitcoin Cashのハードフォーク分離へとつながりました。セグウィットの有効化はノード運営者(ユーザー)がマイナーにルール変更を強制できることを証明した歴史的な出来事でした。

BIP141/143/144の核心内容

セグウィットは3つの主要なBIP (Bitcoin Improvement Proposal) で構成されています。

BIP141 (Segregated Witness) はセグウィットの中核仕様を定義します。ウィットネスデータをトランザクション本体から分離して専用の「ウィットネス」構造に配置し、ブロックサイズの代わりにブロックウェイト(weight)概念を導入しました。最大ブロックウェイトは4,000,000 weight unitsであり、非ウィットネスデータ1バイト = 4 weight units、ウィットネスデータ1バイト = 1 weight unitとして計算されます。

BIP143 (Transaction Signature Verification for Version 0 Witness Program) はセグウィットトランザクションの署名ハッシュアルゴリズムを再設計しました。従来の方式では署名が必要なデータサイズが入力数に応じて二次的(O(n^2))に増加し、大量入力トランザクションで検証コストが急増する問題がありました。BIP143は各入力の署名ハッシュ計算をO(n)に改善してこの攻撃ベクトルを除去しました。

BIP144 (Peer Services - New Serialization) はセグウィットトランザクションのP2Pネットワーク直列化形式を定義します。レガシーノードとの下位互換性を維持しながら、セグウィットをサポートするノード間でウィットネスデータを効率的に転送できる新しいメッセージ形式を導入しました。

トランザクション可変性(Malleability)問題の具体的説明

トランザクション可変性とは、トランザクションの意味(入力、出力、金額)を変更せずにトランザクションID (txid) を変更できる問題です。セグウィット以前は署名(scriptSig)がtxid計算に含まれており、ECDSA署名の特性上、同一の秘密鍵で同一のメッセージに対して複数の有効な署名を生成できました。

この問題の実質的な被害はライトニングネットワークのようなオフチェーンプロトコルで深刻でした。ペイメントチャネルは未確認トランザクションのtxidを参照して後続トランザクションを構成しますが、txidが変更されるとチャネル全体の状態が無効化される可能性がありました。2014年のマウントゴックスハッキング事件でもトランザクション可変性が悪用されたとされています。

セグウィットは署名データをtxid計算から除外することでこの問題を根本的に解決しました。セグウィットトランザクションのtxidは署名なしで入力と出力のみから計算されるため、署名を改ざんしてもtxidは変わりません。これによりライトニングネットワークなどtxidの不変性に依存するプロトコルの実装が可能になりました。

ウィットネスディスカウントの根拠

セグウィットでウィットネスデータ(署名)が非ウィットネスデータより75%割引されたウェイトを受ける理由は、経済的・技術的に正当化されます。

技術的に、ウィットネスデータはUTXOセットに含まれません。UTXOセットはノードが高速にアクセスする必要がある核心データで、メモリ上に保持されることが多いです。署名データはトランザクション検証後にはもはや必要ないため、UTXOセットを膨張させる非ウィットネスデータより長期的コストが低くなります。ウィットネスディスカウントはこの実際のコスト差を反映したものです。

経済的に、ウィットネスディスカウントはUTXO統合(consolidation)を奨励します。多数の小さなUTXOを消費するトランザクションは署名が多く必要でウィットネスデータの比重が高いですが、ディスカウントのおかげでこのような統合トランザクションの手数料が相対的に安くなります。これはUTXOセットの肥大化を抑制するインセンティブ構造を作り出します。

セグウィットアドレス形式の変遷

セグウィットは複数段階のアドレス形式を経て発展しました。

P2SH-P2WPKH (3で始まる): 初期のセグウィット採用のための互換形式です。従来のP2SHアドレス形式でセグウィットをラップ(wrapped)して使用するため、セグウィットをサポートしない旧式ウォレットからもこのアドレスに送金できました。ただしラッピングのオーバーヘッドにより最適な手数料削減は達成できませんでした。

bech32 (bc1qで始まる): BIP173で定義されたネイティブセグウィットアドレス形式です。セグウィットの手数料削減効果を最大化し、エラー検出能力が向上し、小文字のみ使用(大文字小文字の区別なし)でQRコード効率が高くなります。セグウィットv0に使用されます。

bech32m (bc1pで始まる): BIP350で定義された改良型アドレス形式で、bech32で最後の文字を変更した際にエラー検出が失敗するという微妙なバグを修正しました。タップルート(セグウィットv1以上)に使用されます。

UASF BIP148の政治的意味

2017年にマイナーがセグウィット有効化に必要な95%のシグナリング閾値に到達できなかった際、ユーザーたちはBIP148を通じてUASF (User Activated Soft Fork) を組織しました。BIP148は2017年8月1日からセグウィットシグナリングビット(bit 1)を設定していないブロックを拒否すると宣言しました。

この動きの政治的意味は深大でした。伝統的にプロトコル変更はマイナーのシグナリングに依存していましたが、UASFはノード運営者(経済的多数)がマイナーにルールを強制できることを示しました。もし経済的多数のノードがBIP148を適用すれば、セグウィットをサポートしないブロックのコインはこれらのノードによって拒否され無価値になります。マイナーとしては自分のブロック報酬が経済的に認められないリスクを負うことはできませんでした。

最終的にBIP91という妥協案がマイナー間で迅速に採用されセグウィットが有効化され、実際のチェーン分裂は発生しませんでした。しかしUASFはビットコインの権力構造において最終的な権限がマイナーではなくユーザー(ノード運営者)にあることを証明した転換点でした。

関連する概念

  • ライトニングネットワーク — セグウィット上に構築されたビットコイン第2層決済ネットワーク
  • ノード — UASFを通じてセグウィット有効化を主導したビットコインネットワークの独立した検証ソフトウェア
  • マークルツリー — セグウィットがウィットネスデータ用の別個のマークル構造を導入
  • メンプール — セグウィットのウェイトシステムが手数料構造に影響
  • ビットコインとは? — ビットコインの基本概念と動作原理

関連記事