暗号通貨とブロックチェーン研究所

暗号通貨とブロックチェーンに関する技術やトレンド情報を解説していきます。

イーサリアムのスケーラビリティ問題を解決するPlasmaの仕組みと重要性を理解する

Plasmaは2017年8月にイーサリアム創始者のVitalik Buterin氏とライトニングネットワークの共同開発者であるJoseph Poon氏によって発表された、イーサリアムのスケーラビリティ問題を解決するための技術のことです。Plasmaが実装されることでイーサリアムブロックチェーンの負担が減り、秒間数十億のトランザクション処理やより大きなデータサイズのトランザクション処理、スマートコントラクトの実行速度を大きく向上させることが見込まれていることから注目を集めています。

豆知識:イーサリアムのスケーラビリティ問題とは?

現在イーサリアムは多くのDappsのベースとなっているためブロックチェーン内でのトランザクションが集中してしまい処理が滞ってしまう問題が起きています。これは交通渋滞のようなもので交通量に対して適切な道路(イメージは2~3車線道路)が整備されていなければ渋滞が発生してしまうように、増加するトランザクション数に対して適切なシステムが構築できいないことにより、処理の遅延が生まれてしまったのです。これをスケーラビリティ問題といい、Dappsを普及させるために対策が急がれています。

Plasmaの仕組み・特徴

今回はPlasmaのWhitepaperを追いながら仕組みや特徴を解説していきます。(画像はWhitepaperからの引用です)

日本語訳もあります。

github.com

Plasmaはイーサリアムブロックチェーンを親チェーン(ルートチェーン)として、階層的なTree構造が成り立っています。従来のイーサリアムではトランザクションの処理をメインチェーンのみで行わなければなりませんでしたが、Plasmaではそれぞれのプラズマチェーンにおいてブロックが追加される毎に、そのブロックのヘッダーハッシュを上位階層のプラズマチェーンに伝え、それぞれのプラズマチェーンの最終的な状態のみをルートチェーンに送信することでルートチェーンの負担を軽減させています。

仕組み自体はビットコインのライトニングネットワークと似ていますが、ライトニングネットワークはオフチェーンで処理をするのに対し、Plasmaはオンチェーンで行われるという違いがあります。

f:id:tomoya415:20180722190458p:plain
source: https://plasma.io/plasma.pdf

この階層構造を親と子で表現すると、親チェーンのブロックが承認されて始めて子チェーンに追加されたブロックは承認され、これを階層的に繰り返すことで子チェーンのトランザクションがルートチェーンにまとめて記録されるのでトランザクションの効率化が見込まれています。Plasmaが大規模になればなるほど多くのブロックチェーンが連携し、並列処理できるトランザクション数が増加することでスケーラビリティ問題の解決へと近づきます。

ここからはより深くPlasmaの仕組みをみていきます。

このようにプラズマチェーンが1階層の場合は、アリスが持っている1ETHはプラズマブロックのみに記録され、ヘッダーハッシュをルートチェーンに送信することができます。不正があるヘッダーハッシュをルートチェーンにコミットしてしまった場合は、ブロックはロールバックされ、作成者にはペナルティが課せられます。

f:id:tomoya415:20180722190638p:plain
source: https://plasma.io/plasma.pdf

プラズマチェーンが多階層(今回は3階層)の場合、アリスの1ETHは3階層目のプラズマチェーンにのみ記録され、それ以降のプラズマチェーンには記録されません。情報伝達は一定の間隔で行われ、もし親チェーンで不正が発覚した場合は、その親チェーンを回避するためのルート探索が行われます。

f:id:tomoya415:20180722190909p:plain
source: https://plasma.io/plasma.pdf

Plasmaは仕様に従っていれば自由に実装できるので、目的や用途に応じて様々な場面での活用が期待されています。ここ最近注目を集めているDEX(分散型取引所)においてもPlasmaは活用できDepositの保護機能による資産流出リスクの軽減、並列処理による取引量増加などが期待されています。

MapReduce

f:id:tomoya415:20180722191255p:plain
source: https://plasma.io/plasma.pdf

Map Reduceとは親チェーンが子チェーンにトランザクションの処理を分割し、並列処理により実行速度を高速化させる仕組みのことです。親チェーンの下にいる子チェーンに分割し、さらに下にいる孫チェーンに分割しというように下の階層にいるプラズマチェーンに処理を分割させていきます。処理が終了するとその結果をまとめて上の階層にいる親チェーンに送り、最終的にはルートチェーンに送信されます。また分割する処理を水平方向に展開することで1つのチェーンでの処理数を軽減することができます。この処理をReduce処理といいます。どんなに分割し、階層を増やしてもルートチェーンには1度しか書き込まないので、大量のトランザクション処理や大規模なスマートコントラクトに対応することが可能になりました。

悪意のユーザーに対するセキュリティ

Plasmaの仕組みとして、ネットワークの参加者はプラズマチェーンをを監視し続けなければなりません。なぜなら監視をしないと不正が起きた際に気づくことができないからです。もし監視をしていた場合は後述するFraud proofにより不正を証明することができます。

しかし、監視をするためにはルートチェーンに連なるプラズマチェーンを全てダウンロードしなければならないので、利便性を損なうという観点からPlasmaがもつ課題となっています。

Fraud Proof

f:id:tomoya415:20180722191059p:plain
source: https://plasma.io/plasma.pdf

プラズマチェーンの運用は不特定多数に任されているため、悪意のある参加者により不正が行われる可能性を秘めています。例えば利用しているプラズマチェーンが悪意のある者によって運営されていた場合、プラズマチェーン上で利用している資金が奪われるリスクも考えられます。

このような不正を防ぐためにFraud proofという仕組みが活用されます。プラズマチェーン内の全ての状態はFraud proofにしたがって実行されるため、万が一不正が行われていた場合、全てのブロックチェーンのデータを持っているアリスは不正の有無を親チェーンに証明することができます。この仕組みをFrand proofといいます。不正があった場合、ブロック4はロールバックされ最新のブロックはブロック3になります。これによりユーザーは不正が行われる以前のブロック3から安全に資金を引き出すことができ、不正を行なったブロック4の生成者は罰せられます。

Plasma MVP

Minimal Viable PlasmaはPlasmaの最小限の簡易実装として、主にDepositとブロックチェーン運用周辺の実装提案がされています。

有名どころでは東南アジアを中心にペイメント事業をしているOmise社が展開しているOmise GOなどに活用されています。

github.com

大まかな仕組みを理解した上でコードにも目を通すことでより理解は深まると思います。

Plasmaの重要性

こちらの記事でも書きましたが、今後イーサリアムはAppStoreやGoogle Playのようなプラットフォームになることが予想され、イーサリアムの周りにはたくさんのサービスや開発者が生まれることが予想されます。

しかしこれらはあくまでもイーサリアムのスケーラビリティ問題が解決されたらの話なので、解決されるまではワールドコンピューターという構想も夢のまま終わってしまいます。だからこそ、イーサリアムを裏から支え発展のための基盤を作るPlasmaが重要視されているのです。

最後までお読みいただきありがとうございました。認識違いなどありましたら、ご指摘お願いします。

ツイッターのフォローはこちらからどうぞ!

twitter.com