コンパイル - 毎日
整理整頓 - jk

フィードバック、レビュー、ディスカッションに貢献してくれた Karl Floersch、Georgios Konstantopoulos、Martin Koppelmann に心より感謝いたします。
Plasma は、すべてのデータと計算 (入金、出金、マークル ルートを除く) をオフチェーンに維持できるブロックチェーン スケーリング ソリューションのクラスです。これにより、オンチェーンのデータ可用性によって制限されない、大規模なスケーラビリティへの扉が開かれます。プラズマは 2017 年に初めて提案され、2018 年にいくつかの反復を経ました。特に、Minimum Viable Plasma、Plasma Cash、Plasma Cashflow、Plasma Prime が挙げられます。残念ながら、(i) クライアント側のデータ ストレージ コストが大幅にかかること、および (ii) 支払いを超えたアプリケーションへの一般化を困難にする Plasma の基本的な制限により、Plasma はその大部分がロールアップに置き換えられました。
有効性の証明 (別名 ZK-SNARK) の出現により、この決定を再検討する理由が得られました。 Plasma を決済に活用する上での最大の課題であるクライアント側のデータ ストレージは、有効性の証明によって効率的に対処できます。さらに、有効性証明では、EVM を実行するプラズマのようなチェーンを作成できる一連のツールが提供されます。 Plasma スタイルの出口ゲームを多くの複雑なアプリケーションに拡張する根本的な理由は依然として残っているため、Plasma のセキュリティ保証はすべてのユーザーをカバーするものではありません。しかし、実際には、資産の大部分は依然として安全に保たれています。
以下では、Plasma がこれをどのように実現するかについて詳しく説明します。
概要: プラズマの仕組み
Plasma の最も理解しやすいバージョンは、Plasma Cash です。 Plasma Cash は、個々のトークンを独立した NFT として扱い、トークンごとに個別の履歴を追跡することで機能します。プラズマ チェーンには、定期的にブロックの生成と公開を担当するオペレーターがいます。各ブロック内のトランザクションはスパース マークル ツリーとして保存されます。トランザクションがトークン k の所有権を譲渡する場合、トランザクションはツリー内の位置 k に表示されます。プラズマ チェーン オペレーターが新しいブロックを作成するとき、マークル ツリーのルートをチェーンに公開し、ユーザーが所有するトークンに対応するマークル ブランチを各ユーザーに直接送信します。

これらがプラズマ キャッシュ チェーンの最後の 3 つのトランザクション ツリーであると仮定します。したがって、これまでのツリーがすべて有効であると仮定すると、現在イブがトークン 1 を所有し、デイビッドがトークン 4 を所有し、ジョージがトークン 6 を所有していることがわかります。
プラズマ システムにおける主なリスクは、オペレーターの不正行為です。これは次の 2 つの方法で発生する可能性があります。
1. 無効なブロックを発行します (たとえば、フレッドがその時点でトークンを所有していなくても、オペレーターにはトークン 1 をフレッドからハーマイオニーに転送するトランザクションが含まれています)。
2. 利用できないブロックを公開する (たとえば、オペレーターはマークル フォークの 1 つをボブに送信せず、トークンがまだ有効で未使用であることを他の人に証明できなくなります)。
オペレーターの行為がユーザーの資産に関連する場合、ユーザーは直ちに (具体的には 7 日以内) に退場する義務があります。ユーザー (「退出者」) が退出するとき、前の所有者からそのトークンを転送したトランザクションが含まれていることを証明するマークル ブランチを提供します。これにより、7 日間のチャレンジ期間が開始されます。他の人は、メルケル首相の次の 3 つの証明書のいずれかを提出することで離脱に異議を申し立てることができます。
1. 最新の所有者ではない: 退出者によって署名された後続のトランザクションにより、退出者のトークンが他の者に転送されます。
2. 二重支出: 前の所有者から他の人にトークンを移転する取引は、引き出し者にトークンを移転する取引の前に含まれます。
3. 無効な履歴: 過去 7 日以内に、対応する費用なしでトークンを転送したトランザクション。退出者は、対応する支出を提供することで応答できますが、そうしない場合、退出は失敗します。

これらのルールによれば、トークン k を所有する人は、実際にトークン k を所有し、そこから終了できることを確認するために、過去 1 週間のすべての履歴ツリーの位置 k にあるすべてのマークル ブランチを確認する必要があります。チャレンジを処理し、トークンを安全に終了できるように、資産転送を含むすべてのフォークを保存する必要があります。
代替可能なトークンへの拡張
上記の設計は、代替不可能なトークン (NFT) に適用されます。ただし、NFT よりも一般的なのは、ETH や USDC などの代替トークンです。 Plasma Cash を代替トークンに適用する 1 つの方法は、各小額面トークン (例: 0.01 ETH) を個別の NFT として扱うことです。残念ながら、これを実行すると、出口のガソリン代が高くなりすぎます。
1 つの解決策は、多くの隣接するトークンを一度に転送または終了できる単位として扱うことによって最適化することです。これを行うには 2 つの方法があります。
1. Plasma Cash をほぼそのまま使用しますが、多くの隣接するオブジェクトが同一である場合、複雑なアルゴリズムを使用して、多数のオブジェクトのマークル ツリーを非常に迅速に計算します。これは驚くほど難しくありません。ここで Python の実装を確認できます。
2. Plasma Cashflow を使用します。これは、多数の隣接するトークンを 1 つのオブジェクトとして単純に表します。
ただし、どちらのアプローチも断片化の問題に悩まされています。コーヒーを買う何百人もの人からそれぞれ 0.001 ETH を受け取った場合、ツリー内の多くの場所に 0.001 ETH が存在することになるため、実際にそれらの ETH を引き出すには依然としてコミットが必要であり、多くの個別の出口が必要になります。法外なガス代。デフラグ プロトコルは開発されていますが、実装するのは困難です。
もう 1 つのアプローチは、より伝統的な「未使用トランザクション出力」(UTXO) モデルを考慮してシステムを再設計することです。トークンを終了するときは、それらのトークンの最近 1 週間の履歴を提供する必要があります。これらの履歴トークンが終了したことを証明すれば、誰でもあなたの終了に異議を唱えることができます。

右下の 0.2 ETH UTXO の引き出しは、図の緑色で示されているように、履歴内の UTXO の引き出しを示すことでキャンセルできます。特に、左中央と左下の UTXO は祖先ですが、左上の UTXO は祖先ではないことに注意してください。このアプローチは、2013 年頃にカラー トークン プロトコルで見られた順序ベースのカラーリングのアイデアに似ています。
これを実現するにはいくつかのテクニックがあります。すべての場合において、目標は、「同じコイン」が二度引き出されるのを防ぐために、歴史の異なる時点での「同じコイン」の概念を追跡することです。
EVMへの一般化の課題
残念ながら、これを支払い以外の EVM に一般化することははるかに困難です。重要な課題は、EVM 内の多くの状態オブジェクトには明示的な「所有者」が存在しないことです。Plasma のセキュリティは、各オブジェクトに所有者が存在することに依存しています。所有者は、チェーン上のデータの可用性を監視および確保し、問題が発生した場合にはオブジェクトを終了する責任を負います。ただし、多くのイーサリアム アプリケーションはこのようには動作しません。たとえば、Uniswap 流動性プールには単一の所有者がいません。
もう 1 つの課題は、EVM が依存関係を制限しようとしていないことです。ブロック N では、アカウント A に保持されている ETH はブロック N-1 のどこからでも来た可能性があります。一貫した状態を終了するには、EVM プラズマ チェーンに終了ゲームが必要です。極端な場合、ブロック N の情報を使用して終了したい人は、ブロック N の状態全体をチェーンに公開するために料金を支払う必要がある場合があります。費用は数百万ドルに達します。 UTXO ベースのプラズマ スキームにはこの問題はありません。すべてのユーザーは、データを持っている最新のブロックから資産を引き出すことができます。
3 番目の課題は、EVM の無限の依存関係により、有効性を実証するための一貫したインセンティブを持つことが困難になることです。状態の妥当性は他のすべてに依存するため、何か 1 つを証明するにはすべてを証明する必要があります。この場合、データの可用性の問題により、解決策の失敗とインセンティブを両立させることができないことがよくあります。特に厄介な問題は、所有者の同意なしにオブジェクトの状態を変更できないという UTXO ベースのシステムの保証が失われることです。この保証は、所有者が自分の資産の証明可能な最新の状態を常に把握し、撤退ゲームを簡素化することを意味するため、非常に役立ちます。それがなければ、出口ゲームを作成することははるかに困難になります。
効果は、これらの問題を軽減する方法を示しています
有効性証明の最も基本的な機能は、チェーン上の各プラズマ ブロックの有効性を証明することです。これにより、設計空間が大幅に簡素化されます。つまり、無効なブロックではなく、オペレーターによる使用不可能なブロック攻撃についてのみ心配すればよいことになります。たとえば、Plasma Cash では、歴史的な課題に対する懸念が解消されます。これにより、ユーザーがダウンロードする必要がある状態の量が、過去 1 週間でブロックごとに 1 フォークからアセットごとに 1 フォークに減りました。
さらに、最新の状態からの引き出し (オペレーターの誠実さの一般的なケースでは、すべての引き出しは最新の状態から行われます) は、最新でない所有者によって異議を申し立てられることはないため、有効性が証明されたプラズマ チェーンでは、そのような引き出しは無効になります。何事にも挑戦することが可能です。これはつまり、通常の状況では、すぐに出金が可能です。
EVM への拡張: 並列 UTXO グラフ
EVM の場合、有効性証明を使用すると、いくつかの賢いことを行うこともできます。ETH および ERC 20 トークンの並列 UTXO グラフを実装し、UTXO グラフと SNARK を使用した EVM 状態の間の等価性を証明するために使用できます。これを取得したら、UTXO グラフに「通常の」プラズマ システムを実装できます。

これにより、EVM の複雑さの多くを回避できます。たとえば、アカウントベースのシステムでは、誰かがあなたの同意なしにあなたのアカウントを編集する可能性があります(あなたにトークンを送信し、それによって残高を増やすことによって)が、Plasma は UTXO 状態の EVM 状態自体に組み込まれていないため、問題にはなりません。 EVM と並行して、受け取るトークンはすべて独立したオブジェクトになります。
EVM に拡張: 完全なステータスで終了
「プラズマ EVM」を作成するためのよりシンプルなソリューション (Plasma Free など) が提案されており、その前にはこの 2019 年の記事がありました。これらのシナリオでは、誰でも L1 でメッセージを送信でき、オペレーターはトランザクションを含めるか、特定の状態ブランチを使用可能にするかのいずれかを強制されます。オペレーターがこれを実行できない場合、チェーンはブロックを元に戻し始めます。誰かが状態全体の完全なコピー、または少なくともユーザーが欠落の可能性があるとフラグを立てたすべてのデータを公開すると、チェーンはロールバックを停止します。出金には報奨金の投稿が必要になる場合があります。報奨金とは、このような大量のデータを投稿したユーザーのシェアに対するガス料金を誰かに支払うことになります。
このようなスキームの弱点の 1 つは、最新の状態をロールバックする必要が常にある可能性があるため、通常の状況では即時引き出しができないことです。
EVM プラズマ ソリューションの制限
このようなソリューションは強力ですが、すべてのユーザーに完全なセキュリティを保証することはできません。最も明らかな失敗例は、特定の状態オブジェクトに明確な経済的な「所有者」が存在しない場合です。
CDP (債務担保ポジション) のケースを考えてみましょう。これは、ユーザーが借金を返済した後にのみ解放できるトークンをロックするスマート コントラクトです。ユーザーが CDP に 1 ETH をロックしており (執筆時点で約 2,000 ドル)、1,000 DAI の負債があるとします。現在、プラズマチェーンはブロックの公開を停止しており、ユーザーは終了を拒否しています。ユーザーは決して終了できません。現在、ユーザーには無料のオプションがあります。ETH の価格が 1,000 ドルを下回った場合は CDP を放棄し、ETH の価格が 1,000 ドルを超えたままであれば、最終的に CDP を請求することになります。平均して、このような悪意のあるユーザーは、これを行うことでお金を稼ぎます。
別の例としては、Tornado Cash や Privacy Pools などのプライバシー システムがあります。 5 人の預金者がいるプライバシー システムを考えてみましょう。

プライバシー システムの ZK-SNARK は、システムに入るトークンの所有者と、システムから出るトークンの所有者との間の接続を非表示に保ちます。
オレンジのみが抽出されたと仮定します。その時点で、プラズマ チェーン オペレーターはデータの公開を停止します。先入れ先出しルールを使用した UTXO グラフ アプローチを使用して、各トークンがその下のトークンと一致すると仮定します。その後、Orange は事前混合トークンと事後混合トークンを引き出すことができ、システムはそれらを 2 つの別個のトークンとして扱います。ブルーがプレミックスされたトークンを出金しようとすると、オレンジの更新されたステータスがそれを置き換えますが、同時にブルーにはポストミックスされたトークンを出金するための情報がありません。
この問題は、他の 4 人の預金者が (預金に代わる) プライバシー契約自体を撤回してから、L1 上のトークンを引き出すことを許可すれば解決できます。ただし、このようなメカニズムを実際に実装するには、プライバシー システムの開発者側で追加の努力が必要です。
プライバシーの問題を解決する他の方法としては、ロールアップ スタイルでチェーンに数バイトを配置する Intmax 方式や、個々のユーザー間で情報を受け渡すプラズマのようなオペレーターなどがあります。
Uniswap LP ポジションにも同様の問題があります。Uniswap ポジションで ETH と USDC を取引した場合、取引前の USDC と取引後の ETH を引き出しようとすることができます。プラズマチェーンオペレーターと共謀した場合、流動性プロバイダーや他のユーザーは取引後の状態にアクセスできなくなり、取引後のUSDCを引き出すことができなくなります。これを防ぐには特別なロジックが必要です。
結論は
2023 年になっても、プラズマは依然として過小評価されているデザインです。ロールアップは依然としてゴールドスタンダードであり、比類のない安全性を備えています。これは、開発者エクスペリエンスの観点から特に当てはまります。アプリ開発者がアプリ内の所有権グラフやインセンティブ フローについて考える必要さえないというシンプルさに勝るものはありません。
ただし、Plasma を使用すると、データの可用性の問題を完全に回避でき、取引手数料を大幅に削減できます。プラズマは、そうでなければバリディウムだったであろうチェーンのセキュリティを大幅にアップグレードすることができます。 ZK-EVM は今年ついに実用化され、私たちにこの設計領域を再調査し、開発者のエクスペリエンスを簡素化し、ユーザーの資金を保護するより効率的な構築方法を考案する絶好の機会を与えてくれます。


