- ビットコインには問題点がある
- 長らく議論の対象となっている、解決すべき問題が2つあります。データ容量問題と、マウントゴックス社の事件の際に広まったビットコインの脆弱性です。
- Segwitの仕組みを解説
- 2つの問題点を解決するために、Segwitは考案されました。
- Segwitのデメリット
- マイナー(マイニングをする個人や企業)達に負担が掛かる場合もあるため、反発されやすいです。
- 目次
概要
セグウィット(Segwit)とは、トランザクション(取引履歴)を圧縮してデータ量を小さくする技術です。これは「スケーラビリティ問題」、「トランザクション展性」を解決できる技術として期待されています。
しかし、Segwitはマイナーにとってマイナスな面が大きいため、賛同が得る事が出来ずに殆どの通貨が導入出来ていません。ビットコイン分裂問題でも長らく争点となっています。
ビットコインの問題点
前述したように、Segwitは「スケーラビリティ問題」、「トランザクション展性」の2つの問題を解決出来るとしていますが、それぞれの問題について解説していきます。
スケーラビリティ問題 | トランザクション展性 | 概要 | ブロックのデータ容量に余裕がなく、送金遅延等の問題が起きてしまっています。ビットコインのブロックのデータ容量は1MBです。 | ビットコインの「トランザクションID」というデータが外部から改ざん出来る脆弱性があり、マウントゴックスがこの脆弱性を突く攻撃を受けたことを発表しました。 |
---|
スケーラビリティ(scalability)問題とは?
スケーラビリティとは、システムの拡張性や柔軟性です。つまり、機能が拡張、もしくは負荷が増大した場合、どれだけシステムが柔軟に対応出来るかということです。
まず前提知識として、ブロックチェーンの「ブロック」には取引の記録が書き込まれていき、ビットコインの場合約10分ごとに新しいブロックが生成されていきます。
パソコンのハードディスクに「容量」と呼ばれる、どれだけの量のデータを保存できるかの値が存在するように、ブロックにもデータ容量というものがあります。
ビットコインのブロックのデータ容量は1MBという値です。
現在ビットコインのブロックはこの1MBギリギリまで使用されている場合が多いです。
ビットコインの取引量が増えていくと、今よりも更にデータの処理速度が遅くなってしまうでしょう。
これがスケーラビリティ問題であり、現状では解決方法の一つとしてSegwitが期待されています。
他の解決方法としてブロック容量の拡大もよく議論されますが、この2つの適用方法にはソフトフォークとハードフォークという違いがあります。
それぞれの詳しい説明は別記事で説明するとして、簡単に述べると
「ブロック容量の拡大」=ビットコインが分裂する(ハードフォーク)
「取引データ量の縮小(Segwit)」=ビットコインが分裂しない(ソフトフォーク)
という違いがあります。
トランザクション展性(Transaction Malleability)とは?
ビットコインでの取引は「トランザクション」と呼びます。
トランザクションとは、あるビットコインアドレスからどのビットコインアドレスに幾ら送金されたかを示します。
このトランザクションには、それぞれIDが設定されています。
そしてこの「トランザクションID」が外部から変更可能であるという、ビットコインに存在する脆弱性が「トランザクション展性(Transaction Malleability)」と呼ばれ問題になっています。
注意点として、変更可能なのはトランザクションIDだけです。
取引情報(例:AさんからBさんへ3BTC送金した、という情報)は署名で保護されているため、トランザクションIDを変更したとしても仮想通貨の送金先、送金額の変更は出来ません。よって直接ビットコインを盗難することは不可能です。
では何が問題なのかと言うと、ウォレットや取引所がこのトランザクションID「だけ」を参照して取引を識別していた場合です。
こういった取引所やウォレットが管理しているトランザクションIDを外部から変更することで、ID不一致が多く出てしまいます。
その結果、ビットコインの2重送信が多発してしまったり、データの整合性が取れなくなり、改ざんされた取引がビットコイン・ネットワークに承認されてないかのように見せかける事が出来てしまいます。
例として、2014年にビットコインを消失したマウントゴックス社がこのトランザクション展性を利用した攻撃を受けたと発表しました。
この発表を信用した場合、マウントゴックス社はこのトランザクションIDを参照する事で送金履歴を管理する古い仕組みを利用していたため、ID不一致が多く出てしまい様々なデータ不整合が出てしまった、ということになります。
システムがIDを誤検出することでビットコインが何度も送信されてしまう、といった現象を外部から起こされてしまったのです。
また、この攻撃によって他の一部のウォレットアプリもID不整合により仮想通貨の送金、口座残高の参照が不可能になりました。
Segwitの仕組み
「スケーラビリティ問題」、「トランザクション展性」という問題について、Segwitがどのように解決するのかを解説していきます。
スケーラビリティ問題解決方法
取引データを分解すると、インプット、アウトプット、電子署名の3つに分けることが出来ます。
インプット=送信元の情報
アウトプット=送信先の情報
電子署名=データに付与される電子的な署名
Segwitではこの3つの内、「電子署名の部分だけを別管理」にすることで取引データを縮小することが出来ます。
これにより、約60%の取引データの圧縮が可能と言われています。
これによりブロックにより多くのデータを収納することが出来るようになり、前述したスケーラビリティ問題を解決出来ると期待されています。
ちなみに、Segwit適用後の理論上のブロックの最大容量は約4MBと言われていますが、ブロックの平均の容量は約1.7MB程度だろうと推測されています。
トランザクション展性解決方法
先程、Segwitでは「電子署名の部分だけを別管理」すると述べました。
実際には署名の他にもデータが含まれていますが、それらはトランザクションIDの計算に使われるデータです。
そのデータがSegwitにより取引データ本体とは別の場所に移された結果、外部からトランザクションIDを変更することが出来なくなります。
これにより、マウントゴックスが受けたトランザクション展性攻撃のような取引所やウォレットに対しての攻撃が出来なくなり、取引所やウォレットの開発者にとっては、単純にトランザクションIDのみを参照し取引を認証する仕組みを作ることでコードが単純になる、という利点があります。
Segwit導入によるデメリット
この様に、Segwit導入することによるメリットは大きいとされていますが、導入している通貨はそれ程多くありません。理由として、マイナー(マイニングを行う個人や企業など)の反発があるからです。
そもそも、Segwitを導入するためにはある一定数のマイナーの賛同が必要になります。
ただし、マイナーにとってSegwit導入はデメリットもあります。
もしSegwitを導入することになれば、ノードと呼ばれるコンピューターをSegwitに対応するものに変える必要がある場合も存在します(ただし、必ず変更する必要がある訳ではありません)。
またビットコイン分裂騒動で度々名前の挙がる、中国でマイニング機械を販売している企業Bitmainの、高性能マイニング製品ASICBoostが使えなくなるとも言われていました。
逆にマイナー以外の視点から見ると、ASICBoostを使っているマイナーが有利になる状況は、ビットコインの本来の目的である「非中央集権での平等」に反しているため、ASICBoostが効かなくなることがメリットとなります。
そのためビットコインでは強制的なUASFという案によりSegwitが導入されようとしていました。
しかし、ビットコインで可決されたSegwit2xという案ではASICBoostがそのまま使えるとも言われており、それによって最終的には多くのマイナーの支持を集ることになりました。
Segwit承認通貨
2017年4月21日:デジバイト(DigiByte)
2017年4月23日:モナコイン(MONAcoin)
2017年4月27日:ライトコイン(Litecoin)
2017年7月21日:ビットコイン(Bitcoin)Segwitが採用される段階に近付いていくタイミングで、それぞれの通貨が価格を上げています。ビットコインについては複雑な経緯がありますが、Segwitロックイン後の8月には過去最高値を更新し続けています。
ある仮想通貨がSegwitを導入するか議論している、という情報が広まった場合、価格が上がる可能性が高いと言えるでしょう。
まとめ
Segwitは「スケーラビリティ問題」、「トランザクション展性」を解決する方法として評価されています。
2017年7月21日、ついにビットコインでもSegwit導入が決まりました。
しかしマイニングの面から見るとデメリットがありますので、マイナー達の反発により、他通貨でSegwitが否定される可能性も十分にあります。
恐らくこれからもSegwitについては各所で議論されていくでしょう。
CoinPostではそういった最新情報を海外ニュースの翻訳等から取り上げていきますので、是非チェックして下さい。