
Vitalik:NFTをLayer2に移行する際、どのようにすればRollup間でスムーズに相互運用できるだろうか?
TechFlow厳選深潮セレクト

Vitalik:NFTをLayer2に移行する際、どのようにすればRollup間でスムーズに相互運用できるだろうか?
NFTを手数料削減のため第2層(L2)エコシステムに移転する必要がある。しかし、これを適切に行うには優れたクロスRollup移植性標準が求められ、これによりエコシステムは特定のL2にロックインされるのを回避できる。
著者:Vitalik Buterin
翻訳:カイエル、バビット
NFTエコシステムは急速に発展しており、すでにイーサリアムチェーンのガス消費において重要な構成要素となっています。NFTエコシステムの若さと比較的基盤の弱さ、またNFTの多くが非金融的な性質を持つため高額な手数料を避けたいというニーズが高いことから、NFTは第2層(Layer2)ネットワークへの移行の主要な対象となっています。しかし、これによりNFTをどのようにLayer2へ移行するかという課題が生じます。
単純な提案として、コミュニティ内でNFTを単一のRollupプラットフォーム(たとえば一般コントラクトのデプロイに現在利用可能なArbitrumなど)にまとめて移行するという案がありますが、これはいくつかの重要な欠点があります:
- 既存の主要なEVM対応Rollupプラットフォームすべてには、後門や中央集権的なソータリング、あるいは実験的な機能が存在し、エコシステム全体を単一のRollupに委ねることはリスクがあり、これらの機能を超えてRollupがどのように進化していくか不確実です。
- NFTエコシステムは大きくなりすぎて、単一のRollupではすべてのトランザクションを安全に処理できなくなる可能性がある
- NFTエコシステムの一部、あるいはNFTエコシステム全体でさえも閉鎖的な世界ではなく、イーサリアムエコシステムの他の部分との相互運用性が必要となる
本稿では、NFTが複数のRollup間を自由に移動できるようにする「Rollupフレンドリー」なNFTの実現方法についての提案を行います。
提案された解決策1
NFTはまず1つのRollup(またはベースチェーン)上で登録されます。ラッピングNFTを作成することで、NFTは他のRollup(またはベースチェーン)間を移動できます。
ラッピングNFTのプロセスは以下の通りです:
1. Rollup A上で、NFT(これをXと呼ぶ)をラップマネージャーコントラクトに送信し、(i) 宛先Rollupおよび(ii) 初期所有者を指定します。このラップマネージャーコントラクトは、Xに新しいシーケンス番号Rを割り当て、宛先Rollup(これをBと呼ぶ)およびその初期所有者(アカウントO1と呼ぶ)とともに記録をストレージに保存します。
2. Rollup B上では、誰でもその上のラップマネージャーコントラクトを使用してラップされたNFTを作成できます。ラップされたNFTを作成するには、元のRollupとシーケンス番号を指定する必要があります。Xの「有効な」ラップNFTを作成できるのは、指定された所有者のみであり、それは(R, A)をシーケンス番号と元のRollupとして主張することで達成されます。なお、内容を指していない無効なラップNFTを作成することも可能ですが、Rollup Bはそれが有効か無効かを知る由もありません。ラップマネージャーコントラクトは(シーケンス番号、元のRollup、初期所有者)のタプルを保存し、同じタプルによる複数のNFT作成を防ぎます。
3. ラップからNFTを取り出すには、Rollup B上のラップ-Xの現在の所有者がそれをラップマネージャーに返却しなければなりません。このとき、マネージャーは「シーケンス番号R、元のRollup A、初期所有者O1のNFTが、新たな所有者O2とともにラップ解除されました」という領収書を発行します。
4. ラップマネージャーコントラクトは、Rollup B上の領収書の証明を受け取った時点で、自身のストレージ情報に基づきシーケンス番号、元のRollup、初期所有者を検証し、条件を満たせばXをO2に渡すことができます。


引き出しには時間的な遅延が伴うことに注意してください。Optimistic Rollupの状態ルートは領収書を検証するために約1週間の遅延を必要とするため最終確定まで時間がかかります。現時点では、マルチホップをより高速に行う唯一の方法は、複数のレイヤーでラッピングを行うことです。
ユーザーがラップ-Xが正当かどうかを確認するには、Rollup B上の状態とRollup A上の領収書を自分で検証する必要があります。
拡張:クロスロールアップ転送の追加
Rollup B上では、ラップ-Xの所有者はそれをラップマネージャーに送信し、「シーケンス番号R、元のRollup A、初期所有者O1のNFTが、新たな所有者O2とともにRollup Cに移動しました」という異なる領収書を発行するよう指示できます。
Rollup C上では、誰でも元のRollup(この例ではRollup A)、シーケンス番号、初期所有者を指定することでラップ-Xオブジェクトを作成でき、このラップ-XはRollup C上で自由に取引可能です。ただし、ラップ-Xを引き出すためには、Rollup Bの領収書をRollup Aに送信する必要があります。
実際に起きていることは、NFTが一つのRollupから別のRollupに移動する際、転送チェーンが領収書のチェーンを残し、各領収書がRollup Aにミラーされ、ある時点で順次処理されることです。将来、他のRollupの状態が最終確定した時点で(短期的にはKateコミットメントによって空間最適化可能、長期的にはZK-SNARKで領収書チェーン全体を証明することで可能)これが実現します。
ユーザーがラップされたXが正当であることを確認するには、クロスロールアップ転送を反映したすべてのRollup上の領収書チェーン全体(少なくとも、最後の領収書以降にRollupにミラーされた分)を検証する必要があります。
さらに、このプロトコルは簡略化可能です。「引き出し」とは、単にRollup Aへのクロスロールアップ転送にすぎません。Rollup Aが特定のシーケンス番号が現在Rollup A上にあることを認識すれば、ラップコントラクトは直接交換を行うことができます。
拡張2:ベースチェーン上でのガス最適化発行
すべてのNFTは、イーサリアムのベースチェーン上のラップマネージャーコントラクトが「所有する」形で発行できるように設計できます。これをガス効率よく実現するため、ラップマネージャーコントラクトは一連のシーケンス番号を生成し、それらをRollupに転送する機能を持ちます。実際にはすべてのNFTが事前に作成されていますが、まだいずれにも「意味」が割り当てられていない状態(つまり、2**256個の分化前の「幹細胞」NFTのようなもの)であり、これらが一括してRollupに転送されます。
「発行」プロセスは、今や「意味を与える」プロセスになります。これは領収書内に「意味ハッシュ」を渡すことで実現でき、所有者を渡すのと同じように動作します。NFTが意味を持っていなければ(つまり「幹細胞」状態)、所有者はそこに意味を割り当てることができ、それにより「分化済み」のNFTに変化します。ベースチェーンは領収書チェーンを検証して初めてNFTの意味を認識でき、意味が割り当てられるまでは不明のままです(実際、この領収書検証はZK-SNARKでなければ実用的ではありません)。
これにより、すべてのNFTをRollupではなくベースチェーン上に「根付かせる」ことが可能になります。これは、Rollupの障害や他の理由で利用不能になった場合、あるいは永続的に他のドメインに移行が必要なアプリケーションにとって有用です。
TechFlow公式コミュニティへようこそ
Telegram購読グループ:https://t.me/TechFlowDaily
Twitter公式アカウント:https://x.com/TechFlowPost
Twitter英語アカウント:https://x.com/BlockFlow_News











