Online salon

Ethereumのスケーラビリティ向上のための新技術”Plasma Cash”を解説

  • このエントリーをはてなブックマークに追加

本記事は、2018年3月8日から10日まで行われたEthereum Community Conference(EthCC)で発表されたPlasma Cashについて解説します。
 
Plasma Cashの前提知識であるPlasmaと、そもそもPlasmaが何を解決しようとしているのかという点について解説し、Ethereumのスケーラビリティ問題への理解を深めることを目的とします。

前提知識としてブロックチェーンの構造、Ethereumについての知識があることが望ましいです。

ブロックチェーンのスケーラビリティ問題

まず、ブロックチェーンにおけるスケーラビリティの問題とは具体的にどのようなものを指すのか、具体的な例を通して見ていきましょう。

例えばEthereumでは、人気のInitial Coin Offering(ICO)により、一時的にトランザクションが大量に発生し、トランザクションが長時間承認されないという事態が発生しています。

また、2017年末ごろ、子猫を育成するアプリケーションであるCryptoKittiesが人気になった時も、一時的にEthereumのネットワークが混雑しCryptoKittiesを利用していないユーザーのトランザクションにも影響が出たことがありました。

このように、イーサリアムのチェーン上で処理できるトランザクションの限界を一時的に超えてしまい、送金詰まり、トランザクション詰まりと呼ばれる現象を引き起こすことがあります。

ことEthereumはアプリケーションプラットフォームとしての役割から、イーサリウムのチェーン上であらゆるアプリケーションを稼働させるために、スケーラビリティの向上が解決すべき必須の問題となっています。

Plasmaとは?概要と仕組み

Plasmaはブロックチェーン本体と接続する形でもうひとつ別のブロックチェーンを接続し、処理を後者のチェーンに移譲することによって処理性能を向上する技術です。このような手法は一般的にサイドチェーンと呼ばれます。

μRaidenとは異なり、こちらはブロックチェーンに接続しているので、通常のスマートコントラクトのトランザクションも実行可能ですし、特定の処理に特化したPlasmaチェーンを用意することもできます。Plasmaチェーンを構築する主体は大元のEthereumチェーン上のコントラクトに資金をデポジットしておき、Proof of StakeまたはProof of Authorityで各々のトランザクションを処理します。

また、サイドチェーンの下にさらなるサイドチェーンを接続することも可能で、下図のように階層的にブロックチェーンを用意し処理を移譲していくことで2段階目、3段階目の処理性能向上を行うことが可能です。

CryptoKittiesのように、大量のトランザクションが発生するアプリケーションの処理が問題になった場合は、アプリケーション固有のPlasmaチェーンを用意するなどということも可能です。

図4:plasmaのサイドチェーン
一番下のブロックチェーンから2,3段階目のPlasmaチェーンに処理をしていきます。

出典:Plasma: Scalable Autonomous Smart Contracts(https://plasma.io/plasma.pdf)

Map Reduce処理

PlasmaはMap Reduce処理を用いて処理速度を大幅にアップさせることができます。

ここで言うMap処理とは、大元のブロックチェーンに存在する大きな処理のトランザクションを子階層のPlasmaチェーンに分割する処理を指します。分割したチェーンの下に、その子Plasmaチェーンが存在する場合はさらに分割します。

こうやって分割した処理は計算量が減るため、各々の処理は高速に完了します。

計算が完了したあとは、親階層のチェーンに処理結果をまとめあげて送ります。この処理結果をまとめ上げる処理がReduce処理と呼ばれるものになります。

(HaskellやScalaなどの関数型言語の経験がある方であれば、リスト操作の際によく使うmap()やreduce()をイメージしていただければお分かりになるかと思います)

親階層のチェーンでは、子チェーンから送られてきた処理結果をさらに結合し、さらに親階層のチェーンに送ります。

この処理を大元のブロックチェーンまで続けることで大量のトランザクション処理を行うことが可能となります。

図:PlasmaのMap Reduce処理の構造。
①Step1の処理(図の青文字部分)でトランザクション処理を子Plasmaチェーンに分割します。
②Step2で子Plasmaチェーンで完了した処理を親チェーンに送り、まとめあげます。
これを大元のチェーン(図では緑色)まで繰り返します。

 (出典:https://plasma.io/plasma.pdf)

多段階層チェーン

これらのMap Reduceの処理は多段にすることができます。

上記の例ですとPlasmaが3階層になっていますが、これは何階層でも実現可能です。階層を多くすればするほど分割するステップが増えますが、どれだけ分割して階層化しても大元のEthereumのチェーンに書き込む回数は変わりません。

また、分割する粒度を細かくし、水平方向にPlasmaチェーンを増やすことで、1つのチェーンで処理する内容を削減することができます。

この場合も分割のコストは増加しますが、大元のチェーンに書き込む回数に変化はありません。このためスケーラビリティには原理的に限界はないといえます。
(実際には、分割コストやネットワークのコストがあるため、どこかで性能が頭打ちになると考えられます。)

Fraud ProofによるBlock withholding attacksの回避

Plasmaのチェーンの構築運用は不特定多数に任されています。

そのため、もしも利用しているPlasmaチェーンが悪意ある者によって運営されていたとすると、最悪の場合、Plasmaチェーン上で利用している資金が失われてしまうことが考えられます。

そうした不正を防ぐために、ユーザーアカウントは、いつでも自分の資金が不正に利用されていないか確認する必要があります。
そして、もし不正が行われていた場合は親チェーンに対して不正が行われた証明(Fraud Proof)を出すことができます。

このFraud Proofを出すことで、提出から一定の時間が経過した後に、ユーザーアカウントは不正が行われる以前の状態の資金を引き出すことができます。また、このような不正を行ったブロックの生成者はペナルティを受けることとなります。

図:赤いブロックが不正とだとすると、Aliceは不正証明を親チェーンに提出し、このPlasmaチェーンを抜け出します。後に資金は帰ってきます。

 (出典:https://plasma.io/plasma.pdf)

Plasma MVP

Plasma MVPはPlasmaの最小限の簡易実装として提案されており、OmiseGOプロジェクトなどで利用される予定です。

GitHub上に公開されており、Consensysが提供しているGanacheを利用することで簡単に挙動を確認できるようになっています。

Ganacheをインストールし、Ganache上のプライベートチェーンにPlasma用のコントラクトをデプロイしたものをこれをルートチェーンと呼びます。

そしてルートチェーンにひもづく形でPlasmaチェーンを起動したものをチャイルドチェーンと呼びます。

具体的なサンプルの動作方法はGitHubにまとめられているので興味があれば動かしてみてください。また、具体的な動作の流れはKarl Floersch氏がYouTubeで公開しています。

図:Plasma MVPのYouTube解説。ステップごとに動作を解説しています。

Plasmaの課題

ユーザー自身によるチェーン監視が必要

Ethereumの処理性能を向上させるスケール技術としては有力であるPlasmaですが、ユーザーが前述の不正証明を行うためには、自分が発行したトランザクションが関わるチェーンを全て監視しておく必要があります。

監視できていなければ、どこで不正が行われたのか検証が不可能だからです。

多段階層化によるチェーンサイズの肥大

また、それぞれのチェーンのトランザクションを確認する必要があるため、関わるブロックをダウンロードする必要性が出てきます。
チェーンが多段構造になればなるほど、ユーザーがダウンロードするブロックのサイズは増えていき、利便性を損なうことになります。

アカウントの状態管理が煩雑になる

もう1つの課題はPlasmaチェーン上で処理されたトランザクションの状態を更新するためにはアカウントの状態をアップデートする必要があるということです。

Plasmaチェーンでの処理内容が大元のチェーンに取り込まれた後、トランザクションを発行したユーザーは、トランザクション対象のアカウントに正しく処理が完了したことを通知する必要があります。

これはUTXOモデルとアカウントモデルを併用した欠点と言えますが、単純にアカウント更新の二度手間となってしまいます。

Plasmaの課題を解決するための提案”Plasma Cash”


記事の続きはオンラインサロンにて公開中!

  • このエントリーをはてなブックマークに追加

現役エンジニア直伝!ブロックチェーンのプロになるための最速ルート。

・ビットコインやブロックチェーンに興味はあるが、なにから学べば良いかわからない
・怪しい情報商材や投資話にうんざりしている。純粋にテクノロジーの話がしたい。
・知識だけで終わらせず、ブロックチェーンで何か作りたい!

そんな思いをお持ちの気骨溢れるあなた!
実際にブロックチェーンでプロダクトを作っているプロから直接学んでみませんか?

・経済産業省「ブロックチェーン検討会」委員
・ソフトバンク様、大和証券グループ様などとの開発実証実験
・NEC様との共著でのビットコインとイーサリアムの電子書籍の出版
・日本銀行でのブロックチェーン・セキュリティのプレゼン

といった実績を持つ代表のもとで、最先端の技術を学ぶオンラインサロンブロックチェーン技術者養成道場を開講中です。

数年後の未来、この業界のトップを独走する技術者になりたい方、道場にてお待ちしています。

オンラインサロンを見てみる