メインコンテンツへスキップ
Change page

プラズマチェーン

最終編集者: @HiroyukiNaito(opens in a new tab), 2024年4月1日

プラズマチェーンとは、イーサリアムメインネットに固定されているものの、独自のメカニズムに基づいてブロックを検証し、オフチェーンでトランザクションを実行するメインネットとは別個のブロックチェーンです。 ブラズマチェーンは「子チェーン」と呼ばれる場合もあり、基本的にはイーサリアムメインネットの小規模なコピーだと言えるでしょう。 プラズマチェーンは、(オプティミスティックロールアップをはじめとする)のメカニズムを用いて、紛争を仲裁します。

マークルツリーは、 (イーサリアムメインネットを含む) 親チェーンから帯域幅をオフロードするために、これらの子チェーンを無限にスタックすることができるものです。 しかし、これらの子チェーンは、セキュリティの一部を(不正証明を通じて)イーサリアムが保証するため、子チェーンにおけるセキュリティおよび効率性はいくつかの設計上の制限により影響を受けます。

前提知識

イーサリアムに関するすべての基本的なトピックおよび、イーサリアムにおけるスケーリングについてよく理解しておく必要があります。

プラズマチェーンとは何か

プラズマチェーンは、イーサリアムをはじめとするパブリックブロックチェーンにおけるスケーラビリティを向上させるためのフレームワークです。 当初のプラズマのホワイトペーパー(opens in a new tab)で述べられている通り、プラズマのチェーンは、他のブロックチェーン(「ルートチェーン」と呼ぶ)の上に構築されます。 これらの「子チェーン」はそれぞれ、ルートチェーンを拡張するものであり、一般的には親チェーン上でデプロイされたスマートコントラクトによって管理されます。

プラズマコントラクトの機能とひとつとして、イーサリアムメインネットとプラズマチェーン間の資産移動においてブリッジの役割を果たすことが挙げられます。 この機能は、サイドチェーンに類似していますが、プラズマチェーンでは、少なくとも部分的にイーサリアムメインネットのセキュリティを利用できるという点が異なります。 一方サイドチェーンでは、セキュリティを単独で担う必要があります。

プラズマはどのように機能するか?

プラズマフレームワークの基本的なコンポーネントには、以下が含まれます:

オフチェーンでの計算

イーサリアムにおける現在の処理速度は、毎秒15〜20トランザクションが限界であり、短期的により多くのユーザーに対応するためのスケーラビリティが実現できる見通しは低いと言わざるを得ません。 この問題は主に、イーサリアムのコンセンサス・メカニズムでは、ブロックチェーンの状態更新が発生するたびに、多くのノードがピアツーピアで検証しなければならないためです。

イーサリアムのコンセンサス・メカニズムはセキュリティを維持する上で必要ですが、あらゆるユースケースで必須なわけではありません。 例えば、アリスがボブに対して毎日1杯のコーヒー代を支払うという取引の場合、二人の間には一定の信頼関係があるため、イーサリアムのネットワーク全体でこれを検証する必要はないでしょう。

プラズマでは、イーサリアムメインネットがすべてのトランザクションを検証する必要はないと前提します。 トランザクションをメインネット外で処理することで、ノードはすべてのトランザクションを検証する責任から解放されます。

プラズマチェーンでは、処理速度とコストを最適化するためにオフチェーンでの計算が必須になります。 例えば、大部分のプラズマチェーンでは、トランザクションの順位付けと実行を管理する役割を、1名の「オペレーター」に担わせています。 トランザクションを検証する役割を1つのエンティティのみに負わせることで、プラズマチェーンは処理時間をメインネットよりも短縮できるのです。

ステートコミットメント

プラズマでは、トランザクションをオフチェーンで実行するものの、その決済はメインのイーサリアム実行レイヤーで行います。後者が存在しなければ、プラズマチェーンはイーサリアムによるセキュリティ保証を活用できないためです。 しかし、プラズマチェーンの状態を把握せずにオフチェーンのトランザクションをファイナライズする場合は、このセキュリティモデルが破綻し、無効なトランザクションが横行してしまうでしょう。 このため、プラズマチェーンにおけるブロック生成の責任を負うエンティティであるオペレーターは、定期的に、イーサリアムに「状態コミットメント」を書き込む必要があります。

コミットメント・スキーム(opens in a new tab)とは、他の当事者に値やステートメントを提示せずに、それにコミットする暗号学的な技術です。 このようなコミットメントは、コミットした後は値やステートメントが改変できなくなるという意味で「拘束力」を持ちます。 プラズマチェーンにおける状態コミットメントは、「マークルルート」(マークルツリーから派生したルート)の形式を用います。オペレーターは、イーサリアムチェーン上のプラズマコントラクトに対し、定期的にこのマークルルートを送信します。

マークルルートとは、大容量の情報を圧縮することができる暗号プリミティブです。 マークルルート(この文脈では「ブロックルート」とも呼びます)は、ひとつのブロックに含まれるすべてのトランザクションを表すことができます。 また、マークルルートを用いることで、あるデータセットの小規模な一部分に基づき全体を簡単に検証することができます。 例えばユーザーは、マークル証明を生成して、対象のトランザクションが特定のブロックに追加されたことを証明することができます。

マークルルートは、オフチェーンの状態についての情報をイーサリアムに提供する上で重要な役割を果たします。 マークルルートは、「特定の時点で保存したもの」と考えることができます。オペレーターは、「これがX時点におけるプラズマチェーンの状態であり、これがその証拠であるマークルルートです」とメインネットに伝えるのです。 オペレーターは、マークルルートによってプラズマチェーンの現在の状態にコミットすることになるので、これを「状態コミットメント」と呼びます。

プラズマチェーンへの参加と退出

イーサリアムのユーザーがプラズマを活用するには、メインネットとプラズマチェーン間の資金移動を管理するメカニズムが必要になります。 しかし、プラズマチェーン上の任意のアドレスにイーサを送金することはできません。プラズマチェーンは他のチェーンとの資金移動に対応していないため、トランザクションは失敗するか、資金が失われることになります。

プラズマチェーンでは、ユーザーの参入および退出を処理するために、イーサリアム上で実行されるマスターコントラクトを使用します。 このマスターコントラクトは同時に、(上述の)状態コミットメントを追跡し、不正証明(以下を参照)により悪意の行為を罰する役割も担っています。

プラズマチェーンに参加するには

ユーザー(以下では、アリスと呼びます)がプラズマチェーンに参加するには、プラズマコントラクトにETHあるいはその他のERC-20トークンを入金する必要があります。 コントラクトへの入金を監視するプラズマのオペレーターは、アリスが初回に行った入金と同額を作成し、プラズマチェーン上のアリスのアドレスにリリースします。 アリスは、プラズマチェーン(子チェーン)上でこの資金を受け取ったことを確認することが義務付けられており、その上で、他のトランザクションでこの資金を使うことができます。

プラズマチェーンから退出するには

プラズマチェーンからの退出プロセスは、いくつかの理由により参加時よりも複雑です。 最大の理由は、イーサリアムは当該プラズマチェーンの状態について情報を持つものの、その情報が正しいかどうか検証できないためです。 つまり、悪意のユーザーは、正しくない主張(「私は1,000 ETHを所有している」)と述べて、この主張を裏付けるために虚偽の証明を提出することで詐欺を働くことができるのです。

このような悪意のユーザーによる資金の引き出しを防ぐために、「チャレンジ期間」という仕組みが導入されています。 チャレンジ期間(通常は1週間)においては、すべてのユーザーが出金リクエストに対して不正証明を用いて異議を申し立てることができます。 異議申立が認められれば、出金リクエストは却下されます。

しかし通常のケースでは、ユーザーは正直に行動し、自分が所有する資金について正しい主張を行います。 この場合、アリスは、プラズマコントラクトにトランザクションを送信することで、ルートチェーン(イーサリアム)に対する出金リクエストを開始します。

アリスは同時に、プラズマチェーン上で資金を作成するトランザクションが、特定のブロックに追加されていることを証明するマークル証明を提出しなければなりません。 これは、未使用トランザクションのアウトプット(UTXO)(opens in a new tab)モデルを採用したプラズマMVP(opens in a new tab)など、プラズマのさまざまな開発サイクルにおいて必要になります。

プラズマキャッシュ(opens in a new tab)などその他のプラズマでは、UTXOではなく、非代替性トークン(NFT)として資金を表示します。 この場合、資金を引き出すには、プラズマチェーン上でトークンを所有していることを証明しなければなりません。 この証明は、当該トークンにおける最新の2回のトランザクションを送信し、同時にこれらのトランザクションがブロックに追加されたことを証明するマークル証明を提出することで行います。

ユーザーはさらに、自らの正直な行動を保証するために、出金リクエストにボンド(担保)を預け入れる必要があります。 異議申立を通じてアリスの出金リクエストが無効であることが証明された場合、アリスのボンドは没収され、その一部は異議申立を行ったユーザーに報酬として提供されます。

このチャレンジ期間において不正証明が提出されなかった場合、アリスの出金リクエストは正当だと見なされ、アリスはプラズマコントラクト上の資金をイーサリアムに移動することができます。

紛争仲裁のメカニズム

あらゆるブロックチェーンと同様に、プラズマチェーンにおいても、参加ユーザーが悪意で行動した場合(資金の二重支出など)にトランザクションのインテグリティを強制するためのメカニズムが必要になります。 これを実現するために、プラズマチェーンでは不正証明を用いて、状態遷移の正しさに関する紛争を仲裁し、悪意の行動を罰しています。 不正証明は、あるプラズマ子チェーンが親チェーンまたはルートチェーンに対して苦情を申し立てるメカニズムとして用いられます。

不正証明とは、特定の状態遷移が無効であるとの主張を指す用語です。 具体的には、アリスというユーザーが同じ資金を二度使用した場合が該当します。 アリスが、ボブとのトランザクションで彼女のUTXOをすでに使用したにも関わらず、この(すでにボブが所有している)UTXOを、他のトランザクションでも使用しようとするような場合です。

ボブは、アリスによる資金の引き出しを防ぐために、アリスはすでに当該UTXOを以前のトランザクションで使用済みであることの証拠と、このトランザクションがブロックに追加済みであることを証明するマークル証明を提出することで、不正証明を作成することができます。 プラズマキャッシュでも同様のプロセスが実行され、ボブは、アリスが引き出そうとしているトークンはすでにボブに移転済みであることの証明を提供する必要があります。

ボブの異議申立が認められると、アリスの出金リクエストは却下されます。 しかしこのアプローチでは、ボブは常にチェーン上の出金リクエストを監視しなければなりません。 ボブがオフラインであれば、アリスはチャレンジ期間の終了後に悪意の引き出しを実行できてしまうのです。

プラズマチェーンからの大量退出の問題

大量退出の問題とは、特定のプラズマチェーンから大量のユーザーが同時に出金しようとする際に発生する問題を指します。 これがなぜ発生するかは、プラズマにおける最大の問題点のひとつであるデータの可用性がないことに由来しています。

データの可用性とは、提案されたブロックの情報が実際にブロックチェーンネットワークで公開されていることを検証する能力を指します。 ブロックの生成者が当該ブロック自体を公開しているが、ブロック生成に用いたデータを秘匿する場合、このブロックは「可用性がない」ことになります。

ノードがブロックをダウンロードし、トランザクションの有効性を検証するためには、ブロックの可用性が必須です。 すべてのブロックチェーンでは、ブロックの生成者に対して、すべてのトランザクションデータをオンチェーンに送信するように強制することでデータの可用性を実現しています。

データの可用性は同時に、イーサリアムのベースレイヤー上で展開されるオフチェーンのスケーリング・プロトコルにおけるセキュリティを保証するためにも有用です。 オフチェーンのオペレーターに対してトランザクションデータをイーサリアム上で公開するように強制することで、どのユーザーも、チェーンの正しい状態を参照した不正証明を作成して無効なブロックに異議を申し立てることができるのです。

プラズマチェーンでは、トランザクションデータの保存は主にオペレーターが実行するため、メインネット上ではデータは公開されません(定期的に実行される状態コミットメントは例外です)。 つまりユーザーは、トランザクションが無効であると主張するために不正証明を作成する必要がある場合、オペレーターが提供するブロックデータに依存せざるを得ません。 このシステムが正常に機能すれば、ユーザーは常に不正証明を用いて資金の安全性を維持できます。

しかし、単なるユーザーではなく、オペレーター自体が悪意の当事者である場合に問題が発生します。 オペレーターは、当該ブロックチェーンに対して単独で管理権を持つため、チェーン上の他のユーザーに帰属する資金を盗み取るなど、より大規模に無効な状態遷移を進めたいと考えるインセンティブがより大きくなるのです。

このようなケースでは、通常の不正証明システムでは対応できません。 オペレーターは、アリスやボブの資金を自らのウォレットに転送する無効のトランザクションを作成した上で、不正証明を作成するのに必要なデータを秘匿することが簡単にできるからです。 これは、オペレーターが他のユーザーやメインネットに対してデータを提供することが義務付けられていないために発生する問題です。

ですから、最も楽天的な解決策は、当該プラズマチェーンのユーザーを「大量退出」させることでしょう。 大量のユーザーを一挙に退出させることで、悪意のオペレーターにおける資金窃盗の試みを遅延させ、ユーザーに対する一定の保護策を講じることができます。 出金リクエストは、個々のUTXO(またはトークン)が作成された時点に基づいて順番付けられるため、悪意のオペレーターが正直なユーザーのトランザクションを先回りして実行することはできません。

それでもなお、無効な出金処理に伴う混乱に乗じて利益を得ようとする機会主義的なユーザーの発生を防ぐためには、大量退出時における出金リクエストについても検証できる方法が必要になります。 これは、出金を求める各ユーザーに対して、有効であるチェーンの最後の状態を送信することを義務付けるというシンプルな方法で解決できます。

このアプローチでも、すべて問題が解決されたわけではありません。 例えば、あるプラズマチェーンに参加している全ユーザーの退出が必要な場合(オペレーターが悪意の行為を行う場合は発生する可能性があります)、このプラズマチェーンの有効な状態全体を、イーサリアムのベースレイヤーに同時にダンプしなければなりません。 プラズマチェーンのサイズが任意であり(高スループット=データ量が多い)、イーサリアムでは処理速度に限界があることを考えると、このソリューションは理想的ではありません。

この退出アプローチは理論的には妥当ですが、現実的にはイーサリアムのネットワーク全体における大渋滞を引き起こすでしょう。 イーサリアムの機能が損なわれるばかりか、大規模なユーザー退出がうまく連携されていない場合、各ユーザーが自らの資金を引き出す前に、オペレーターが当該プラズマチェーンのすべてのアカウントにおける残高を奪い取ってしまう可能性があります。

プラズマチェーンの長所と短所

長所短所
高スループットおよびトランザクションあたりの低コスト。汎用的な計算をサポートしない(スマートコントラクトを実行できない)。 述語論理により、基本的なトークンの転送、スワップ、およびその他数種類のトランザクションタイプのみに対応しています。
任意のユーザー間の取引に適している(プラズマチェーン上で設定されたユーザーペア間においては、間接費用が発生しない)。資金の安全性を保護するには、ネットワークを定期的に監視する(ライブネス要件)か、この役割を特定のユーザーに委任する必要がある。
メインチェーンとは無関係の具体的なユースケースで活用するために導入できる。 企業を含むあらゆるユーザーが、プラズマ上のスマートコントラクトをカスタマイズすることで、様々な文脈に合わせたスケーラブルなインフラを実現できる。データの保存およびリクエストによる提供につき、1名あるいは複数のオペレーターに依存する。
計算およびストレージをオフチェーンに移動させることで、イーサリアムメインネットの負荷を軽減する。チャレンジ期間が設けられているため、出金プロセスは数日を要する。 この遅延は、代替可能資産であれば流動性プロバイダーが軽減できるが、それに伴って資本コストが発生する。
大量のユーザーが一気に退出を求める場合、イーサリアムメインネットの混雑が予想される。

プラズマチェーンとレイヤー2のスケーリング・プロトコルとの比較

プラズマは、以前はイーサリアムに対する有益なスケーリング・ソリューションだと考えられていましたが、現在ではレイヤー2(L2)のスケーリング・プロトコルに取って代わられています。 L2のスケーリング・ソリューションは、プラズマチェーンにおけるいくつかの問題点を解消しています:

効率性

ゼロ知識ロールアップでは、オフチェーンで処理された各トランザクションバッチを検証するために、暗号学的な証明を生成することができます。 これにより、ユーザー(およびオペレーター)が無効な状態遷移を進めることができなくなるため、チャレンジ期間や退出ゲームを実行する必要がなくなります。 さらにユーザーは、資金の安全性を保護するために定期的にチェーンを監視する必要がなくなります。

スマートコントラクトへのサポート

プラズマのフレームワークにおけるもう一つの問題は、イーサリアムのスマートコントラクトを実行できない(opens in a new tab)点にありました。 このため、大部分のプラズマの実装は、単純な決済システムやERC-20トークンのやりとりを目的とするものでした。

一方、オプティミスティック・ロールアップはイーサリアム仮想マシンとの互換性を持ち、イーサリアムネイティブのスマートコントラクトを実行できるため、分散型アプリケーションのスケーラブルな展開を実現できる有益かつセキュアなソリューションとなっています。 同様に、EVMのゼロ知識実装(zkEVM)(opens in a new tab)の開発計画も進行中です。ゼロ知識ロールアップが任意のロジックを処理し、スマートコントラクトを実行できるようなります。

データの可用性がない

すでに述べたように、プラズマチェーンではデータの可用性が提供されないという問題があります。 悪意のオペレーターがチェーン上で無効な状態遷移を進める場合、オペレーターは不正証明を作成するのに必要なデータを秘匿できるため、ユーザーが異議を申し立てることができなくなります。 ロールアップでは、オペレーターに対してトランザクションデータをイーサリアム上で公開するように強制することで、この問題を回避できます。これにより、どのユーザーでもチェーンの状態を検証し、必要に応じて不正証明を作成することが可能になります。

大量退出の問題

プラズマチェーンにおける大量退出の問題に対しては、ゼロ知識ロールアップやオプティミスティック・ロールアップでは様々な解決策を提案しています。 ゼロ知識ロールアップの場合、いかなるシナリオでもオペレーターが他のユーザーの資金を窃盗できないことを保証するための暗号メカニズムを採用しています。

同様に、オプティミスティック・ロールアップでは、資金の引き出しに対して遅延期間を設けることで、どのユーザーでも異議を申し立てることができ、悪意の出金リクエストを実行できないようにしています。 これはプラズマチェーンにおける対策と似ていますが、オプティミスティック・ロールアップにおける検証者は、不正証明を作成するのに必要なデータにアクセスできる点が異なります。 これにより、ロールアップのユーザーの場合、ユーザーが混乱状態において先を競ってイーサリアムメインネットに逃げ出すというような状況が発生しないようになっています。

サイドチェーンおよびシャーディングとの相違点

プラズマチェーン、サイドチェーン、およびシャーディングは、いずれも何らかの方法でイーサリアムメインネットに接続されており、かなりの程度類似した技術だと言えます。 しかし、メインネットとの接続の水準や強度は異なっているため、これらのスケーリング・ソリューションにおけるセキュリティ特性が異なります。

サイドチェーンとの比較

サイドチェーンとは、双方向のブリッジを介してイーサリアムメインネットと接続された、独立して運用されるブロックチェーンを指します。 ブリッジは、サイドチェーン上でトランザクションを実行するために、メインネットとサイドチェーンとの間でトークンを交換する機能を提供するため、メインネットの混雑を解消し、スケーラビリティを向上させます。 サイドチェーンはメインネットとは別個のコンセンサス・メカニズムを採用しており、通常はメインネットよりもはるかに小規模なネットワークです。 このため、ブリッジを介してサイドチェーンに資産を転送できる状態はリスクを高めます。サイドチェーンに対しては、イーサリアムメインネットによるセキュリティの保証が提供されないため、サイドチェーンへの攻撃が発生した際には資産を喪失するリスクがあります。

一方プラズマチェーンでは、メインネットによりセキュリティが保証されます。 このため、サイドチェーンと比較した場合はセキュリティがはるかに堅牢であると言えます。 サイドチェーンとプラズマチェーンはいずれも様々なコンセンサス・プロトコルを採用できますが、プラズマチェーンの場合は、各ブロックに対するマークルルートがメインネット上で公開される点が異なります。 ブロックルートとは、プラズマチェーン上のトランザクションに関する情報を検証するために用いることができる、情報の一部分を指します。 プラズマチェーンへの攻撃が発生した場合、適切な証明を用いることで、資金を安全にメインネットに戻すことができます。

シャーディングとの比較

プラズマチェーンとシャードチェーンは、どちらもイーサリアムメインネット上で定期的に暗号学的な証明を公開しています。 しかし、そのセキュリティ特性は異なります。

シャードチェーンの場合、各データシャードに関する詳細情報を含む「照合ヘッダー」をメインネット上でコミットします。 メインネット上の各ノードは、データシャードの有効性を検証した上で強制するため、無効なシャード遷移を防止でき、悪意の行為からネットワークを保護することができます。

一方プラズマチェーンでは、子チェーンの状態について最小限の情報しかメインネットに提供されない点が異なります。 つまり、メインネットでは子チェーンで実行されたトランザクションを事実上検証できないため、プラズマチェーンの方がセキュリティが低くなります。

: イーサリアムブロックチェーンのシャーディングは、現在ロードマップに含まれていません。 代わりに、ロールアップとダンクシャーディングによるスケーリングが採用されています。

プラズマの使用

複数のプロジェクトにおいて、Dappで活用できるプラズマの実装が提供されています。

参考文献

役に立ったコミュニティリソースがあれば、 ぜひこのページに追加してください。

この記事は役に立ちましたか?