初心者向けプラズマ勉強法まとめノートー 0から3週間で学んだこと

はじめに

Yuriko Nishijima
Cryptoeconomics Lab
13 min readFeb 10, 2019

--

こんにちは!この記事は先月Cryptoeconomics Labの公式Mediumから発信したHow I started learning Plasma and what I’ve got within 3 weeks の日本語版記事です。ブロックチェーンのスケーラビリティ問題に興味のある日本の皆様向けにより読みやすく分かりやすい記事を書いて、CELの技術者たちが日々取り組んでいるPlasma Chamberの開発アップデートを伝えていけたらいいなと思い日本語でも記事を発信していくことになりました。

2018年12月にCryptoeconomics Labにインターンとしてジョインし、初めてしっかりとPlasmaを学び始めた際、メンターであるShogoさんにアドバイスを受けながら、後々勉強方法のまとめ記事を書くために自分でも初心者ならどのように学んでいくのが効率がよいか考えながら勉強してきました。今回はやっとその『プラズマスタディガイド』をみなさんにシェアできます。特にPlasmaの技術を1から勉強したい人に向けて参考になれば幸いです!

昔抱いていたスケーラビリティ問題への第一印象・Plasmaを掘り始めたきっかけ

最初スケーラビリティ問題はブロックチェーンの発展において大変クリティカルだと知りながらも、レイヤー1、レイヤー2ソリューションなどそれぞれたくさんありすぎて複雑そうだな..自分にはまだプロトコルレイヤーを掘るなんて難しすぎるかな…と躊躇していました。

多くの人に当てはまるかもしれませんが、Dappsや分散技術から可能になるWeb3.0の世界観・哲学に魅了され、興味を持ったのが私のブロックチェーンとの出会いでした。それ以来色々なプロジェクトをリサーチしてきましたが、その中でプロトコルレイヤーの開発をし、スケーラビリティ問題の解決に注力しているチームもたくさん見ながらも、先ほど述べたように単純に難しそうと思っていたことや、多くのアプリケーションレイヤーのプロジェクトがスケーラビリティ問題をまだ後回しにしている状況を垣間見てから個人的にこのトピックに足を踏み入れるのは億劫に思っていました。が、そんな中でPlasmaから実用化が進むであろうブロックチェーンというテクノロジーへの強い確信とトラストレスな社会を目指す哲学を持ってPlasmaの開発をしているCELチームと出会いました。彼らの技術力の高さと確固たるビジョン、こんな初心者にも質問すれば時間を割いて丁寧に技術的な解説をしてくれる面倒見の良さに感動し、自分も早くチームに貢献できるようになりたい!と試行錯誤しながらPlasmaを勉強し始めました!

CELでは現在Plasma ChamberというPlasma Cashをベースにしたオフチェーントランザクション検証フレームワークを実装しています。Plasma Chamberを使えばPlasmaの上に簡単にセキュアでスケーラブルなDappsを作れるようになります。ソースコードは全てGithubにアップしてありますので、この記事を見て実装レベルで興味を持った方はぜひご覧ください!

Plasmaの全体像ー3つに分解

一番最初はShogoさんがこれを読むといいよと沢山のリソースを渡してくれる中、Plasma全体の仕組みを俯瞰できていない状況だったので、一つ一つの記事が全体の中でどの部分の話をしているのか見えず記事の途中で情報を完璧に処理できず離脱してしまっていました。

大枠をとらえておけばわからない事項が出てきても、最低限自分がどの部分を理解できなかったかは捉えられますし、部分的な理解を繋ぎ合わせる作業もやりやすくなると思ったのでまずはその大枠から紹介したいと思います。

Plasmaを大きな視点で捉えた全体構造から、ある一点にズームインし詳しく解説している文章はたくさんありますが、どこの部分の話をしているか大きく分けて下記の3つのカテゴリに分けることができます。*重要ポイントは新しい情報に出会った時になんとなくどこの話をしているか分類するために知っておけばいいので、今全部言っている意味がわからなくても大枠を掴んでおけば大丈夫です!

*今回はルートチェーンはEthereum として話します。前提としてEthereumの基礎知識があることが好ましいです。

1.Ethereumというルートチェーン x Merkle Treeを従えたチャイルドチェーンを組み合わせてスケーラビリティをあげる

*重要ポイント:本来一つ一つ検証しブロックチェーンに刻んでいた(そのせいで『詰まり』が起こっていた)トランザクションたちを『オペレーター』と呼ばれるシングルパーティー(Dappsの運営者)がその場で検証することはとりあえず置いておいて、マークルツリーというデータ圧縮ボックスに入れていきます。マークルツリーのてっぺんにある全てのトランザクションデータの圧縮値(マークルルートといいます)のみをルートチェーンのブロックに刻み、ユーザーがお金を引き出したいときに該当txを(この出金作業を『Exit』と呼びます)というのがPlasmaの一番の基本構造です。このTxデータを圧縮してルートチェーンに刻んでいく仕組みのおかげで、Plasma上でアプリケーションを走らせればGasコストが下がりトランザクションのスループットも上がるというわけです。

2. Exit Gameを考え、セキュリティを担保する

*重要ポイント:沢山のトランザクションを集めてマークルツリーにまとめ、マークルルートのみをルートチェーンに刻む作業はオペレーターというシングルパーティーに任せられています。このオペレーターには不正なトランザクション(例えばオペレーターの所有しているアカウントに不正にコインを送りお金を稼ぐトランザクションなど)を発生させ、ルートチェーンに刻む(『正しい履歴』として確定させてしまう) 力があります。つまりこのままPlasma使ってしまうとブロックチェーン特有のトラストレスさが失われ、ブロックチェーン上にアプリケーションを開発した意味がなくなってしまいます。なのでネットワークに参加している誰かがこのようなオペレーターの不正行為を感知した際、告発『Challenge』し善良なユーザーの資産を守れる設計が必要です。(この告発・資産保護プロセスに関しては次の記事で詳しく説明していきます)

*この図はブロックチェーンではなく、コインが使われた履歴を表した図です

⬇︎

*運営=オペレーター

⬇︎

不正exitに対して証拠を提出して『challenge』(異議申し立て)できる。

オペレーターの不正行為を抑止するために、どう漏れなく不正を感知・告発しユーザーの資産保護するかの設計を ‘Exit Game’ と呼び、Etheresear.chなどで数々の新提案が投稿され、議論がなされています。(2019年2月8日現在、Plasma CashのExit game最新版は多分これ)この設計によってスケーラビリティを上げながらも(ルートチェーン=パブリックチェーンであるEthereuem ブロックチェーンの)セキュアさを保持するというプラズマの真髄が決まるので、とても重要なポイントとなっています。

3. Exit Gameからユーザービリティ/UXを考える

*重要ポイント:Plasmaの実用化・マスアダプションを目指すにあたり、最後に考えなければならない重要事項はユーザービリティです。ユーザーがExitを申請してからChallenge (異議申し立て) 期間というものが始まるのですが、その期間の間一度もexitに対してChallengeが承認されなかった時初めてユーザーはExit(お金の引き出し)を許されるわけです。しかしセキュアさを上げるためにChallenge期間を長く設ければ、同時に引き出しまでにかかる時間が長くなってしまい利便性が落ちてしまうという欠点があります。このセキュアさとユーザービリティの兼ね合いにおいて適切な設計が考案され続けています。

*勉強し始めの頃の落書きなのでところどころ間違いもあります。ご注意ください。

この全体像とプラズマを構成する3つのおおまかなカテゴリを理解したところで、下記の図のように自分の手で設計を描いてみることは理解を助けるのにとても役立つということをシェアしたいと思います!

自分で図に落とし込んでビジュアルで理解しながら文章を読むだけで理解度が全く違うと思うので是非試してみてください。

便利なツール

  • Plasma World Map

プラズマの原案 https://www.learnplasma.org/en/learn/がJoseph PoonとVitalik Buterinによって発表されてから、様々な修正が考案され、色々な新提案がEtheresear.chなどで発表されてきました。今まで発表されたきたモデル Plasma MVP, Plasma Cash, Plasma Cashflow, Plasma Primeなどをベースのモデルとして、世界中のリサーチチームで実装プロジェクトが走っています。

ソース:https://ethresear.ch/t/plasma-world-map-the-hitchhiker-s-guide-to-the-plasma/4333

一番大まかなカテゴリーとして ‘Simple Transfer’ (決済送金など基本的なトランスファーモデル)と’General States & Computation’ (アプリケーションプログラムなど複雑なスマートコントラクトを可能にしたモデル)と分かれています。

次に大きな分類として、アカウントモデルか、UTXOモデルか、という点もありますがこの分類についての一歩踏み込んだ説明は次の記事でしたいと思います。

補足:それぞれの提案も現在進行形で修正点が加えられEthresear.chで発表されているので、最新のアップデートがこのワールドマップに反映されていないかもしれません。ご注意ください。

  • Mastering Ethereum

今のプラズマはEthereum ブロックチェーンをルートチェーンとして実装されていることがほとんどで、GithubのドキュメンテーションやMedium記事などもEthereumの知識が読者にあることを前提として書かれていることが多いです。そのため、根本的にわからない概念が出てきた場合初心に戻ってEthereumの基本原理から学びなおすのが一番早いと実感しました。ethreumbookというGithubページ https://www.learnplasma.org/en/learn/にオープンソースドキュメンテーションとして記載されているのでわからなかった単語やキーワードをレポジトリ内検索して該当説明文を探してみることをおすすめします。

教材としてオススメの信頼できるソース

今でこそEthereumやBitcoinなど主要ブロックチェーンを解説した本などは出回っていますが、その中でもスケーラビリティソリューションに特化して説明している解説書などはまだ売っていないでしょう。そうするとネットで色々検索して情報収集していくしかないのですが、どの記事がソースとして信用できるか迷ってしまう人も少なくないかもしれません。その中でSgさんにオススメされた情報の信頼度も網羅性も高いPlasmaを勉強するためのソースとしては以下の3つが上げられます。

  • Learn Plasma : Simple Transferのカテゴリで提案されてきたUTXOベースの主要モデル、Plasma MVP、Plasma Cash、Plasma Debit、Plasma Primeの4つを説明しているサイトです。
  • Ethereum Research : 紫色のPlasmaカテゴリに飛ぶと、’Plasma xx’とタイトルづけられた提案がたくさんポストしてあり、それぞれ提案したリサーチチームのコアメンバーによって解説されています。その中でも上述したPlasma World Mapが投稿されているこの記事 はそれぞれの提案をカテゴライズし修正点が加わるごとにそれぞれの提案の進化の流れをまとめてくれているので参考にしながら読むとすごくわかりやすいと思います。
  • Plasma Implementers Call : Ethereum FoundationのPlasmaのコアリサーチャー/技術者たちが不定期で開催しているオンラインコールミーティングを録画したシリーズです。

さいごに

ここまでスタディガイドを書いてきましたが、私自身もまだまだ勉強途中なので何かいいソースや学習方法があればコメント欄に残してくれたら嬉しいです。また、自分のPlasmaへの理解力向上のため知識が0の時からいつも貴重なお時間を割き知識の共有・レビューをしてきてくださったCEL ShogoさんHiyaさんYosukeさんに感謝申し上げます。この記事内で残っているエラーは全て自分に起因するものです。

これからもPlasma伝道師として日英両方で、初心者向けの記事から細かい仕様にフォーカスした技術的な記事まで、色々なレベルの記事を発信していけたらいいなと思います。Plasma Chamberの最新アップデートにもご期待ください。Stay tuned!

--

--