Ethereum系のスケーリングのソリューションを詳しく解説!
Shota
こんにちは。Shota @shot4crypto です。
今回はスケーラビリティ問題を解決するPlasmaとその派生であるMVPやPlasma Cash、Plasma XTなどを詳細に比較、それぞれのドローバックなどを解説していければと思います。
技術的に難しい部分ですので、一部誤りがあるかもしれませんが、その際は気軽にTwitterのほうからご指摘いただければ幸いです。
目次
Ethereumの仕組みと現状をもう一度把握
スケーリングのソリューションについて説明する前に、Ethereumの設計がどのようなもので、この何が問題であるのかを確認していきたいと思います。
また現段階でPlasma以外だと、どのようなスケーリングのソリューションが存在するのか?実装はされているのか?なども一応確認しておきます。
Ethereumの設計とその問題
EthereumのTXsがブロックチェーンに記録されるまでの仕組みを簡単に説明します。
①ユーザーが最初にTXsをノードに対してブロードキャスト。
②ブロードキャストされたTXsに対して、世界中のノードによりその報酬(Gas)を競う形で検証作業が行われる。
③検証が成功すると他のノードが承認作業を行いこれによりブロックチェーンがアップデートされる。
Ethereumではこの①~③の作業が繰り返し行われる感じの仕組みになっています。
しかし、TXs数が増えてきた場合、スループットを向上させるためにはEthereumの場合ですとGas Limit(ガスリミット)を増やす必要がありますが、闇雲にこれを行うわけにはいきません。
というのも検証や承認を行うノードがより集権的になりDecentralizedの部分が失われてしまう可能性があるからです。
この問題をDecentralizedの部分を犠牲にせずに解決を図るソリューションがPlasma以外にもいくつか存在するので、参考程度に紹介します。ここではそれぞれのメリットやドローバックなどは紹介しません。
Sharding(シャーディング)
このソリューションの一つにSharding(シャーディング)と呼ばれるものがあります。
Shardingを簡単に説明すると、ノードごとにTXsの検証を分担(並列検証)することで一つ一つのTXsに対して上記①~③のプロセスを行わせる必要性をなくすことができる、というソリューションになります。
この作業は子チェーンと呼ばれるサイドチェーン上で行われます。
Shardingの実装には、EthereumのプロトコルがCasperへとアップグレードされる必要があるため、現段階ではこれを実装することができません。
Raiden Network(ライデン)
Raiden(ライデン)はShardingとは違い、ステートチャネル技術を利用したオフチェーンでのソリューションになります。
RaidenはIoTデバイスやアプリなどで頻繁に行われるマイクロトランザクションなどの問題を効率的に解決します。
これは、ステートチャネルの開閉のみがオンチェーン上で検証 / 承認の作業の対象となるためチャネル内でのトランザクションの速度を大幅に改善することができるというものです。
Plasmaについて
2017年8月11日にEthereumの考案者であるVitalik Buterin氏とLightning Networkの生みの親であるJoseph Poon氏によってPlasmaの構想が発表されました。
その後、Plasmaには様々な派生となる提案がなされています。
- Plasma Cash
- Plasma XT
- Plasma Debit
本記事では、この全種類を詳細に比較・解説していきます。
まずはすべてのソリューションの親となるPlasmaを利用するメリットやその他のソリューションとの比較を行っていきたいと思います。
Plasmaの概要を詳細解説
PlasmaはRaidenに次ぐブロックチェーンのスケーリングに対するソリューションです。
Plasmaのスケーリングへのアプローチは子チェーンを利用したMapReduceによる階層化という形を取っています。
- MapReduceとは
- MapReduceは巨大なデータセットを持つ高度に並列可能な問題に対して、多数のコンピュータ(ノード)の集合であるクラスター(各ノードが同じハードウェア構成を持つ場合)もしくはグリッド(各ノードが違うハードウェア構成を持つ場合)を用いて並列処理させるためのフレームワークである。
引用元:Wikipedia
Shardingと同様に並列処理や階層化というアプローチをとっているPlasmaですが、この場合サイドチェーンはマークルツリーのような構造になっておりルートチェーンに対してリレーで情報の伝達を行うことで効率的な処理の分割を可能にします。
このように、親チェーン上の情報を最適化することで、スマートコントラクトやDAppsにおける手数料を削減しながらスケーリングにおける問題も同時に解決することができます。
Plasmaブロックに対してETHをデポジットする際に、スマートコントラクトにより親チェーンと子チェーンの総量に整合性を持たせるような仕組みとなっており、万が一子チェーンから上位チェーンに対する不正な報告(リレーによる情報伝達)などが発覚した場合、Exitプロセスにより親チェーンへ資産が戻されます。
Plasmaと他のソリューションを比較
Plasmaの概要をざっくりと説明しましたが、ここでShardingやRaiden Networkなどのソリューションと比較を行っていきます。
【Raidenとの比較】
チャネルの開閉をオンチェーンで、オフチェーンでマイクロペイメントなどの細かな処理を行うのに適しているRaiden Networkと比べて、Plasmaは複雑な処理などを効率的に行うことを可能にするソリューションであると考えることができます。
マイクロトランザクションなどを頻繁に行うアプリなどでは、Raidenのチャネルを利用したソリューションの方がUX的には使いやすいのかなといった感じですが、Plasmaはどちらかというと複雑な処理を効率化することに長けているイメージです。
【Shardingとの比較】
Shardingは、親チェーンでそれぞれが検証を行うものを子チェーンで分割して並列的に検証を行うことでその時間をシャードの数だけ短縮できるというものですが、Plasmaはスマコンで階層ごとに最適化などを行うことが可能です。
これらのソリューションは組み合わせることができるため、この辺に関しては適材適所という言葉にもある通り、それぞれのアプリなどに適したものを利用していけば問題ないと思います。
Plasmaの種類を確認
その後Plasmaの問題を解決していくために『Plasma Cash』、『Plasma XT』、『Plasma Debit』などの新たなアイデアが続々と登場しています。
ここでは、その派生についても解説していきます。
Plasma Cash
Plasmaにおいて、あるPlasmaブロックの検証を担当する際、すべての子チェーンにおいてDouble Spending(二重支払い)等の不正なデータがないかを確認してセキュリティを担保するため、子チェーンのすべての情報を保持している必要がありました。
しかし、将来的に指数関数的に増加するPlasmaのデータ量の問題を解決するため、今年の3月9日にパリで行われた「イーサリアムコミュニティ会議」でVitalik氏ら3名によってNFT(Non Fungible Token)を利用したPlasma Cashの構想が発表されました。
ユーザーはPlasmaにおいてすべてのPlasmaブロックをダウンロードする必要がありましたが、Plasma Cashではこの必要はありません。
Plasma Cashでは、サービスにEtherの預け入れを行うと同等の量のPlasma Coinと呼ばれるものが改竄・分割不可能なユニークIDと共に生成されるため、ユーザーが保持すべきデータ量を「log(コイン発行枚数)」に抑えることが可能になります。
このPlasma CashはNFTを利用したスケーラビリティ問題へのソリューションとして、取引所などに関連したセキュリティなどにおいても大きく期待されています。
Plasma XT
このPlasma Cashからさらにユーザーが保持する必要のあるデータ量を削減したものがこのPlasma XTの構想になります。
Plasma Cashにおいてユーザーが保持する必要のある情報量はPlasmaと比較して大幅に削減されまhしたが、長期間これを運用した場合Plasma Cashであってもそのデータ量が再び問題となります。
Plasma XTにおいて、オペレーターはチェックポイントとして設定しブロックのファイナライズを行うことで、後にユーザーが保持する必要のある情報量を大幅に削減することができます。
チェックポイントの設定はオペレーターによって行われますが、ここで不正がなかったという証明は複数による署名によって達成されます。
ここまで解説を行ったPlasma CashとPlasma XTですが、両者ともNFTを利用しているためデポジットの分割(1ETHのデポジットに対して0.5ETHの引き出し)などが課題として残っているようです。
Plasma Debit
Plasma Debitはこの分割不可能なNFTの問題を解決するソリューションです。
詳しく解説すると、例えばAとBがPlasmaチェーンにそれぞれ6ETHのデポジットを行ったとします。
このときオペレーターがAとBからそれぞれ3ETHを預かる形になります。
AがBに対して半額の1.5ETHを送金するとオペレーターの3ETHからAが送金した1.5ETH、Bが受け取った1.5ETHがそれぞれ足し引きされ、このプラマイが0となった場合、残高に整合性が保たれることになるので、残高情報の更新が行われるといった仕組みになっているようです。
ただ、これに対してVitalik氏は自身のMediumで以下のように語っています。
Plasma Debit (see https://ethresear.ch/t/plasma-debit-arbitrary-denomination-payments-in-plasma-cash/2198) explicitly calls itself a Plasma flavor, and is arguably much closer to an account-based model than a UTXO-based one;
【和訳】Plasma Debitは自身をPlasmaの問題を解決するソリューションとしているが、UTXOベースのモデルというよりアカウントベースのモデルに近いものとなっている。
Plasmaの派生が多く登場していますが、Vitalik氏は「コミュニティはより明確なPlasmaの定義を探し出す努力をするべきだ」としています。
まとめ
Ethereumでよく話題になるスケーラビリティ問題とそのソリューションに関して、Plasmaをメインに一通り解説しました。
Ethereumはよく他のインフラ系のプロジェクトと比較されがちですが、こういったソリューションを抑えておくことでより中立な目線で比較をすることができると考えています。
一部複雑な部分もあるかと思いますが、是非この記事を読んで頭に入れておいていただけたらと思います。