Segwitとは? ビットコインの問題点を一気に解決した技術

ビットコイン(BTC)のSegwitとは

Segwitとはトランザクション・マレアビリティという問題を解決するために、2017年8月にビットコインへ導入されたしくみです。

Segwitはビットコインに必要不可欠なセキュリティ対策であり、数多くのマイナーに影響を与えるものです。

ビットコインの問題を改善するSegwitの理解が深まれば、ビットコインにどんな対応がなされてきたのか、歴史の一端を知ることができるでしょう。

この記事で分かること(ビットコイン(BTC)のSegwit)

↓↓まずは口座登録!↓↓
DMM Bitcoin

1. Segwitとはなにか?

2017年8月、ビットコインに「Segwit(BIP141)」が導入されました。

その結果、ビットコインに格納できるトランザクションの数が増え、トランザクションのセキュリティが高まりました

1-1. ビットコインのぜい弱性を消すための導入だった

Segwitはトランザクション・マレアビリティ(トランザクション展性)というぜい弱性対策のために導入されたものです。

トランザクション(Transaction)とは

トランザクションは、インプット(入金元の情報)とアウトプット(出金先の情報)で構成されています。そして、インプットには仮想通貨(暗号資産)の元の持ち主を示すトランザクションID(txid)と署名が格納されています。

なお、txidは、トランザクションのインプットとアウトプットすべてから導き出されるハッシュ値が使われています。

1-2. Segwitが改善した問題

ビットコインは、当時トランザクション・マレアビリティを解決しなければいけない状況でした。

しかしトランザクション・マレアビリティを解決するためのSegwit導入により、同時に下記の問題も改善することができました。

  • スケーラビリティ問題
  • 「ASICBoost」への対抗措置
  • ライトニングネットワーク導入への下地

1-2-1. トランザクション・マレアビリティ(Transaction Malleability)とは

トランザクション・マレアビリティとは、特定のトランザクションを「意味が変わらない程度」に書き換えることができる性質のことです。その結果、成立したはずの取引がうまく処理できなくなる問題が起きます。

トランザクションマリアビリティ(Transaction Malleability)とは

1-2-2. Txidが違う値になる事が問題

txidは、トランザクションのハッシュ値から算出します。ハッシュ値は元の値が少しでも変わると大きく変化する特性がありますので、署名をわずかに変化させただけで、txidはまったく違う値になります。

署名の変更よるtxidの変化が起こると、正しいブロックに含まれるトランザクションが、別のトランザクションIDを示している(正しく取引できていない)ように見えます。これがトランザクション・マレアビリティと言うぜい弱性です。

この問題を解決するため、署名を書き換えてもtxidが変化しないように、記録する場所を変更したのがSegwitなのです。

マウントゴックス事件
マウントゴックスでは、送金ミス時にシステムが自動で再送金するようになっていました。
この点を悪用し、トランザクション・マレアビリティを突いて何度も同じ送金を繰り返させたことが、マウントゴックス事件の大元の原因だと言われています。

1-2-3. スケーラビリティ問題とは

スケーラビリティ問題とは、要求されるトランザクション数に比べて、処理できるトランザクション数が少なすぎることです。その結果、決済遅延手数料の高騰が起きました。

処理できるトランザクション数とは、ブロックに収められるトランザクションの数のこと。

ブロックのサイズを大きくするかトランザクションを小さくすることで対策ができます。

スケーラビリティ問題

Segwitが導入されると、トランザクションの見かけのサイズが小さくなりますので自然とブロックに格納できるトランザクション数が増え、スケーラビリティ問題に対処できることになります。

1-2-4. ASICBoostへの対抗措置

ASICBoostは、事前に準備した値を使ってマイニング時のハッシュ計算を簡略化させる手法で、マイニングの効率を20%程度上げるものです。

Segwitはマイニングで求めるハッシュ値が、トランザクションIDだけでなく署名領域のIDも合わせたものとなっている仕様です。事前準備にコストがかかり、ASICBoostの効率を悪くするため事実上無効化させることができます。

ASICBoostの問題点
なぜASICBoostを無効化することがメリットなのでしょうか。
それは、マニングマシンの効率を上げる手法であるASICBoostの特許にあります。
特許で制限された技術を独占することができることにより、マイニングプールの集中化が進みます。その結果公平な承認作業が行えなくなることが問題視されました。

1-2-5. ライトニングネットワーク導入への下地

Segwitは、トランザクション展性などの対策だけではなく、ビットコインの将来への重要な布石になっています。それは、ライトニングネットワーク導入への下地です。

ライトニングネットワークは第2世代のブロックチェーンを代表する技術で、スケーラビリティ問題を大幅に解決することが期待されています。

しかしビットコインはトランザクション・マレアビリティによって署名の変更が可能だったため、ライトニングネットワークで安全な取引ができませんでした。その問題がSegwit導入によってクリアされたのです。

bitbank

2. Segwitはトランザクションの構造を変える技術

Segwitは「Segregated Witness」の略で、トランザクションにある署名をトランザクションの外へ移動する対応です。

Segwitの仕組み

Segwitは、トランザクションに署名格納用のWitnessと呼ばれる領域を増やして、署名をtxidやサイズ算出の対象外にします。そうすることで、署名の変更がトランザクションIDへ影響することを防ぎ、トランザクションの見かけのサイズを小さくすることができるのです。

また、「領域を追加する」対応にすることで、Segwit非対応のノードが作成したトランザクションとの共存も可能になります。そのため、Segwitの導入はソフトフォークによって行われ、ハードフォークによるコインの分裂リスクもありませんでした

DMM Bitcoin

3. Segwitの問題点

残念ながら、Segwitにも問題点があります。

3-1. ブロックサイズは増加している

Segwitにおけるブロックサイズ

Segwitは、トランザクションのサイズを小さくしてスケーラビリティ問題を回避する方法ですが、じつはブロックサイズの増加も行っています。

ブロックサイズが大きくなると、ブロックチェーンの保管にそれだけ多くの容量が必要ですし、マイニングの計算時間にも影響します。

なぜなら、トランザクションのサイズに含まれるはずの署名を、「トランザクションのサイズとしてカウントされない位置」に移動したのが、Segwitの本質だからです。そのため、トランザクションを以前より多く格納するためには、トランザクションのサイズにはカウントされなくなった署名を格納するための容量が余分に必要になります

この問題を解決するため、Segwitではブロックサイズの最大値の緩和も行われ、理論上は最大4MBになっているのです。

3-2. それほど普及していない

Segwitの普及率が伸び悩んでいるのも、厳しい問題です。

Segwitはブロック構造を変更する対応であったにもかかわらず、このしくみのおかげで既存のブロックと共存できるため、ソフトフォークによる対応で済みました。

Segwit対応の決済トランザクション
2019年7月上旬時点で約45%(transactionfee.info

そのためSegwit対応の強制力は小さく、Segwit対応アドレスの使用率は、2019年7月時点でも5割に達していません

これには、以下のような要因があると思われます。

ユーザーへのインパクトが少ない

コストをかけてSegwit対応をしても利便性や使用感が劇的に変わることはありません。それなら、同じコストをかけて新たなトークンに対応した方が、ユーザーへのインパクトは大きく、ユーザー確保へのアドバンテージが得られます。

送金ミスのリカバリーが効かない

ビットコインキャッシュは、ビットコインのアドレスへ送付しても問題なく取り出せます。しかし、Segwit対応したアドレスへ送付すると、ビットコインキャッシュを取り出すことができません。そのリスクから、ユーザー保護のために対応していない取引所や大手ウォレットも少なくないでしょう。

マイニングに余計な負荷がかかる

前節で説明したとおり、Segwitでブロックサイズが増えた分、マイニングに負荷がかかります。ハードフォークと違って、Segwitに対応しなくてもビットコインのマイニングは継続できるため、敢えてコストをかけてSegwit対応するマイナーは多くないかもしれません。

bitbank

4. Segwitアドレスのしくみと使い方

Segwit対応によってアドレスの体系が変わっており、それまでのアドレスと違ったアドレスが生成されるようになりました。

それに加えて、Segwitはソフトフォークで導入されたため、既存のアドレスも使えるようになっています。そのため、Segwit では次の2種類のアドレスが使えるようになっているのです。

Segwitで利用できるアドレス

  • ネイティブSegwitアドレス
  • P2SHでラッピングしたアドレス

4-1. ネイティブSegwitアドレス

Segwitのネイティブアドレス

アドレスの先頭3文字が「bc1」になっているアドレスです。Segwitのために作られた新しいアドレス体系になっており、このアドレス宛てに送金することで、そのトランザクションにSegwitが適用されます。

Segwitが適用されるとトランザクションの見た目のサイズが小さくなりますので、送金手数料を安く抑えることができます。

ただし、相手が対応していても自分が対応していなければSegwit形式で送ることができませんし、相手が対応していなければ、ネイティブSegwitアドレスを作り出すことができません。自分と相手のウォレットが両方ともSegwitに対応していなければ、このアドレスは利用できないわけです。

4-2. P2SHでラッピングしたアドレス

P2SHアドレス

相手のウォレットがSegwitに対応していなかった場合は、「3」で始まるアドレスを使うことで、Segwit対応済みのウォレットから送金することが可能です。

この場合、Segwitによる送金手数料への効果はありません。しかし、違う仕様間でもやり取りできると流動性が阻害されませんので、ユーザーにとってはメリットがあるでしょう。

なお、ビットコインの一般的なアドレスは「1」で始まるものでしたが、「3」で始まるアドレスもマルチシグアドレスとしてほぼすべてのウォレットが対応しています。

4-3. P2SHアドレスを使う方が無難

ネイティブSegwitアドレスとP2SHアドレスは、送金先の対応状況によって使い分けるのが正解です。ただし、現在のところSegwit対応しているウォレットの種類はそれほどありませんので、原則としてP2SHアドレスを使った方が無難でしょう。

DMM Bitcoin

5. Segwitを導入している仮想通貨

Segwitはビットコインだけの技術ではありません。以下の仮想通貨でも、すでにSegwitを導入しています。

モナコイン

モナコインは、ブロックサイズが0.5MBと小さかったこともあり、早い時期にSegwitを導入しました(2017年7月)。

ライトコイン

ライトコインは、ビットコインの問題点を改善することを目標に、2011年10月に誕生しました。

開発者はライトニングネットワークにも関心を寄せ、ライトニングネットワークの実装に向けて早々にSegwitを導入しました。また、送金テストなども積極的に行っています。

bitbank

6. 似てるけど別物! Segwit2x

Segwitではなく、Segwit2xが検索でヒットすることがあります。Segwit2xはSegwitとは違うものですので、間違えないようにしましょう。

6-1. Segwit2xは折衷案から生まれた

ニューヨーク合意

Segwit2xは、ビットコインのブロックサイズを1MB制限から2MB制限へ拡張する提案です。

2017年8月ビットコインがハードフォークしたことによりビットコインキャッシュが誕生しました。

このハードフォーク内容を決定させるために2017年5月に行われた話し合いは「ニューヨーク合意(NYA)」と呼ばれています。

そこでブロックサイズ拡張推進派と反対派の話し合いの中でSegwitとセットで導入されることが決まりました。

その内容は、Segwit導入後5ヶ月の準備期間の後に、Segwit2xのハードフォークを実施すると盛り込むことで、ブロックサイズ拡張推進派と反対派の合意が取れ、Segwitを導入できたものです。

6-2. ビットコインキャッシュ誕生

ビットコインキャッシュは、2017年8月にハードフォークされた仮想通貨で、ブロックサイズを最大8MBまで拡張できる対応です。

このハードフォークはニューヨーク合意を無視するような形で行われました。

以下のようなタイミングです。

  • 2017年5月 NYA(ニューヨーク合意)
  • 2017年7月 Segwit導入
  • 2017年8月 ビットコインキャッシュハードフォーク
  • 2017年12月 B2Xハードフォーク

この急なハードフォークは、ブロックサイズ拡張推進派の強硬なハードフォークとも言われています。

また、Segwit2xは2017年10月以降も正式に導入されず、2017年12月にB2Xというアルトコインとして分裂しました。

2019年6月現在、B2Xは時価総額ランキングでは2085位となっています。

参考:CoinMarketCap:SegWit2x(B2X

6-3. SegwitではASICBoostが使えない

ブロックサイズ拡張推進派がSegwitに反対した理由の1つは、Segwitが「ASICBoost」を無効化するからです。

通常のマシンに比べて20%程度効率良くマイニングできる「ASICBoost」が使えなくなるのは、大手のマイナーにとって死活問題になります。そのため、Segwitの対抗馬として、ビットコインキャッシュやB2Xが作り出されたのでしょう。それに加えて、新たなASICBoostとして、2018年3月に新たな手法を取り入れたCovertASICBoostが誕生しています。


まとめ

Segwitの導入によって、ビットコインはセキュリティが強固になりました。また、副次的ながらスケーラビリティ問題を緩和できたことは、ビットコインにとって朗報と言えるでしょう。それに加えて、ライトニングネットワーク導入を進めやすくなったことで、ビットコインの未来を大きく切り開いた重要な対応の1つとも言えます。

そんなSegwitについて、説明した内容を振り返っておきましょう。

  • Segwitはトランザクションの署名の格納位置を変更する対応
  • Segwitによって、トランザクション展性を防げる
  • Segwitによって、見かけのトランザクションのサイズが小さくなり、格納できる数が増える
  • SegwitによってASICBoostが無効になるため、大手のマイナーが反対していた
  • ライトニングネットワークの前提として、Segwitの導入が必要

Segwitについては、まだ反対派も少なくありませんが、今後、当たり前の基礎技術になってくる技術ですので、押さえておいて損はないでしょう。