ソフトフォーク

スケーラビリティ問題を解決するSegwit(セグウィット)とは?

Segwit(セグウィット)とは?スケーラビリティ問題とその背景

Segwit(Segregeted Witness)とは、ビットコインの取引サイズを圧縮してスケーラビリティ問題を解決する技術のことです。

このSegwitという技術は、ビットコインのスケーラビリティ問題を解決する為の技術として考案されたものなのですが、その背景にはビットコインのブロックサイズ問題の解決以外にも、ビットコインコミュニティ間のしがらみなどがありました。

では、それらを踏まえてSegwitについてを解説していきます。

ビットコインのスケーラビリティ問題への懸念

元々ビットコインは取引ブロックのサイズが1MBでそのブロックの生成は10分に1度というルールがあるのですが、この「10分に1度」という難易度によってマイナーはより複雑な計算を解く作業をしなければならなくなります。

この仕組みによってビットコインのマイニングの難易度が上がり、改ざんのできないブロックチェーンが作られます。

しかし、ブロックの生成時間が10分だと1秒間に7件の取引しか処理することができないので、どうしてもトランザクションの速度が遅まってしまい「トランザクション詰まり」が起こってしまうのです。

それだと日常でVISAのようなペイメントに使われることは難しく現実的に実用化が難しいという懸念がありました。

これがビットコインの「スケーラビリティ問題」です。

ビッグブロック派とスモールブロック派

そしてこのスケーラビリティ問題を解決する為に2つの解決策が提示されたのですが、それと同時に2つの派閥が生まれる事となりました。

一つがハードフォークによってビットコインのブロックサイズを1MBから更に大きくするという「ビッグブロック派」で、もう一つがソフトフォークによってブロックサイズはそのままで取引データを圧縮するという「スモールブロック派」です。

なお、後者のソフトフォークによる解決策がSegwitの実装によるものです。

Segwitの特徴

Segwitは取引データと署名データを切り離す

Segwitは取引サイズを圧縮してスケーラビリティ問題を解決する技術ですが、ブロックの中にある署名データと取引データを切り離すことで取引データのをより一つのブロックに含められるようになります。

なお、Segwitという由来は「Segregeted Witness」から来ており、「Segregate」は分離を意味し「Witness」は連署人を表す意味なので、それを短縮して「Segwit」と呼ばれているわけですね。

マリアビリティ問題の解決

このSegwitを導入することでトランザクションの遅延を解消して手数料も低くすることができますが、それ以外にも改ざんを防ぐ効果があり、これをマリアビリティ問題の解決と呼んでいます。

Segwitの実装によって署名部分をトランザクションから分離させることで、署名の書き換えのリスクを防止することができ、ライトニングネットワークも実装しやすくなります。

ソフトフォークによる実装

なお、このSegiwitに関してはハードフォークではなくソフトフォークによってビットコインに導入されました。

ソフトフォークとは、ハードフォークとは違い仮想通貨を分裂させずに仕様変更のみを実行することです。

ハードフォークではブロックチェーン自体が仕様変更されるので仮想通貨も分裂してしまいますが、ソフトフォークではハードフォークのように仮想通貨自体が分裂してしまうようなことがありません。

今回のビットコインへのSegwit導入はこのソフトフォークによって実装されましたが、ビットコインの他にライトコインやモナコインでもソフトフォークによるSegwit実装がされています。

Segwit導入に関する対立

さて、このSegwit導入に関しては開発者達や大手マイニング業者との複雑なしがらみがあり、上述した2つの解決策は対立することとなりました。

ビットコインのコア開発者達は取引データを圧縮するSegwitを実装したかったのですが、大手のマイニング業者をそれを反対します。

マイニング業者にとっては、マイニング用の専用ハードウェアを販売してビジネスをしていたので、仕様変更によってそのマイニングマシンが売れなくなってしまっては困ると考えたのです。

ですが、コア開発者達も単純にブロックサイズだけを大きくするハードフォークを行うことは全く互換性の無い通貨を生むことになり、ビットコインにとってもリスクがあると考えていました。

そこで両者の方針の違いから対立してしまうようになるのですが、Segwitの機能も導入して同時にブロックサイズも大きくするという新しい解決策が出され、それにとりあえずの合意がされました。

それが「Sedwit2x」です。

Segwit2xの特徴とは?

Segwit2xとは、取引サイズを圧縮するSegwitに加えてブロックサイズを1MBから2MBへ拡大する機能であり、データの圧縮もブロックサイズの拡大も両方やってしまおうといった解決策です。

そんなSegwit2xは「取引データを圧縮してスケーラビリティ問題を解決する」という点はSegwitと共通していますが、Segwitがソフトフォークだったのに対しこのSegwit2xはハードフォークによる実装でした。

ハードフォークとは、ソフトフォークとは違ってブロックチェーンそのものの仕様が変更されことを言い、これを「仮想通貨が分裂する」とも表現します。

なので、元のブロックチェーンとは互換性の無い全く違ったものが出来上がります。

このSegwit2xに関してのメリットはより大きなブロックサイズと取引容量でスケーラビリティを解決できる点にありますが、デメリットは本家のビットコインと互換性が無くなり、それによって不確実なエラーやマイナーや開発者間のコミュニティが対立するリスクがあった点です。

最終的にSegwit2x派の支持率は下がっていき、どんどんとその実装は延期されました。

ビットコインキャッシュを誕生させた大手マイニング業者

そのようなSegwit2xですが、結局大手マイニング業者側はこれを受け入れることができませんでした。

そこでビッグブロック派である中国の大手マイニング業者Bitmainなどによってブロックサイズが8MBの「ビットコインキャッシュ」をハードフォークによって誕生させたのです。

以上のような過程で、コミュニティ間で対立ばかりを起こしてしまっても本家のビットコインに悪影響が出てしまうので、当時考えられていたSegwit2xは延期されることとなり、昨年2017年の年末にSegwit2xが実装されたビットコイン2x(B2X)が誕生しました。

B2Xはブロックサイズ4MBでブロックの生成時間が2.5分の仮想通貨としてビットコインから分裂しましたが、ブロックサイズ、ブロックの生成時間のいずれも以前に誕生したビットコインキャッシュに劣っていたのでその存在意義や優位性も徐々に薄れてしまったのです。

Segwitの今後

以上がSegwitやSegwit2xについてでしたが、ビットコインは中央管理者のいない分散型のシステムなので、合意や統治も全て理論上は分散化されてます。

なので、このように意見の食い違いやビジネスの関係性といった政治問題が発生してしまう部分があるのです。

なお、Segwitに関しては、今後ライトニングネットワークの実装も考慮すると不可欠な技術となるかもしれません。

上述した通り、Segwitにはデータを分離して格納できるメリットがあるので、ライトニングネットワークの実装を助けることになり、システムの脆弱性も改善することができます。

今後ライトニングネットワークとSegwitの組み合わせにも一躍注目しておきたい所です。