はじめに
本記事は、過去にコンセンサス・ベイスが主宰していたオンラインサロンの記事です。記事は2017年~2018年にかけて執筆されたため、一部は、既に古くなっている可能性があります。あらかじめご了承ください。
今回の内容
Plasmaの基本概念や応用提案について紹介し、Raidenとの違いや課題について検討します。
ゴール
Plasmaの技術的な特徴や利点について理解します。
ターゲット
ブロックチェーンのスケーラビリティ問題やPlasmaに興味がある方を対象としています。
前提知識
イーサリアムやブロックチェーン技術の基礎を前提知識とします。
第1章 Plasmaの概要
Plasmaは、イーサリアム上でスケーラブルな汎用スマートコントラクトを実現するためのプロジェクトです。Lightning Networkの提唱者であるJoseph Poon氏が関わっていることもあり、メインのブロックチェーンから独立した環境で計算処理を行い、最終的な結果をメインのブロックチェーンに記録する、という点ではLightning Networkに似ています。Lightning Networkがオフチェーンで送金処理を外部化していたのに対し、Plasmaでは、「プラズマ・ブロックチェーン」と呼ばれるメインのイーサリアム・ブロックチェーンとは異なるチェーンを生成し、その中で分散処理や計算結果の検証を実現します。
スケーラブルな汎用スマートコントラクト
Plasmaが実現しようとするスケーラブルなスマートコントラクトは、ETHやERC20準拠トークンの送金トランザクションだけでなく、より多くの参加者を必要とする大規模な計算処理を含む汎用的なスマートコントラクトです。ここでは、イーサリアム上で電子投票を行うスマートコントラクトを仮定し、その集計処理をPlasmaのアイデアでどのように実現できるかを考えてみます。
分散アルゴリズムのMapReduce
Plasmaの提案では、計算処理を分散化するためのアルゴリズムとして、MapReduceの利用が検討されています。MapReduceは、GoogleでWebサイトのインデックス化のために開発され、その後、分散処理フレームワークであるHadoopに採用されたことで広く普及したプログラミングモデルです。関数型プログラミングで用いられるMap関数とReduce関数に由来しており、主に(キー、バリュー)型のデータの処理に向いています。
では、電子投票のデータをMapReduceにより集計し、投票結果を得る流れを考えてみましょう。入力データとして、「投票(投票者ID, 投票先)」という形式のレコードの集合を仮定します。下図の入力では6レコードしかありませんが、これが数億レベルのレコード数になれば、一人で集計するのは大変ですので、複数の作業者で分担することを考えます。MapReduceでは、まずMap処理を行うMapperに、分割した入力データを渡します。各Mapperは、入力されたデータを1レコードごとに処理し、特定の(キー、バリュー)型のデータに加工します。下図では、(投票先、投票数)という形式です。
Map処理した結果は、次のReduce処理を行うReducerに送られます。このとき、Map処理結果のキーに応じて、データを渡すReducerを振り分けます。この処理をshuffleと呼びます。最後にReducerは、受け取ったデータを集計し、最終的な結果を求めます。下図では、(投票先、合計投票数)が得られる結果となります。
プラズマブロックチェーン
それでは、PlasmaにおいてMapReduceがどのように実現されるかを考えてみましょう。下図に、Plasmaのホワイトペーパーを参考にして、電子投票の集計処理をPlasma上で実現する場合の流れを図示しています。(ただし、Plasma自体は検討段階のプロジェクトであり、構想段階のコンセプトを元に図解していますので、Plasmaの製品実装がこの図の通りになるとは限りません)
Plasmaでは、ブロックチェーンの中に、別のブロックチェーンを生成し、両者を紐付けることを考えます。ここで生成されたブロックチェーンをプラズマ・ブロックチェーンと呼びます。プラズマ・ブロックチェーンの中に別のプラズマ・ブロックチェーンを生成することもできますし、複数のプラズマ・ブロックチェーンを紐付けることもできます。
電子投票を行うスマートコントラクトを考えた場合、まず電子投票のためのプラズマ・ブロックチェーンが、ルート・ブロックチェーン(つまり、イーサリアム)の中に生成されます。このプラズマ・ブロックチェーン(第1層)から、集計処理を統括するプラズマ・ブロックチェーン(第2層)が生成されます。最初の処理を行うMapperは、さらに下の第3層のプラズマ・ブロックチェーンに存在し、第2層から分割された入力を受け取り、処理を行います。下図では、第3層には3種類に異なるチェーンが存在し、それぞれ並列で処理しています。
第3層でのMap処理が終われば、その結果が第2層に返却され、Reduce処理が行われます。集計処理の最終結果は、第1層のプラズマ・ブロックチェーンと、最終的にはルート・ブロックチェーンまで反映され、処理が終了します。
fraud proof
さて、通常のMapReduceでは、計算を行うMapperやReducerは一つの企業や組織などの閉じた世界に存在するノードです。したがって、故障等で停止してしまう可能性はあっても、悪意を持ってデータを改変する可能性は低いでしょう。
しかし、参加者が制限されていないブロックチェーン上でMapReduceを実現するためには、fraud proofと呼ばれる不正の検証技術が必要です。fraud proofの技術は、ビットコインなどのウォレットのSPVクライアントで不正ブロックを検出するために用いられる他、オフチェーンでスマートコントラクトを実行するためのプロダクトであるTrueBitでも研究が進んでいます。Plasmaでも、TrueBitのfraud proofを拡張した技術を用いて不正を検証し、不正のあったチェーンを即座に取り除く仕組みを考案しています。
第2章 Plasmaの利用ケース
Plasmaのホワイトペーパーでは、利用ケースとしていくつかの応用例が提案されています。まず、アメリカのソーシャルメディアであるRedditのクローンをブロックチェーン上で構築するというものです。Redditなどのソーシャルメディアは、任意の参加者がコンテンツを作成したり、特定のトピックについて話し合うコミュニティ(subreddit)をユーザが作成できたりといった機能があり、これらの特徴とプラズマ・ブロックチェーンの親和性は高いと言えるでしょう。
また、非中央集権的なアプリケーション(Decentralized Application)への適用として、非中央集権的な取引所(DEX)、メール(D-Mail)、CDNなどが挙げられています。
最後に、プラズマ・ブロックチェーンをプライベートチェーンとして活用する提案もされています。現在の多くのプライベートチェーンは、パブリックなブロックチェーンとは切り離された環境に構築されますが、プラズマ・ブロックチェーンをプライベートチェーンとして活用することで、インターネットとイントラネットの関係と同じく、閉じた環境で実施したいスマートコントラクトはプラズマ・ブロックチェーンで完結し、外部との連携はパブリックチェーンで実施する、といったことも考えられるでしょう。
ホワイトペーパー以外での提案では、OmiseGoの開発者が、Plasmaの技術を活用して、秒間100万トランザクションのパフォーマンスを目指す、という発言をして話題となりました。OmiseGoは、東南アジアを中心に拠点を持つ決済会社で、実店舗での決済に利用可能なイーサリアムベースのトークンの発行や普及を目指しています。
第3章 Plasmaの考察
Plasmaはまだ検討段階のプロジェクトで、情報も少ないのですが、ホワイトペーパーなどから読み取れる利点や課題について考察してみましょう。
まず、MapReduceを用いた分散処理によるスケーラビリティの実現という点ですが、MapReduceは大量のデータを一括でバッチ処理することには向いていますが、リアルタイムな逐次処理には向いていません。言い換えれば、一定時間の間に処理できるタスクを増やしてスループットを上げることはできますが、一つの処理にかかる時間を短くすることには向いておらず、一般的には分散処理のコストだけレイテンシは上がります。
例に挙げれば、1秒あたり100万トランザクションを処理することが仮にPlasmaで実現できたとしても、それは1トランザクションが100万分の1秒で完了することを意味しません。MapReduceを用いるのであれば、1つのトランザクションに平均して10秒はかかるが、同時に1000万トランザクションを処理できる、といった形に落ち着く可能性が高いように思われます。
もし、トランザクション処理のレイテンシを低く抑える必要があるのであれば、Raidenなどのオフチェーン技術を用いるほうが現実的だと考えられます。(ただしRaidenの場合も、チャネルオープンやコミットメントのトランザクションには時間がかかります)
また、fraud proofによって、悪意を持ったノードの計算結果を排除は可能だとしても、その計算結果を破棄して、別のノードで再度計算を行うコストも低くはありません。実際に運用してみなければ、このコストがどれくらいの影響になるのかは測れませんが、高いパフォーマンスを目指す上での課題となることは間違いないでしょう。
しかし、Plasmaの技術は、他のスケーラビリティソリューションと競合する技術ではなく、むしろ組み合わせて活用できる点にメリットがあります。第2回で紹介したLightning NetworkやRaidenなどのオフチェーンでの取引の仕組みを、プラズマ・ブロックチェーンの中に構築しても良いですし、ブロックチェーンのシャーディングと呼ばれる技術で分割された個々のブロックチェーンの中に、プラズマ・ブロックチェーンを構築することもできます。
第4章 まとめ
2017年の後半は、ブロックチェーンにおけるスケーラビリティの課題を解消するための動きが大きく進展した時期でした。本連載では、特にイーサリアムにおけるRaidenと Plasmaについて紹介しました。Raidenは送金機能に特化したオフチェーン技術で、低レイテンシのトランザクションを実現できると期待されています。一方Plasmaは、送金以外の汎用的なスマートコントラクトを実現するオンチェーン技術で、高スループットを実現できると考えられます。
両者の技術はそれぞれ競合しないオフチェーンとオンチェーンのソリューションであり、互いの短所を補いながら、組み合わせて活用することも期待できます。
スケーラビリティの解決はブロックチェーンにおける重要な課題ですので、今後も注意して動向を追っていきましょう。