仮想通貨

【注目】ビットコインの救世主?SegWitの特性を解説

【注目】ビットコインの救世主?SegWitの特性を解説

2017年8月にビットコインに実装されましたSegWit

ビットコインへの実装目的としては、

・マリアビリティ問題・・・第三者や悪意のある受取人が取引データ(トランザクションデータ)を改ざんし、二重取引を起こす事が可能である脆弱性の問題。

・スケーラビリティ問題・・・1ブロックの最大容量が1MBに設定されている為、取引の承認が遅延する問題。

上記の問題を解決する為です。

特に、以下の記事でも解説している通り、ビットコインの抱えるスケーラビリティ問題は重要視する必要がありました。

 

そこで、今回はSegWitを実装する事で、上記の問題をどの様に解決出来るのかを解説します。

SegWitとは?

概要

SegWitとは、Segregated Witnessの略で、ブロックチェーン上に生成されるブロックの中に含まれているScript Sig(署名データ)を分離し別領域(Witness)で管理出来る技術です。

ブロックチェーンの概要は以下で解説しております。

 

SegWitを導入する事により、

・トランザクションデータで改ざん出来てしまう部分(Script Sig)を分離

・分離する事で1ブロックに格納出来る領域を増やす

上記を実現する事が可能になります。

SegWitのメリット

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

マリアビリティ問題とは、トランザクションデータに含まれるScript Sigを取引内容を変更せずに書き換える事が出来てしまう問題です。順番に解説します。

まず、ブロックチェーンで生成されるブロックの中には、トランザクションデータが記載されています。

トランザクションデータの中には、

・アウトプット(Script Pubkey)・・・送り先を記載したデータ

・インプット(Script Sig)・・送信元を記載したデータ

が含まれています。

そして、このScript Sigは、取引内容を変更せずに変更出来てしまう状況でした(これは、ブロックチェーンのバグと考えられています)。

 

これが何故問題になるのかと言うと、

例えば、AさんがBさんに1BTC送金した際、通常であればBさんが受け取った1BTCの送信元はAさんになります。

しかし、このBさんが悪意のあるユーザーだった場合、Script SigをAさんでは無い違う誰かに送られたと書き換える事が可能であり、書き換えられてしまった場合は、送金は問題無く完了している筈なのに、Aさんでは無い違う誰かに送られたデータとして扱われてしまいます。

そして、Bさんは1BTCを受け取っているにも関わらず、Aさんに送金出来ていないと伝える事で、再びAさんに送金して貰える可能性があります(二重取引)。

そんな問題を解決する為に、SegWitを実装し、Script Sigをブロックチェーンとは別の領域であるWitness領域に分離する事で、マリアビリティ問題を解決出来ると考え、実装する事になりました。

スケーラビリティ問題の解決

スケーラビリティ問題とは、ビットコインで採用されているブロックチェーンの特性上、1ブロックの容量が最大1MBと設定されている事で、

・取引の承認遅延

・遅延による手数料高騰(手数料の高いデータが優先的に処理される為)

発生する上記の問題です。

 

そこで、SegWitを実装する事で、マリアビリティ問題の解決と同時にスケーラビリティ問題も解決出来ると考えられました。

SegWitはScript Sigを別の領域に分離出来る技術です。分離する事で、ブロックの中で空いた容量の中に、トランザクションを格納する事が出来るので、処理速度の向上が測れます。

また、SegWitを導入する事により、現在テスト段階ではありますが、ライトニングネットワークの導入が可能になります。

ライトニングネットワークとは、オフチェーン(ブロックチェーン外で取引する事)で、直接送金などを可能にする技術です。

ライトニングネットワークを利用するには、SegWitの実装が必須であり、ライトニングネットワークを利用する事が可能になれば、より取引の処理速度を向上する事が見込めます。

SegWitのデメリット

マイニング性能の向上

SegWitを実装する事で、Script Sigを分離するだけでは無く、1ブロックの容量を1MB→1.7MBまで大きくする事が可能です。

しかし、1ブロックの容量を大きくする事により、マイニングの性能も向上させる必要があります。マイニングの性能を向上するには、より高性能のマシンを多く使用する必要がありますので、マイナーの負担が大きくなる事から、不満の声が挙がっていました。

マイナーの報酬減

ブロックの容量を上げる事で承認速度を向上させると、送金詰まりなどが緩和されるので、手数料の高騰が無くなり、マイナーの報酬が低くなります。

 

余談ですが、ここまでで挙がりました、

・マイニング性能の向上

・マイナーの報酬減

上記は、あくまでマイナー側でのデメリットですので、ユーザー側で考えると、デメリットと考える程では無いでしょう。

ですが、最後の1点に関しては、ビットコイン自体に影響が出る可能性がありますので、ユーザー側としても、注目する点です。

導入後の心配

SegWitは複雑なシステムの為、一度導入すると、導入前に戻す事は出来ません

これは、導入後に問題が発生しても、導入前に戻すという選択肢が消え、如何にして現状を良くするのかという方面で解決の糸口を考える事になります。

現状、特に問題は発生していない様ですが、今後の状態に注目です。

鍵を握るのはライトニングネットワーク?

SegWitを導入した事で、現状大きな悪い点も無ければ、特段良い点もありません。相変わらずトランザクション増加時は送金詰りなどは多く発生しています。

ですが、ライトニングネットワークを利用する事になれば、ビットコインの姿は大きく変わる事でしょう。SegWitを実装した事で、ライトニングネットワークを利用する準備が出来たビットコインの今後に注目です。