Vitalik:NFTをLayer 2に移行するには、どのようにしてそれらをRollup間で友好的にするか?
著者:Vitalik Buterin
翻訳:カイル、バビット
NFTエコシステムは急速に発展しており、Ethereumチェーンのガス消費の重要な要素となっています。NFTエコシステムの若さと相対的な基盤の欠如、さらにNFTの大部分が非金融的性質を持つために高額な手数料を避ける必要があることから、NFTはLayer2ネットワークへの移行の主要なターゲットとなっています。しかし、これによりNFTをLayer2に移行する方法に関する問題が提起されます。
簡単な提案は、コミュニティ内でNFTを単一のRollupプラットフォーム(例えば、現在一般契約のデプロイに利用可能なArbitrum)に移行することを調整することですが、これにはいくつかの重要な欠点があります:
- すべての既存のEVM対応の主要なRollupプラットフォームにはバックドア、中央集権的な順序付け、またはその他の実験的機能があり、全エコシステムを単一のRollupに委ねることはリスクがあります。また、Rollupがこれらの機能を超えてどのように発展するかには不確実性があります。
- NFTエコシステムはあまりにも大きくなりすぎて、単一のRollupがすべての取引を安全に処理できなくなる可能性があります。
- NFTエコシステムのどの部分も、さらには全体のNFTエコシステムも閉じた世界ではありません。彼らはEthereumエコシステムの他の部分と相互運用する必要があります。
この記事では、NFTをRollup間で友好的に移動させる方法に関する提案を提示し、NFTが全体のLayer2エコシステムに移動できるようにします。
提案された解決策 1
NFTは最初に1つのRollup(または基盤チェーン)に登録されます。NFTをラッピングすることによって、NFTは他のRollup(または基盤チェーン)間をジャンプできます。
NFTをラッピングするプロセスは次のとおりです:
Rollup Aで、NFT(これをXと呼びます)をラッピングマネージャーコントラクトに送信し、(i) 目的地Rollupと (ii) 初期所有者を指定します。ラッピングコントラクトはストレージに記録を保存し、Xに新しいシーケンス番号Rを割り当て、目的地Rollup(これをBと呼びます)と目的地Rollupの初期所有者(このアカウントをO1と呼びます)を保存します。
Rollup Bで、誰でもRollup Bのラッピングマネージャーコントラクトを使用してラッピングNFTを作成できます。ラッピングNFTを作成するには、ソースRollupとシーケンス番号を指定する必要があります。Xの「有効な」ラッピングNFTを作成できるのは指定された所有者のみで、(R, A)をシーケンス番号とソースRollupとして宣言する必要があります。無指向コンテンツの無効なラッピングNFTが作成される可能性があることに注意してください。Rollup Bは有効と無効を知りません。ラッピングマネージャーコントラクトは(シーケンス番号、ソースRollup、初期所有者)のタプルを保存し、同じタプルを使用して複数のNFTを作成することを防ぎます。
ラッピングからNFTを引き出すには、Rollup Bのラッピング-Xの現在の所有者がそれをラッピングマネージャーに送り返す必要があります。後者は「シーケンス番号R、ソースRollup A、初期所有者O1のNFTがラッピングに接触し、新しい所有者O2を希望している」という領収書を発行します。
ラッピングコントラクトは、Rollup Bの領収書の証明を受け取ったときにXをO2に渡し、自身のストレージ情報に基づいてシーケンス番号、ソースRollup、初期所有者を確認し、それが通過したかどうかを検証します。
引き出しには時間遅延があることに注意してください。Optimistic Rollupの状態ルートは、領収書を検証するために最終確定するのに約1週間の遅延が必要です。これまでのところ、複数のジャンプをより早く行う唯一の方法は、マルチレイヤーラッピングを行うことです。
ユーザーがラッピング-Xが合法であることを検証するためには、彼ら自身がRollup Bの状態とRollup Aの領収書を検証する必要があります。
拡張:クロスRollup転送の追加
Rollup Bで、wrapped-Xの所有者はそれをラッピングマネージャーに送り、異なる領収書を発行する指示を添付できます。「シーケンス番号R、ソースRollup A、初期所有者O1のNFTがRollup Cに移動し、新しい所有者O2を希望しています」。
Rollup Cで、誰でも元のソースRollup(この例ではRollup A)、シーケンス番号、初期所有者を指定してラッピング-Xオブジェクトを作成できます。このRollup Cのラッピング-Xは自由に取引できます。しかし、ラッピング-Xを引き出すためには、Rollup Bの領収書をRollup Aに送信する必要があります。
実際に起こることは、NFTが1つのRollupから別のRollupに移動するとき、転送チェーンが領収書チェーンを残し、その領収書チェーンの各領収書がRollup Aにミラーされ、ある時点で順番に処理されます。将来的には、他のRollupの状態が最終確定したとき(これは短期的にはKateのコミットメントを通じて空間最適化を行い、長期的にはZK-SNARKを通じて全領収書チェーンを証明することができます)。
ユーザーがラッピングされたXが合法であることを検証するためには、彼らはクロスRollup転送を反映するすべてのRollup上の全領収書チェーン(または少なくとも、前回の領収書以来Rollupにミラーされた領収書チェーンの一部)を検証する必要があります。
さらに、このプロトコルは簡略化できます。「引き出し」は単にRollup AへのクロスRollup転送であり、Rollup Aが特定のシーケンス番号を発行したことを認識すれば、そのラッピングコントラクトは直接交換できます。
拡張2:基盤チェーン上のガス最適化発行
すべてのNFTは、Ethereum基盤チェーン上のラッピングコントラクトによって「所有」される形で発行できます。このようにしてガス効率を高めるために、ラッピングコントラクトは一整のシーケンス番号を生成し、それをRollupに転送する機能を持ちます。実際には、すべてのNFTは事前に作成されていますが、まだその中のどれにも「意味」が割り当てられていません(考えてみてください:2**256の未分化の「幹細胞」NFTがあります)、そしてそれらは一括でRollupに転送されます。
「発行」のプロセスは今や意味を与えるプロセスに変わります。これは、領収書に「意味ハッシュ」を渡すことによって行われます。所有者を渡す方法と同様です:NFTに意味がない場合(それは「幹細胞」です)、所有者はそれに意味を割り当て、それを「差別化された」NFTに変えることができます。基盤チェーンは領収書チェーンを検証した後にのみNFTの意味を知り、意味が割り当てられるまで(実際には、領収書の検証はZK-SNARKでなければなりません)知りません。
これにより、すべてのNFTが基盤チェーンに「根付く」ことが可能になり、Rollupではなくなります。これは、Rollupが中断したり、他の方法で実行不可能になったり、アプリケーションが他のドメインに永続的に移行する必要がある場合に役立ちます。