ブロックチェーンは仕組み上、スケーラビリティが深刻な問題になります。つまり、参加者が増えてブロックチェーンネットワークが拡大するほど、送金遅延、手数料増加、処理速度の低下などの問題が起きてしまうのです。
Vitalikが「分散化、安全性、スケーラビリティの3つを同時に満たしていくのは難しい。なぜなら、これらは互いに競合するから。」と発言しているように、ブロックチェーンの分散化と安全性を保ちながらスケールさせていくには、さまざまな工夫が必要であり開発、導入が進められています。
そこで当記事ではビットコインとイーサリアムにおいて、ブロックチェーンをスケールさせるために提案、開発、導入されている代表的な方法について紹介していきます。
ブロックチェーンのスケーラビリティ問題とは
ブロックチェーンのスケーラビリティ問題とは、パブリックなブロックチェーンを基盤としてネットワークを拡大していくことは難しい!という問題です。ネットワークを拡大していくということは、そのネットワークに参加するノードとそれを利用するユーザーを増やしていくということです。(ここではウォレットを通してビットコインを送金するような人のことをユーザーと呼びます)
つまり、ノードとユーザーの数が増えることがスケーラビリティ問題を引き起こしているのです。ブロックチェーンのスケーラビリティ問題について「ユーザー数の増加」と「ノード数の増加」の観点から見ていきましょう。
ユーザー数の増加
ここではユーザーとは、ビットコインの送金などを行う一般のユーザーのことを言います。ユーザーがビットコインを送金するとトランザクションという取引データが作成されブロックチェーンに保存されます。
ブロックチェーンのブロックそれぞれのデータサイズには上限があるため、ユーザー数が増加してトランザクションが増えていくとブロックチェーンにトランザクションをなかなか保存することができない、という事態に陥ります。実際にイーサリアムのトランザクション数のグラフを見てみると最近になって急増していることが確認できます。
一般的にブロックチェーンのスケーラビリティ問題と聞くと、このようなブロックサイズに対するトランザクションの過多をイメージするはずです。
ユーザー数の増加に伴ってトランザクションが増えることで生じるスケーラビリティの問題は、ブロックチェーンのそれぞれのブロックに保存できるデータサイズに上限があることとブロックの生成スピードに制限があることが原因で起こります。
雨量(トランザクション)が大幅に増えて、川(ブロックチェーン)が氾濫してしまうようなイメージです。
これを解消するために、単純にブロックサイズを大きくしたりブロック生成スピードを速くすると、セキュリティ面などで大きな問題が生じるため慎重に解決策を開発していく必要があります。
ユーザー数増加によるスケーラビリティ問題によってエンドユーザーが受けるデメリットは主に以下のことがあげられます。
- 送金に時間がかかりすぎる
- 取引手数料が高すぎる
マイナーはブロックに含めるトランザクションをある程度自由に選ぶことができます。なので、処理できるトランザクションに限りがあれば、自身の利益のために手数料の高いトランザクションから優先的に承認していくのです。
ノード数の増加
ネットワークを構成するノード数が増加することもブロックチェーンのスケーラビリティ問題につながります。
ノードにはさまざまな役割がありますが、基本的な役割はトランザクションの検証です。他のノードから送られてきたトランザクションが正当かどうか確認して、さらに他のノードに送信していきます。
パブリックチェーンのネットワークはオープンで誰でも参加しノードになることが可能です。なので、当然それぞれのノードのコンピューターパワー、通信速度、ストレージ容量などは異なります。つまりハイスペックなノードもいれば、低スペックなノードもいるのです。
ハイスペックなノードはトランザクションの処理速度が速く、次々とトランザクションを処理していきます。一方、低スペックなノードはトランザクション処理速度が遅く、なかなかトランザクションを処理することはできません。
トランザクションはネットワーク内に十分に行き渡り検証されなければならないので低スペックなノードがネットワーク全体にとって足手まといになってしまいます。ノード数が増えていくと、トランザクションの検証、伝播のプロセスに時間がかかってしまうのです。これはトランザクションの数が増えれば増えるほど顕著になっていきます。
つまり、ブロックチェーンネットワークが拡大してくるとそれに伴い、必要なトランザクションの処理速度も大きくなってくるので低スペックなノードの存在がネックになってしまうのです。
しかし、オープンなネットワークで誰でもノードとして参加できることが分散化され非中央集権化したネットワークです。つまり、分散化とトランザクション処理速度はトレードオフであると言えます。
ノード数の増加=ネットワークの分散化であるけれども、ノード数が増えると上述したように集中化が起こるというジレンマを抱えているのです。つまり、処理しなければならないトランザクション数が多くあるネットワークでは、ノード数を増やして分散化させようとすればするほど集中化が進むことになります。
ネットワークの集中化を進めればトランザクションの処理速度は劇的に向上しますが当然、ビットコインやイーサリアムのパブリックチェーンは「分散化」していなければ意味がありません。
要するに、このようなノード数の増加による承認プロセスの遅延を解決するためには低スペックなノードが存在したとしても、ネットワーク全体でトランザクションの処理速度を高めていけるような解決策が必要になるのです。
そのために、特にノード数が多いイーサリアムでは、トランザクションの処理速度が速くなるような技術の開発が進められています。
ノード数の増加によるスケーラビリティ問題では以下のことが問題になります。
- トランザクションの処理遅延(送金遅延、スマートコントラクトの実行遅延)
- ネットワークの集中化(フラットなP2Pネットワークではなくなる)
以上のような、ユーザー数とノード数の増加によるスケーラビリティ問題を解決するためにビットコインやイーサリアムではさまざまな解決策が提案され、そのうちのいくつかはすでに実装されています。ビットコインとイーサリアムにおけるスケーラビリティ問題の具体的な対処法について見ていきましょう。
ビットコインにおけるスケーラビリティ問題の解決策
Segwit
Segwitはすでにソフトフォークで導入されています。Segwitとは、トランザクションに含まれる署名データなどをwitnessという新しい領域に移動させるアイデアです。
以下にビットコインのブロック構造を示していますが、トランザクションのデータはブロックのデータサイズの大半を占めています。
このひとつひとつのトランザクションに入っているそれぞれの署名データをwitnessに移動させます。これにより、実質的なトランザクションのデータサイズを減少させブロックに、より多くのトランザクションを保存することができるようになったのです。
Segwitのアクティベートにより、ビットコインのブロックサイズは従来の1MBから実質的に2MB程度まで大きくなったとされています。
参考:ビットコインにおけるSegwitとは結局何なのか。メリットとデメリットを解説
ブロックサイズの拡大
単純にブロックのサイズを大きくすることで、ブロックに含められるトランザクションの数を増やすというアイデアです。例えば、現在ビットコインのブロックサイズは1MBですが、ビットコインキャッシュは最大8MBにまで拡大されます。このブロックサイズ拡大により、ユーザーにとっては実際に送金も早く行えるようになり、送金手数料も軽減されています。
しかし、ブロックサイズを拡大することによるセキュリティ的な問題、ネットワークの集中化、マイニングプールの寡占化などさまざまな負の面もあります。
ここにマイナーの利害や派生するビジネスなども絡んでくるので、現時点では一概にブロックサイズを拡大するべきかどうか判断することは難しくなっています。ただ、ブロックサイズの(ある程度の)拡大もスケーラビリティ問題の1つの対処法になるでしょう。
ライトニングネットワーク
ライトニングネットワークはいわゆるオフチェーン処理です。2者間で開いたペイメントチャネルをネットワーク内に張り巡らせていくことで高速かつ超低手数料の送金を目指しています。
ペイメントチャネル内での取引はブロックチェーンに記録されずオフチェーンの処理になります。なので、ブロックチェーンにトランザクションとして保存する必要がないのです。その分、大幅に実質的なトランザクションサイズを削減することができます。
両者の間でペイメントチャネルを開くときに資金をデポジットし、そのデポジットした資金を上限としてチャネル内でやり取りをし(オフチェーン)、チャネルを閉じるときの最終的な結果のみをブロックチェーンに記録します。
下図のように、両者がチャネルにデポジットした合計の資金はトランザクションが作られないのでやり取りし放題です。チャネルは一定時間で閉じるようにセットしておきます。
チャネル内では最新の状態のみが保持され、以前の状態に戻そうとしたら罰せられます。(デポジットした資金を没収される)また、一方が不正に資金を奪おうとした場合などは互いに返金される仕組みになっています。
参考:ビットコインにおけるライトニングネットワークの仕組みを分かりやすく解説
サイドチェーン
サイドチェーンとは、ビットコインのブロックチェーンをメインチェーンとして考えた場合の側鎖にあたる概念です。
上図のように、ビットコインのブロックチェーンに「スマートコントラクト用のサイドチェーン」「マイクロペイメント用のサイドチェーン」「研究開発用のサイドチェーン」などのサイドチェーンを追加していくことでブロックチェーン自体の機能を拡張していくことを目指しています。
従来でも、一方向(メインチェーン→サイドチェーン)だけの送金であれば実現していますが双方向(Two-way Peg)でのやり取りを実現するためにはさまざまな工夫が必要になります。
例えば、ブロックチェーン間を橋渡しする信頼できる監査人を設置する方法(Federation)やマイナーが監査人となる方法(Drivechain)などの方法が提案されています。
参考:ビットコインでTwo-way Pegサイドチェーンを実装する5つの方法
特に、DrivechainはP2Pでサイドチェーンを実現しようとしており、サイドチェーンからメインチェーンに資金を移動させるときはマイナーの投票を行い51%以上の承認が必要になる仕組みをとっています。
参考:ビットコインのサイドチェーンを実現する大本命「Drivechain」とは
サイドチェーン自体がビットコインのスケーラビリティに寄与するかどうかは懐疑的な意見も多いですが、個人的にはチェーン同士が連携してトランザクションの処理を行えるのでスケーラビリティ対策にもなると思っています。
シュノア署名
シュノア署名はビットコインの従来の署名方式ECDSAに代わる新しい署名方式です。シュノア署名では、複数の送り手が存在するトランザクションの署名データをひとつにまとめることができます。
署名データは比較的大きなデータサイズとなっているので、たくさんのトランザクションインプットから成るトランザクションのデータサイズは大幅に削減することが可能です。
シュノア署名がブロックチェーンのスケーラビリティ問題に貢献できるのは、以上のような複数の署名データが存在するという特別な状況下のみとなりますが、将来的に100-of-100マルチシグのような複雑なトランザクションが作られるようになった場合シュノア署名はなくてはならない署名方式となります。
参考:シュノア署名がビットコインのスケーラビリティ問題に与える衝撃
MAST
MASTは、条件分岐があるトランザクションのデータサイズを削減することができます。条件分岐があるトランザクションとは、「アリスがボブに1BTCを送金できる。もし1ヶ月経ってもアリスが送金をしなければチャーリが送金できる。」というように送金実行のために複数の条件があるトランザクションになります。
ビットコインではこのような柔軟な送金を行うことができますが、条件分岐が多くなり複雑なトランザクションになればなるほどデータサイズが大きくなり送金手数料も高くなってしまうという問題があります。
例えば、以下の図を見ると、MASTを実装していない場合は条件分岐の数に比例してデータサイズも大きくなっていきますが、MASTを実装していればほとんどデータサイズは増えていません。
現時点では、ビットコインで複雑な条件分岐がある送金が行われることはなかなかありませんが将来的に行われるようになったとき、MASTはビットコインのスケールに大きく寄与することになります。
参考:ビットコインをスケールさせる新しいデータ構造「MAST」とは
イーサリアムにおけるスケーラビリティ問題の解決策
イーサリアムは、ビットコインと比べてノード数が2倍以上ありスマートコントラクトを実行するためにもトランザクションの処理速度を高めていくことはスケーラビリティのためにとても重要になります。
ライデンネットワーク
ライデンネットワークは、ビットコインのライトニングネットワークとほぼ同じ仕組みになります。オフチェーン処理で、ブロックチェーンに記録されるトランザクション数を減らすことができるのです。ただ、ライトニングネットワークはERC20に準拠したさまざまなトークンで利用可能になる方針です。
すでにイーサリアムでは、1対多のペイメントチャネルを開けるマイクロライデンがアクティベートしていますが、多対多のライデンネットワークを実現するにはルーティング問題など多くの課題を解決する必要があります。
参考:イーサリアムにおけるライデンネットワークの仕組みと問題点
プルーフ・オブ・ステーク
イーサリアムの現在の合意形成アルゴリズムは、ビットコインと同様にプルーフ・オブ・ワーク(PoW)ですが、将来的にはプルーフ・オブ・ステーク(PoS)という新たな合意形成アルゴリズムに移行することを目指しています。
プルーフ・オブ・ワークがネットワーク外部の資金を計算資源としてコストしていると考えると、プルーフ・オブ・ステークはネットワーク内部の資金をコストしています。また、プルーフ・オブ・ステークの大きなメリットは消費電力量を抑えることで環境面の負荷を軽減できることです。
参考:イーサリアムに導入予定。プルーフオブステークのメリットとデメリット
さらに、プルーフ・オブ・ステークではマイニングでナンス計算をする必要がない分、セキュリティ面を低めることなくブロック生成時間を短縮でき、結果的に1秒間当たりに多くのトランザクションを処理できるようになるのでPoS自体もスケーラビリティ問題に貢献すると考えられています。
また、後述するイーサリアムのスケーラビリティ対策はPoSの導入が前提となっている部分が多いので、イーサリアムがスケールするかどうかはPoSにうまく移行できるか、そしてうまく動作するのか、ということに大きく左右されます。
イーサリアムでは数年間かけて少しずつPoSに移行していく方針で、まずはCasper FFGというPoWとPoSのハイブリッド式の合意形成アルゴリズムを導入する流れが有力です。
参考:【イーサリアム】CasperのFriendly Finality Gadget(FFG)を分かりやすく解説
シャーディング(Sharding)
シャーディングとは、処理しなければならないトランザクションをノード達が役割分担をして並列的に処理していくという方法です。
現状では、作成されたトランザクションはネットワーク全体で処理され承認されることで合意形成を取っていました。このようにネットワーク全体で互いを監視し合うからこそ、正当なトランザクションのみを承認し、不正なトランザクションははじくことができていたのです。
しかし、このプロセスはノード数が増えネットワークが大きくなるとプロセス時間が多くかかることがイメージできるはずです。つまりネットワークでのトランザクションの処理速度が低下してしまうのです。
そこで、シャーディングではネットワーク全体で全てのトランザクションを処理していくのではなく、ノード達と処理するトランザクションをそれぞれいくつかのグループに分け、それぞれのノードグループがある特定のトランザクション群を処理していくことになります。
これにより、並列的にトランザクションが処理できるようになり、大幅な効率化が期待できるということです。もちろんここでは、それぞれのノードグループが互いにコミュニケーションを取りネットワーク全体でプロセスを進めていくことが必要になります。
このシャーディングの実装には基本的にプルーフ・オブ・ステークの導入が前提とされています。
参考:ShardingはEthereumのスケーラビリティ問題を解決することができるのか
プラズマ(Plasma)
プラズマは、以下の図のようにブロックチェーンを階層的に接続していくアイデアです。イーサリアムのブロックチェーンを親ブロックチェーン(ルートブロックチェーン)として、それぞれのプラズマブロックチェーンをツリー状に接続していくのです。
従来ではひとつのブロックチェーンに限定されていたトランザクションの処理能力に対して、上図のように階層的に連携するブロックチェーン構造にすることで、トランザクションの処理速度を大幅に向上させていく狙いです。
参考:プラズマがイーサリアムのスケーラビリティ問題を解決する理由と仕組み
TrueBit
TrueBitはイーサリアムのスマートコントラクトをオフチェーンで実行することを目指している技術です。複雑かつ大規模なスマートコントラクトになるほどgasの消費も大きくなり、処理速度も遅くなります。つまり、それぞれのノードがそれぞれ全てのスマートコントラクトを計算することは非常に非効率なことなのです。
TrueBitではこのスマートコントラクトの実行をオフチェーンでトラストレスな第三者に行なってもらう計画です。これにより、それぞれのノードがスマートコントクラトを計算する必要がなくなります。
しかし、この第三者がスマートコントラクトの実行をするインセンティブはどこにあるのでしょうか。TrueBitのホワイトペーパーでは、これを「承認ゲーム」と表現しています。この承認ゲームの参加者は「解決者」と「承認者」です。
解決者は、トラストレスな第三者でスマートコントラクトの計算を行う人です。承認者は、解決者の計算結果が正当かどうか確認します。もし1人でも承認者が、解決者の結果が不正であると判断した場合は、オンチェーンでの処理に回しネットワーク全体で正当性を確かめます。
この承認ゲームにおいて、解決者と承認者は正解した方が報酬をゲットし、不正解の方は罰金を払わなくてはいけません。つまり、不正をした解決者が見つかった場合、解決者はペナルティを支払わなくてはいけなく、解決者が正当であるのに承認者が不正であると判断した場合は承認者がペナルティを受ける必要があるのです。
このような承認ゲームによりTrueBitは安全性を確保しながら、スマートコントラクトを第三者に委託しイーサリアムネットワークをスケールさせていこうとしています。