こんにちは!弐号です。
Bitcoin や Ethereum をはじめとするブロックチェーン技術では、一秒間に取り込むことのできるトランザクション数に限りがあるため、利用者が増加するとトランザクション手数料(ガス代)が高騰してしまうという問題があります。
この問題を「スケーリング問題(またはスケーラビリティ問題)」といいます。
これを解決するために様々な研究が行われており、実用化された技術も多数存在します。
今回はスケーリング問題に対して現在有望視されている技術の概要を解説します。
なお、本記事はスケーリング問題の初心者の方に分かりやすく説明するのが目的であり、技術的な正確性は一部失われているところがあります。
随所により正確な記事へのリンクを記載してありますので、本記事をお読みいただき興味を持たれた方はぜひそちらもあわせてご覧いただければと思います。
スケーリング問題
ブロックチェーンでは、不正対策のためにネットワーク上を流れるすべてのトランザクションを全参加者で共有しあわないといけません。
そのため、トランザクションの流量を一定以下に絞らないと、ネットワーク帯域幅やストレージ、計算能力などのいずれかが不足してブロックチェーンネットワークについていけない参加者(ノード)が発生してしまいます。
現状Bitcoinでは秒間5トランザクション (5 tps) 前後、Ethereumでは秒間20トランザクション (20 tps) 前後を上限値として設定しています(※正確な値はトランザクションの内容によります)。
トランザクションの送信需要がブロックの設計上限に達すると、基本的にはトランザクション手数料をたくさん支払った人から優先的にブロックに取り込まれ承認されることになりますので、自然と手数料競争が発生しトランザクション手数料は上がっていってしまいます。
ある程度のトランザクション手数料を徴収するのはスパム対策の観点から必要なのですが、Ethereum ネットワークでは現状でもトークンのスワップなどを行うと数ドル〜10ドル以上の手数料水準となっており、今後 Ethereum のユーザ数が増加していけばこれは青天井で増加していってしまいます。
そのため一秒間に処理することのできるトランザクション数を大幅に引き上げ、手数料を抑える技術というのが注目されています。
シャーディング
Web 2.0 の世界でも、ユーザ数の増加によってデータベースが巨大化してしまい、一台のサーバで捌けなくなってしまうことがあります。
その際に有効な手段の一つが「シャーディング (sharding)」です。
シャーディングとは、データベースを複数に分割し、分割したそれぞれのデータベースを別々のサーバで処理をすることで全体の処理能力を底上げする技術です。
何事も一人でやるより複数人で分担して処理することで、たくさんの仕事を行うことができますよね。
スマホなどでも複数の CPU コアを載せて処理を複数のコアに分散させるということをやっていますが、それに近いと考えてください。
Ethereum におけるシャーディング では、いままで一つであったブロックチェーンを複数に分割し、それをネットワーク上の別々のノードで分散的に処理を行います。
これにより、理想的にはブロックチェーンをたくさん分割すればするほど、ネットワークが処理できるトランザクション数はいくらでも増加していきます。
とわいえ無尽蔵に分割数を増やすと、シャード同士の連携にリソースがかかりますのでいくらでも分割数を増やせるわけではなく、現在のところ64分割にすることを計画しているようです。
シャーディングは執筆時点(2023年2月)では開発中の技術ですが、2023年中にはシャーディング機能がリリースされる予定であるとされています。
シャーディングによって現在の Ethereum ネットワークの混雑はある程度解消すると思われますが、それでも改善はシャード数が上限となってしまいますので、無制限に処理能力が向上するわけではありません。
そのため、後述するロールアップ技術などと組み合わせてさらなるスケーリングの向上を図っていく必要があります。
サイドチェーン
Ethereum では分散性の確保と中央集権化の防止の観点から、ラズベリーパイのような低スペックのコンピュータでもノードが動作するようにトランザクション数の制限を設けていますが、逆に言うと分散性と非中央集権性をある程度犠牲にして、ハイスペックなマシンを要求すればトランザクション数量を増やすことは可能です。
例えばPolygon、Avalanche、Binance Smart Chainなどはノードを動かすにはある程度のスペックのマシンが必要となりますが、その代わりとして秒間数千〜数万トランザクションを捌くことができ、トランザクション手数料もおおむね Ethereum の1/10以下となっています。
こうした Ethereum チェーンとは独立したチェーンのことをサイドチェーンといいます。
上にあげたチェーンは EVM 互換といって、Ethereum と同じインタフェース(平たくいうと、MetaMask が使える)で動作するものですが、Ethereum との互換性を捨てることでさらなる機能改善を図っているチェーンもあります(例えば Solana、Tronなど)。
サイドチェーンにおいて重要な要素の一つは、Ethereum上のアセット(トークン、NFT)の相互運用性、すなわちアセットを Ethereum チェーンとサイドチェーンの間で自由に行き来させることができること、です。
もし自由に行き来できないとなると、異なるチェーンで同じアセットシンボルだったとしても、アービトラージの原理が働かないためチェーンごとに別々の価格を形成してしまう可能性があります。
そのため、一般的にはサイドチェーン上のアセットは Ethereum チェーン(など)から「ブリッジ」と呼ばれるサービスを使って Ethereum チェーン上のアセットを担保として発行されます。
ブリッジからやってきたアセットは、逆にブリッジにアセットを返還することで Ethereum 上のアセットに変換することができますので、チェーンをまたいで相互に行き来ができるようになります。
ところがこの仕組みには根本的なセキュリティ的な脆弱性をはらんでいます。
それはブリッジがハッキングされてしまう可能性がある、という点です。
例えば、ブリッジには担保として預かっているアセットを Ethereum 上で管理する鍵が存在しますが、その鍵が何らかの方法で盗まれてしまうとか、ブリッジ先でアセットが正しく返還されたかどうかのチェックにバグがあり、実際には返還していないのにも関わらず Ethereum 上のアセットが不正にアンロックされてしまう、などの可能性です。
実際、ブリッジがハッキングされてしまい大量の資金が盗難されてしまうという事件は後を絶ちません。
ロールアップ
サイドチェーンでは、セキュリティはそれぞれのチェーンの仕組み(多くの場合には Proof-of-Stake (PoS))によって保たれており、Ethereum の提供する分散性や非中央集権性、セキュリティなどとは独立しています。
しかし Ethereum チェーンの外で発生したトランザクション(オフチェーン取引)を Ethereum チェーンに取り込み、Ethereum チェーン上のスマートコントラクトで検証を行うことで、Ethereum のもつ分散性や非中央集権性、セキュリティを失わないチェーンを作ることが可能です。
このように、オフチェーン取引を Ethereum チェーンに強く結びつけた(アンカリングした)チェーンのことを「L2チェーン」といいます(これとの対比で Ethereum チェーンのことを「L1チェーン」と呼びます)。
(※ちなみに「L2チェーン」という言葉は、この記事のようにL1チェーンへのアンカリングがあるチェーンのみをL2チェーンと呼ぶ人と、サイドチェーンを含めたEVM互換チェーンのことをL2チェーンと呼ぶ人がいます。記事などを読む際にはどちらの意味で使われているのかを文脈から判断しましょう。)
L2チェーンで発生したトランザクションをL1チェーンであるEthereumにアンカリングすることを「ロールアップ」といいます。
具体的にどのようなデータをL1チェーンに書き込むかについては、方式に依存するのですが、トランザクションデータ一式を圧縮して書いたり(Optimistic Rollup)、L2チェーンの正当性をゼロ知識証明を用いて作成した証拠(プルーフ; proof)を書き込む方式(zk-Rollup)などがあります。
技術的な詳細は難しいため割愛しますが、Optimistic Rollup でも zk-Rollup でも、L2トランザクションの検証に必要な処理の大部分を Ethereum ネットワークから分離して処理することによって、大幅なトランザクション手数料の改善とスケーラビリティの向上を図っています。
実用化については、技術的に実装が比較的簡単な Optimistic Rollup が先行しており、すでに Arbitrum や Optimism といったL2チェーンが本番稼働しています。
zk-Rollup は(ゼロ知識証明アルゴリズムの複雑性などによる)技術的な実装の難易度から遅れを取っていますが、Optimistic Rollup と比べてL2チェーンからL1チェーンへのアセットの出金が非常に高速である、Ethereumチェーンに書き込む必要のあるデータ量が少ない、などの利点を持ちますので、Optimistic Rollup を追い上げる形で実装が進んでいます(zkSync、Loopringなど)。
なお、より詳しい説明については Ethereum 公式で解説ページ(英語)がありますので、こちらを参照してください。
ステートチャネル
Bitcoin の Lightning Network (ペイメントチャネル; payment channel) の Ethereum 版(スマートコントラクトを利用できるようにしたもの)を「ステートチャネル」と呼びます。
Lightning Network とは、特定の二者間(多対多も可能)で「ペイメントチャネル」と呼ばれる、ビットコインをオフチェーンでトラストレスに何回でも送受金できる通信路を作り、それをインターネットのように次々とつなげていくことで、バケツリレー的に送受金を行うことができる技術です。
Lightning Network では、全参加者で情報を共有する必要のあるブロックチェーンと異なり、送金の経由地として選ばれた極めて少数のノードの間だけでしかやり取りが発生しないため、(ネットワークトポロジにも依存すると思われますが)無制限にトランザクションを送信することができます。
これまで見てきた技術(シャーディング、サイドチェーン、ロールアップ)は確かに処理能力を大幅に改善することができますが、それでも計算リソースなどによる上限が存在します。
ところが、Lightning Network はインターネットと同レベルの処理の分散性を確保することができますので、参加するノードが増えれば増えるほど、ほぼ無制限に処理能力が向上するというメリットがあります。
インターネットは複数の組織(Autonomous System; AS)が分散的に互いに繋がりあうことで、高い可用性とスケーラビリティを兼ね備えたネットワークであり、世界人口のほとんどがスマホを通してつながった世界となった現在でも、破綻することなく動作しています。
実際、Lightning Network はすでに稼働しており、一度体験すれば分かると思いますが、トランザクション承認のような面倒な待ち時間などなく瞬時にかつ、ほぼ手数料ナシ(ただし中継ノードに手数料を支払う必要がありますので、直接相手先につながっていない限りゼロではありません)で送金することが可能になっています。
ペイメントチャネルにビットコインをロックしなければいけない、接続先ノードが不正を行っていないかどうかを常時監視しなければいけないなどのデメリットが存在し、急速な普及にまでは至っていませんが、今後ビットコインを用いた支払いが増加するにつれて、手数料無料で瞬時に送れるこの技術は徐々に普及していくと考えられます。
ステートチャネルはビットコインですでに実用化されているペイメントチャネルの技術を拡張し、送金しか行えなかった Lightning Network をスマートコントラクトの実行(厳密にはステートの変更)を行えるようにしたものです。
この技術が実用化されれば、スケーラビリティの問題は大幅に解消する可能性がありますが、技術的な困難性から現在のところ実用に至っているものは残念ながら存在しません。
しかし、今後5年〜10年で実用的なプロダクトが登場する可能性は十分にありますので、非常にワクワクしますね。
まとめ
実用化されているものも実用化されていないものも含めて、現在有望視されているスケーリング技術について、可能な限り技術的な詳細を省いて説明しました。
ブロックチェーン(ビットコイン)が登場してからすでに10年以上経っていますが、技術は日進月歩で進んでおり特にスケーリング問題については世界中のブロックチェーン研究者が日夜改善を図っています。
どの技術にもメリット・デメリットがあり、どの技術がこの先生き残っていくのかはまだ分かりませんが、一歩一歩ではありながら確実にブロックチェーン技術は未来へと進んでいます。
ブロックチェーンに対しては様々な批判がありつつも、それを真摯に受け止め一つずつ改善していくことで、より便利で効率的な社会が形成されることを期待して技術的な探求を日々行っている技術者・研究者には感謝の言葉に堪えません。
さらに10年後にブロックチェーン技術がどのように社会を変容させ、人々の生活スタイルを改善させるのか、または全く使われない技術となってしまうのかは誰にも分かりませんが、少なくともその軌跡は人智に光明をもたらすことでしょう。