【Plasma理解への道】概論まとめ

BlockChainのエンジニア界隈がPlasmaで大盛り上がりしているので自分でも調べてみました。

実際、自分でwhite paperを読みました。(50ページぐらいあります)

一通り読んでからブログとかYoutubeとかで情報を整理しました。

Plasma概要

イーサリアムではスケーリングの問題(トランザクションが増加するとブロックの生成が間に合わず遅延する問題)が大きな課題として認識されています。
このスケーリングが解決しないことにはDAppsのプラットフォームとしての役割を担うイーサリアムが機能しません。

例えば、ゲームであるキャラクターを購入したい時に、数分間も待っていることはできません。

PokemonGo

そのスケーリングの問題を解決するためにBlockChain業界の天才エンジニア達が猛烈な勢いで開発しているのが、Plasmaという認識です。
反対に、このスケーリングの問題が解決すると同時にDAppsが活況を帯びるでしょう。

具体的には、Plasmaを導入することで、一秒間に数百万のスマートコントラクトを実行することができるようになります。
また、Plasmaでは既存のブロックチェーンの上で走らせることができるので、新しくRoot Chain(イーサリアムなど)に実装を加える必要がありません。

ここで気になるのがどれぐらい早くなるかですが(実際に利用できない速度だと意味がないので)、stateの更新が1秒間に数十億回可能になる。
現状、決済周りでみるとVisaで1秒間2000回の決済が行われていますので、かなりの速度になるのではないでしょうか。

Plasmaでは大きく2つのテクノロジーをキモとしています。

  1. MapReduce functions
  2. PoS

特徴と合わせてみていきたいと思います。

特徴①:Plasma blockchain

まず、Plasma blockchain(俗にいうサイドチェーンをそのように呼びます)というフレームワークを導入することで、高速にトランザクションを処理できるようになります。

この際、Plasma blockchainからイーサリアムなどのRoot Chainへサブミットした時に不正が発覚したらロールバックします(不正があったサブミットをなかったことにします)。

また不正のあったblockを作成した人にペナルティが与えられるようになっています。

Fig2

AliceはPlasma blockchainに1ETHを保有していますが、彼女の台帳はRoot Chain上にはなくPlasma blockchain上にあります。

Plasmaは全ての参加者の台帳をRoot Chain上で保有せずにPlasma blockchain上で保有することができます。

また、withholding attack(予めローカルに長いblockを用意しておき、そのblockが本物であると仕向ける攻撃)があった時は、以下の青の線のようにPlasma chainからexitしてからbroadcastすることができます

Fig3

特徴②:Blockchains in Blockchains

PlasmaではBlockchainにいくつも階層があるため、RootChainへのsubmit回数が減り、結果的にスケーラビリティを獲得することができます。

Fig4

裁判所のシステムに似ており、下級裁判所があることによって最高裁判所(Root Chain)が裁判をする回数を減らせるいう感覚に近いです。

nonceを使った検証(PoW)ではなく、Plasmaではchainの階層のbalanceとstateの動きをみて検証を行なっています。

stateだけをみることにより、かなりのスケーラビリティを獲得でき、親チェーン(もしくはRoot Chain)のstateを見ればいいだけなので検証のコストが小さくて済みます。

Plasmaでは、PoWではなくPoSでこれらの検証を行なっています。

Fig5

図の 3rd Tree Depth は、欠陥のある親チェーン(赤色)を避け、別の親チェーンにtransferすることもできるし、問題がある時は 2nd Tree Depth を飛ばして 1st Tree Depth へ broadcast することもできます。

つまりは、問題がある時はツリー構造を変更したり、飛ばしたりしながら、検証のコストを最小化しています。

特徴③:Plasma Proof-of-Stake

PlasmaのProof-of-Stake(PoS)は、スマコン上で実行されます。

Nakamoto Consensusの要素を取り入れたPoSです。

Nakamoto consensus is a name for Bitcoin’s decentralized, pseudonymous consensus protocol.

Quoraでは、Nakamoto consensusとはBitcoinのコンセンサスの方法と理解されています。

Nakamoto Consensusが優れているところは(つまりPoWの優れているところは)、分岐したblockchainのどれが正しいかすぐにはわからないところです。

最長になったblockchainが正とされるため、後になってからしかどの枝が正しいかわからないので、withholding attackの可能性を最小化することできます。

同じようにどの誰が正しいかわからない状況を作り出すために、PlasmaのPoSではstakeholder(coin保有者)は誰でもRoot Chainや親チェーンに対して新しいblockを追加することができるようになっています。?

Validatorのインセンティブは過去100blockに置けるstaker ratio(どれだけcoinを保有しているか)で決まります。

例えば、全coinの3%を保有している場合、過去100blockの3%が報酬となります。

Fig6

このケースだと、AliceとBob、Carolが同じウェイトを保有するvalidatorとなります。

赤が孤立ブロックとなり、青のチェーンがfinalizeされて親チェーンにsubmitされます。

特徴④:BlockChains as MapReduce

MapReduceのフォーマットを使うことで、ツリー構造の計算やstateの遷移が簡単になり、具体的には数千のnodeの計算が可能になります。

MapReduceは分散処理の処理方法なのですが、こちらがわかりやすいです。

MapReduceは、mapという処理とreduceという処理からなります。

概論なので、ここではmapで計算しやすいようにmap整列させて、reduceでまとめて計算しやすいようにすると理解しておきましょう。

Fig7

またこのMapReduceを使うことにより、Root Chainにsubmitする分だけ(Reduceの分だけ)検証すればよくなるので、かなり計算コストが削減されます。

Fig8

検証するのは青色の部分だけ、灰色は検証しなくてもよくなります。

例えば、DEXだと取引相手が何を注文するかは把握していなくてもよく、最終的に帳簿の収支だけが合っているか確かめるだけいいのと似ています。

ちなみにMapReduceの論文はこちら。

次回

今回はざっくりと全体の内容を把握するに留まりましたが、次回は特徴の詳細を踏み込んでいきます。

また、他のスケーリング手法との比較や、OmiseGoのPlasmaがGithubにあるので、そちらを参考に理解を進め自分でもコーディングできるようにしていきます!

その他

参考サイト

View story at Medium.com

View story at Medium.com

参考動画

こちらの動画が非常にわかりやすく、かなり参考になります!(少し技術者向けですが。)

福岡がすごい!

日本のBlockChain先進都市福岡にて勉強会がガンガン開けれているようです!
本当に福岡はすごい!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です