やあ草男だ。
今回はスケーラビリティ問題を解決するための2つの策について説明していこうと思う。
以前にもスケーラビリティ問題の記事書いたから見てね。
容量の圧迫で大問題
以前説明したスケーラビリティ問題のおさらいになるが
ユーザーと取引量がどんどん増加していることで
あらかじめ設定されたブロックサイズが圧迫されてしまい
取引の処理速度が遅くなってしまう。
これにより少ない貯金をはたいてせっかく買った仮想通貨がなかなか自分のものにならないことや
頑張って投資を勉強し、ベストなタイミングで売ろうと思ったのに
思わぬ損を被ってしまう可能性さえある。
スケーラビリティ問題の解決のための2つの策
そうなってしまわないために取引データやブロックサイズを改変する2つの方法がある。
- Segwit(セグウィット)
- unlimited(アンリミテッド)
横文字であまり聞きなれないと思うがやりたいことはすぐにイメージ出来ると思うのでそれぞれについて説明しよう。
Segwit(セグウィット)
Segwitは「Segregated Witness」の略で、日本語で訳すと「分離された署名」となる。
署名??となるかもしれないが、ここを詳しく説明すると
次のようなことになってしまうので出来るだけ簡単に
分かりやすくなるように説明したい。
SegWitではトランザクションの大部分を占めるscriptSigと呼ばれる署名のデータをwitness dataと名付け、トランザクションインプットの外に移動させました。SegWitトランザクションが従来(SegWit 未実装)のノードに送信されブロックに取り込まれる時、witness dataは切り離されます。SegWitでは、witness dataが切り離されたトランザクションであっても有効なトランザクションとするので、witness data分の容量を節約することができ、従来の1MB分以上のトランザクションを1ブロックに含めることができるのです。
BTCNさんからの引用
ブロックには多くの取引履歴が保存されており
1つ1つの取引データの中で大部分を占めているのが「署名」データ。
署名データはブロックチェーン全体の約60%を占めている。
そこでこの署名データを他のデータベースに格納し
本来署名データが入る部分に新しい取引データを格納することで
1つのブロックにより多くの取引データを格納することが出来、
処理速度の向上が見込める。
しかし、Segwitを導入することでASICBoostと呼ばれるマイニング技術が仕様出来なくなってしまうため
反対するマイナーが多く、一度導入が却下された。
※その後、8月24日に実装されました。
ブロックの規格は変わらないため「互換性のあるアップデート」である
「ソフトフォーク」の一種になる。
unlimited(アンリミテッド)
ブロックサイズはそのままで中身の取引データを圧縮することで
処理速度の向上を図る「Segwit」に対し、
「unlimited」は中身の取引データ量はそのままでブロックサイズを大きくして
より多くの取引データを格納できるようにしようという方法である。
ブロックの中身を書き換えて、格納場所を分けて…とするよりも
単純にブロックサイズを大きくしたほうが楽で
理にかなっていると思うかもしれないが、unlimitedにも問題はある。
容量を引き上げることは出来るが、元々のブロックとは異なる仕様になり
互換性がなくなってしまうのだ。
つまり、全く別の新しい仮想通貨が分裂という形で誕生してしまうことになる。
実際の例では「イーサリアム(ETH)」から「イーサリアムクラシック(ETC)」が、
ビットコインから「ビットコインキャッシュ(BCH)」が誕生した。
ブロックの規格が変わってしまうため「互換性のないアップデート」である
「ハードフォーク」の一種になる。
こちらは聞いたことある人も多いのではないだろうか。
まとめ
今回はスケーラビリティ問題を解決するための策「Segwit」と「unlimited」について
説明した。
いずれも技術的な話が出てきてなかなかイメージが出来ないかもしれないが
いざ実装前後になると価格が大きく変動する可能性が高いため
ぜひとも理解しておきたい。