ビットコインの課題を解決する!「SegWit」とは何か
ブロックチェーン初心者向けにSegWitとは何か詳しく解説しています。ビットコインのスケーラビリティ問題を解決することができます。トランザクションの速度が遅いことが課題になっていますが、SegWitの仕組みを利用することで解消できるでしょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
今回は、SegWitについて解説します。
ビットコインにおけるトランザクション、スケーラビリティの課題を解決することができます。SegWitとは何か、ビットコインが抱えている課題とは何か知りたい方はぜひ読んでみてください。
今回はSegWitについて勉強してみよう。
田島メンター!SegWitというのは何ですか~?
ビットコインの持つ問題を解決するための技術のひとつなんだ。まずはどういう特徴があるのかを説明するよ。
お願いします!
SegWitとは
SegWitとは、Segregated Witnessの略で、日本語では証明書を分離するという意味です。
SegWitは、ソフトフォークにより実装される、ビットコインの様々な課題を解決することができます。
SegWitでは、ブロックサイズは同じままで、ブロックウェイトを制限することで、より多くのトランザクションを利用できます。
トランザクションについての記事も合わせて参考にしてみてください。
メリット
スケーラビリティ問題の解決
SegWitにより、ブロックサイズを増加させ、ビットコインブロックチェーンのスケーラビリティ問題を解決できます。
ブロックチェーンについての記事も合わせて参考にしてみてください。
Transaction malleability対策
SegWitにより、トランザクションマレアビリティ(Transaction malleability)対策が可能です。
トランザクションマレアビリティとは、日本語でトランザクション展性を意味し、2.6兆円以上の債権総額となったビットコイン盗難事件であるマウントゴックス事件(2014年2月23日)で利用されたセキュリティーホールです。
デメリット
1ブロックに記録するトランザクションデータが増えることで、マイニングに必要なスペックが上がることで、より性能の高いマシンを持つマイナーによるマイニングの中央集権化が危惧されています。
SegWitを使うことによって対策できるとされる、現状の問題点が2つあるね。
スケーラビリティの問題、トランザクション属性の問題ということですね。
そうだね。それらの問題をSegWitでどうやって解決していくかについて見ていこう。
スケーラビリティ問題とフォークによる解決
スケーラビリティ問題とは、ブロックサイズが1MBと小さい中でできるだけ多くの情報を詰め込もうとすることです。
情報詰め込みにより容量を増やそうとするのですが、詰め込むため遅延の原因になります。
これを解決するために「ハードフォーク」と「ソフトフォーク」という方法があります。
ハードフォークでは、ブロックサイズを1MBから2MBにするというようは、ブロックチェーン自体の仕様を変更する解決方法です。ハードフォークはブロックチェーンの仕様変更により、仮想通貨が分裂します
ソフトフォークでは、ブロックサイズを1MBのまま、トランザクションサイズを多くする方法です。ソフトフォークは仮想通貨の仕様変更が行われ、仮想通貨自体は分裂しません。
SegWitはソフトフォークで実現されます。
SegWitで考えるトランザクション
トランザクションデータ
次のデータはトランザクションのデータ例です。
Input: Previous tx: f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6 Index: 0 scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10 90db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501
Output: Value: 5000000000 scriptPubKey: OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d OP_EQUALVERIFY OP_CHECKSIG
参照:https://en.bitcoin.it/wiki/Transaction
データ解説
scriptSig
本人証明を行う上で必要な署名データです。
scriptPubKey
本人証明を行うためのハッシュ値です。
SegWitの仕組み
SegWitでは従来のブロックサイズではなく、新たにブロックウェイト(Weight)という概念を用いてサイズの分離と集約を行います。
ビットコインのトランザクションのうち、先ほどのscriptSigというデータ部分が大部分を占めます。
SegWitでは、このscriptSig部分をWitnessと呼び、取引を決定づけるデータではないため、トランザクションのマークルツリー(ハッシュ木)から分離します。
分離されたWitnessは従来の1MBのブロックサイズ制限にカウントされません。
Witnessが分離されるということは、その分別のデータを集約させることが出来ます。
つまり、Witnessが大きければ、その分SegWitを適用した際の効果が高まるということです。
このことにより、今まで1MBのトランザクションデータを記録していた部分に、より多くのトランザクションデータを記録することが出来ます。
今回は、SegWitについて解説しました。
仮想通貨のスケーラビリティ問題については今後もついて回るので、ぜひ覚えておきましょう。
ビットコイン2つの問題と、SegWitの仕組みについて説明したよ。
ブロックウェイトというものを使うことによって、トランザクションの問題を解決するわけですね。
ビットコインの問題への対策にはライトニングネットワークというものもあったね。こちらも一緒に覚えておこう。
復習しておきます。ありがとうございました!
この記事を監修してくれた方
中本賢吾(なかもとけんご) 開発実績:PHPフレームワークを利用した会員制SNS・ネットショップ構築、AWSや専用サーバー下でLinuxを使用したセキュアな環境構築、人工知能を利用したシステム開発、店舗検索スマホアプリ開発など。 その他にも地域の職業プログラマー育成活動を行い、2018年には小学生がUnityで開発したオリジナルAndroidアプリをGooglePlayでリリース。ゲームで遊ぶより作ろうぜ!を合言葉に、小学生でも起業できる技術力を育成可能で有ることを証明し続けている。 |