SegWitとは何ですか?
2017年当時、ビットコインはコミュニティを分裂させるほどの深刻な問題を抱えていた。ネットワークは1秒間にせいぜい3件のトランザクションしか処理できず、手数料は高騰し、ブロックは満杯状態だった。そして、その解決策について誰もが異なる考えを持っていた。
採用されたソリューションは、Segregated Witness(セグウィット)の略称であるSegWitでした。これは、Bitcoin Coreの主要開発者の1人であるPieter Wuille氏によって提案され、すべてのビットコイン取引の構造を根本的に変革しました。単なる微調整ではなく、ブロック内にデータがどのように収まるかという根本的な見直しです。8年後、すべてのビットコイン取引の約96%がSegWitアドレスを使用しています。ここ数年でビットコインを購入または送金したことがあるなら、ほぼ間違いなく知らず知らずのうちにSegWitを利用しているはずです。
実際の問題点は何だったのか?
2016年の様子をお話ししましょう。
ビットコインは、各ブロックに1MBの容量制限を設けています。サトシ・ナカモトが2010年にスパム攻撃を防ぐためにこの制限を設け、その後誰も撤廃していません。ブロックは約10分ごとにマイニングされます。1ブロックあたり1MBなので、1ブロックあたり約1,650件のトランザクションが処理される計算になります。計算してみると、ビットコインネットワーク全体で1秒あたり約2~3件のトランザクションしか処理されないことになります。地球全体が、これほど細い回線を共有しているのです。
ちなみに、Visaは1秒間に65,000件の処理を行っています。つまり、問題ですね。
2016年末までに、すべてのブロックが1MBの壁にぶつかるようになった。容量がなくなると、ビットコインユーザーは取引手数料で競り合い、マイナーに自分の取引を優先的に選んでもらおうと賄賂を贈り始めた。手数料は高騰し、10ドル相当のビットコインを送るのに15ドルの手数料がかかることもあった。全く理にかなっていなかった。
そして、さらにマニアックな問題がありました。トランザクションの可塑性です。できるだけ簡単に説明しましょう。ビットコインを送金すると、ネットワークはそのトランザクションのIDを作成します。SegWit以前は、そのIDは署名を含むトランザクション全体から構築されていました。落とし穴は?誰かが未確認のトランザクションを取得し、署名のエンコードをいじって(技術的には有効のまま)、まったく同じ支払いに対して異なるIDを取得できてしまうことです。送信者も同じ。受取人も同じ。金額も同じ。ID番号だけが違うのです。
なぜ気にする必要があるのでしょうか?それは、2014年に84万BTCを失った取引所Mt. Goxが、まさにこのバグを悪用されたからです。さらに重要なのは、ビットコイン上に構築されたあらゆるセカンドレイヤーシステム(ペイメントチャネルなど)は、トランザクションをIDで参照する必要があるということです。これらのIDが変動すると、システム全体が崩壊してしまいます。
ビットコインは、ブロックサイズが小さすぎることと、トランザクションIDが信頼できないという2つの問題を同時に抱えていた。SegWitは、この両方を一度に解決した。
SegWitの仕組み(コンピュータサイエンスの学位がなくてもわかる)
ビットコインの取引を小切手に例えて考えてみましょう。誰が誰にいくら支払うかを示す部分があり、その下にあなたの署名があり、それが正当な取引であることを証明するものです。SegWitが登場する以前は、これらの両方の部分が1つのデータブロックに詰め込まれており、そのすべてが1MBのブロックサイズ制限にカウントされていました。
ピーター・ウィルが不満に思ったのは、署名データがトランザクションの約65%を占めていたことだった。各ブロックの大部分は、実際に何が起こったかを記録するのではなく、誰かがそれを承認したという証拠を記録することに費やされていた。それは無駄だと感じられた。
彼のアイデアは、署名を分離し、「証人」と呼ばれる別のセクションに格納することだった。トランザクションデータはメインブロックに残る。証人データは別に保存される。ネットワーク上のすべてのノードによってチェックされるのは変わらないが、ブロックの充填率を計算する際の重みは変わる。
実際にはどうなったのか?ブロックに格納できるトランザクション数は約1,650件から約2,700件に増加した。ビットコインの処理速度は1秒あたり2~3件から約7~10件に跳ね上がった。Visaと比べればまだまだ微々たるものだが、自らの成功に溺れかけていたネットワークにとっては、一息つける余裕となった。

ブロックの重み:新しい数学
ここからが巧妙なところです。最も簡単な解決策は、1MBの制限を2MBに変更することだったでしょう。しかし、それはハードフォークになります。ビットコインネットワーク上のすべてのノードを更新する必要があり、更新しないとチェーンから切断されてしまいます。ハードフォークは厄介で、取り残される人が出てきます。
ピーター・ウィルは、よりスマートな方法を考案した。SegWitは、ブロックをバイト単位で計測する代わりに、「ブロックウェイト」を使用する。通常のトランザクションデータは1バイトあたり4ウェイト単位としてカウントされ、ウィットネスデータは1バイトあたりわずか1ウェイト単位としてカウントされる。上限は合計400万ウェイト単位である。
実際にはどういう意味でしょうか? 証拠データのないブロックは、これまでと同様に最大1MBです。古いノードでは何も異常は見られません。SegWitトランザクションを詰め込んだブロックは、理論上4MB近くまで達する可能性があります。実際には、ほとんどのブロックは1.5~2MB程度になります。
このシステムの素晴らしい点は、SegWitがソフトフォークとしてリリースされたことです。アップグレードしていないノードも引き続き正常に動作し、新しいセクションの証人データを見ることはできませんでした。ビットコインのブロックチェーンは分裂せず、「古いビットコイン」と「新しいビットコイン」という区別もありませんでした。1つのチェーン、1つのネットワークで、後方互換性も確保されています。これだけでも、十分に評価されていない技術的な勝利と言えるでしょう。
| SegWit以前 | SegWitの後 |
|---|---|
| ブロックサイズ:最大1MB | ブロック重量:最大400万重量単位 |
| ブロックあたり約1,650件のトランザクション | 1ブロックあたり約2,700件のトランザクション |
| 2-3 TPS | 7~10 TPS |
| ブロック内の署名データ | 署名データは別の証人欄に記載 |
| トランザクションIDには署名が含まれていました | コアデータのみに基づくトランザクションID |
トランザクションの柔軟性に関する修正
ブロックサイズの問題はよく話題になります。確かに、それが最も大きな問題でした。しかし、トランザクションの可塑性に関する修正の方がより重要だったと思いますが、開発者以外の人々のほとんどはそのことをほとんど知りません。
つまりこういうことです。SegWitが登場する前は、ビットコインウォレットがトランザクションを作成すると、トランザクションID(TXIDと呼ばれます)はトランザクション内のすべての情報から計算されていました。署名もその一部です。そして、奇妙なことに、デジタル署名は複数の有効な形式で表現できるのです。同じ署名、同じ所有権証明でも、バイト列がわずかに異なるだけです。
つまり、誰かがあなたの未確認の取引を傍受し、署名を別の、しかし同様に有効な方法で再エンコードして送信する可能性があるということです。ネットワークは改ざんされたバージョンを承認します。送信者も受信者も金額も同じですが、TXIDは全く異なるものになります。
分かります。分かりにくい説明に聞こえるかもしれませんね。でも、これは非常に重要なことなんです。例えば、ステップBがステップAのIDを参照するようなシステムを構築していると想像してみてください。もし誰かがステップAのIDを送信後、確認前に変更できたとしたら、ステップBは機能しなくなります。つまり、一連のロジック全体が崩壊してしまうのです。
SegWitはこの問題を解決するため、非証人部分のみからTXIDを計算するようにしました。署名はIDとは別に証人フィールドに格納されるようになったため、誰も改ざんできません。トランザクションIDは完全にロックダウンされました。
SegWitとライトニングネットワーク
だからこそ、可塑性修正が重要だったのです。ライトニングネットワークは、ビットコインが毎秒数百万件の支払いを処理するために計画している仕組みです。あなたと私は支払いチャネルを開設します。メインブロックチェーンとは別に、お互いにビットコインをやり取りします。取引が完了すると、最終的な純残高のみがオンチェーンで決済されます。ビットコインブロックチェーン上では、何百ものトランザクションではなく、たった1つのトランザクションで済むのです。
Lightningは、トランザクションがIDによって相互参照されるチェーンを構築することで機能します。もし誰かが途中でIDを変更できた場合、あなたを保護するはずの返金トランザクションは無効になり、損失を被る可能性があります。決済チャネルの概念全体は、IDの安定性に依存しています。
SegWitのおかげで、それらは安定した。それだけだ。この修正がなければ、Lightningはリスクが高すぎて導入できなかっただろう。そしてLightningがなければ、ビットコインは永遠に毎秒7~10件のトランザクションで止まってしまう。それは決済ネットワークではない。それは大口投資家のための決済レイヤーだ。
私はこう考えています。SegWitは単なるアップグレードではなく、土台となる基盤でした。2021年のTaproot、Lightning Network、そして2023年のOrdinalsの刻印も、2017年8月に行われた構造的な変更がなければ実現しなかったでしょう。
アドレス形式:レガシー、ラップド、ネイティブSegWit
ビットコインアドレスの中には「1」で始まるもの、一部は「3」で始まるもの、そして一部は「bc1」で始まるものがあることに気づいたことはありますか?これは、ウォレットにSegWitアップグレードが反映されていることを示しています。
「1」で始まるアドレスは旧式です。古い形式で、SegWitに対応していません。手数料が最も高くなります。ウォレットでまだこれらのアドレスが表示される場合は、ソフトウェアをアップデートしてください。
「3」で始まるアドレスはSegWitでラップされています。ビットコインのトランザクションは内部的にSegWitを使用していますが、ラップされているため、SegWitを知らない古いウォレットでもビットコインを送金できます。従来の方法よりは安価ですが、最も安価な選択肢ではありません。
「bc1q」で始まるアドレスは、ネイティブSegWit(Bech32とも呼ばれる)です。これは優れたアドレス形式です。手数料が最小限で、エラーチェック機能も最高レベル(アドレス形式がタイプミスをより効果的に検出します)。そして、現在、トランザクションの96%がこの形式を使用しています。
「bc1p」アドレスを目にすることもあるかもしれません。これらはTaprootと呼ばれるもので、SegWitをベースにした2021年の最新アップグレード版です。話は変わりますが、存在を知っておく価値はあります。
| アドレスタイプ | から始まる | 料金レベル | SegWit? |
|---|---|---|---|
| レガシー(P2PKH) | 1 | 最高 | いいえ |
| ラップドSegWit(P2SH) | 3 | 中くらい | はい(包装済み) |
| ネイティブSegWit(Bech32) | bc1q | 最低 | はい(ネイティブ) |
| 主根(Bech32m) | bc1p | 最低 | はい + Taproot |
手数料は実際にどれくらい節約できるのですか?
私の技術に詳しくない友人たちが本当に知りたいのは、どれくらい安くなるのかということです。
Unchainedが計算した結果、標準的なシングルシグネチャのSegWitトランザクションでは、従来の方法と比較して手数料が約53%削減されることが分かりました。2-of-3マルチシグ設定(保管業務でよく用いられる方法)を使用すれば、約64%の削減になります。これは誤差の範囲ではありません。従来の方法で1件あたり30ドルかかるような混雑時でも、ネイティブSegWitを使えば15ドル未満で済みます。
なぜかって?またしてもブロックの重み計算の違いです。ウィットネスデータは1バイトではなく0.25バイトとしてカウントされます。つまり、トランザクションがブロック内で占めるスペースが少なくなるため、マイナーの手数料も安くなるのです。至ってシンプルな仕組みです。
もしあなたのビットコインウォレットがまだ「1」で始まるアドレスを出力しているなら、送金するたびに無駄なお金を使っていることになります。ネイティブSegWitに切り替えましょう。たった5分で完了します。Coinbase、Ledger、Trezor、BlueWallet、Sparrowなど、すべてSegWitに対応しています。デメリットは一切ありません。

論争の的:なぜSegWitは実現寸前まで頓挫しかけたのか?
正直言って、技術的なことよりもこの部分の方が面白い。SegWitは発売前にほぼ消滅寸前だったんだ。
表面上は、争いは単純だった。一方の陣営、いわゆる「ビッグブロッカー」は、ブロックサイズの上限を1MBから8MB以上に引き上げることを望んでいた。容量が増えればトランザクション数も増える。単純な解決策だ。世界最大のビットコインマイナーであるBitmainは、この陣営を強く支持した。BitmainがSegWitに反対しているのは、SegWitによって、競合他社よりも高速なマイニングを実現する秘密の技術であるASICBOOSTが使えなくなるからだと非難する声もあった。Bitmainはこれを否定したが、仮想通貨業界は彼らの言葉を信じなかった。
もう一方の陣営は、主にBitcoin Coreの開発者や自宅でフルノードを運用している人々だった。彼らの主張はこうだ。ブロックサイズを8倍にすれば、ノードを運用するために必要な帯域幅、ストレージ、処理能力も8倍になる。数年後には、データセンターやマイニングファームだけがビットコインのブロックチェーンを検証できるようになり、分散化は静かに終焉を迎えるだろう。
私はこの状況をリアルタイムで追っていましたが、ビットコインがこの議論を乗り越えられるかどうか、本当に不安でした。TwitterやReddit、カンファレンスでは、人々が互いに罵り合っていました。ニューヨークでは非公開の会合(「ニューヨーク合意」)も開かれ、多くの企業がSegWitと後々のブロックサイズ拡大を組み合わせた合意を仲介しようと試みましたが、それも決裂しました。
実際に何が起こったかというと、SegWitは2017年8月1日にユーザー主導のソフトフォークとして有効化されました。これに反対したビットコインマイナーたちは、同日、フォークしてビットコインキャッシュ(BCH)を作成しました。BCHは8MBブロック(現在は32MB)を採用し、SegWitは使用していません。BCHは現在も存在しており、ビットコインの価格のほんの一部で取引されています。
8月1日は、一部の人々から「ビットコイン独立記念日」と呼ばれている。重要なのは、ビットコインのルールに関する最終決定権はマイニング企業ではなく、ノード運営者にあるということだ。この前例は、SegWitアップグレード自体のどのコード行よりも重要だ。
SegWitの採用状況
議論は終わりました。2025年までに、ビットコイン取引の96%がSegWitを使用するようになります。主要なウォレットはすべてSegWitに対応しています。すべての取引所もSegWitに対応しています。もしあなたがまだ旧式のアドレスを使用しているとしたら、それは何年もソフトウェアを更新していない以外に説明のしようがありません。
SegWitのアップグレードは、その後のあらゆる動きの扉を開いた。Taprootは2021年11月に登場し、SegWitの構造の上にSchnorr署名を追加した。Ordinalsは2023年に登場し、SegWitが作成した証拠データ領域にJPEG画像を詰め込み始めた。最後の点については賛否両論あるが、要点は変わらない。SegWitが空間を作り、開発者たちがそれを埋めていったのだ。
SegWitはあなたにとって個人的に重要ですか?ビットコインを少しでも利用しているなら、間違いなく重要です。ウォレットの設定を開いてアドレスの形式を確認してください。「bc1q」で始まっていれば問題ありません。「1」で始まっている場合は、今すぐ切り替えるべきです。手数料の削減、混雑時の承認速度の向上、そしてLightning Payへのフルアクセスが可能になります。
SegWitのことを日々意識することはまずないでしょう。それは床下の配管のようなものです。しかし、もし2017年に誰かがSegWitを設置していなかったら、今頃家全体が水浸しになっていたはずです。