We need to transfer NFT to the Layer 2 (L2) ecosystem to reduce costs. However, doing this correctly requires good cross-Rollup portability standards so that the ecosystem can avoid being locked into a specific L2. —— Vitalik Buterin
The NFT ecosystem is developing rapidly and has become an important part of the gas consumption of the Ethereum chain. The rejuvenation and relative lack of foundation of the NFT ecosystem, as well as the need to avoid high fees due to the non-financial nature of a large part of NFT, have also made NFT the main goal of transferring to the Layer 2 network. However, this raises the question of how to migrate NFT to Layer2.
A simple proposal is to coordinate the migration of NFT to a single Rollup platform within the community (for example, Arbitrum , because it is currently available for general contract deployment), but this has some important disadvantages:
- All existing major Rollup platforms that support EVM have backdoors, centralized sorting, or other experimental features. It is risky to hand over the entire ecosystem to a single Rollup, and there is uncertainty about how Rollup will surpass these features.
- The NFT ecosystem may become too large for a single Rollup to handle safely
- No part of the NFT ecosystem, or even the entire NFT ecosystem, is a closed world; they will need to interoperate with other parts of the Ethereum ecosystem
This article proposes a proposal on how to make NFT cross-Rollup friendly, allowing NFT to move to the entire Layer 2 ecosystem.
Proposed solution 1
NFT will first be registered in a Rollup (or base chain). By creating an encapsulated NFT, the NFT can jump between other Rollups (or basic chains).
The process of encapsulating NFT is as follows:
- On Rollup A, the NFT (let’s call it X) is sent to the package manager contract, specifying (i) the destination Rollup and (ii) the initial owner. The lockbox contract saves a record in storage, assigns a new serial number R to X, and saves the target Rollup (we call it B) and the initial owner of the target Rollup (we call this account O1)
- On Rollup B, anyone can use the package manager contract on Rollup B to create a package NFT. To create a packaged NFT, you need to specify the source rollup and serial number. Creating an “valid” package NFT of X can only be done by the designated owner and by declaring (R, A) as the serial number and source Rollup. Please note that an invalid wrapper NFT without pointing content may be created; Rollup B does not know what is valid and invalid. The package manager contract stores (serial number, source rollup, initial owner) tuples and prevents the use of the same tuple to create multiple NFTs.
- To extract the NFT from the lockbox, the current owner of package-X on Rollup B must send it back to the package manager, which will issue a receipt stating “Serial number R, source summary A, and initial owner O1’s NFT Just touched the package, with the desired new owner O2”.
- The lockbox contract can hand X to O2 when receiving the proof of the receipt on summary B, and check the serial number, source Rollup and initial owner based on the information stored by itself, and verify whether it passes.
Please note that there will be a time delay for withdrawals, because the Optimistic Rollup status root takes about 1 week to be finalized in order to verify the receipt. So far, the only way to do multi-hop faster is to do multi-layer packaging.
In order for users to verify that the package-X is legal, they need to verify the status on Rollup B and the receipt on Rollup A by themselves.
Extension: Add cross-Rollup transfer
On summary B, the owner of wrapped-X can send it to the packaging manager with instructions to issue different receipts: “The NFT with serial number R, source Rollup A, and initial owner O1 has just moved to Rollup C , And the desired new owner O2”.
On Rollup C, anyone can make a package-X object by specifying the original source Rollup (Rollup A in this example), serial number, and initial owner, and this package-X on Rollup C can be traded freely. However, in order to be able to withdraw the package-X, the receipt of Rollup B needs to be sent to Rollup A.
What actually happened is that when the NFT moves from one Rollup to another Rollup, the transfer chain leaves a receipt chain, and each receipt in the receipt chain is mirrored to Rollup A and processed in order at a certain point in time . In the future, when the status of other Rollups is finally determined (this can be optimized in the short term through Kate promises, and in the long run, the entire receipt chain can be proven through ZK-SNARK).
In order for users to verify that the encapsulated X is legal, they need to verify the entire receipt chain that reflects all Rollups transferred across Rollup (or at least, one of the receipt chains that have been mirrored to Rollup since the last receipt).
In addition, please note that the agreement can be simplified: “Withdrawal” is just a cross-Rollup transfer Rollup A, if you realize that the specific serial number issued by Rollup A is now on Rollup A, then the packaged contract can be directly redeemed.
Extension 2: Gas optimized issuance on the basic chain
All NFTs can be issued in such a way that they are “owned” by the lockbox contract on the Ethereum base chain. In order to make this gas efficient, the lockbox contract will have the ability to generate a complete set of serial numbers and transmit them to Rollup. In fact, all NFTs are pre-created, but have not yet been assigned to any of them (think: there are 2**256 undifferentiated “stem cell” NFTs), and they are transferred to Rollup in batches.
The process of “release” has now become a process of giving meaning. This can be done by passing the “meaning hash” in the receipt, just like the owner: if the NFT has no meaning (it is a “stem cell”), the owner can assign a meaning to it and turn it into Created a “differentiated” NFT. The basic chain only knows the meaning of NFT after verifying the receipt chain, until the meaning is assigned (in fact, receipt verification must be ZK-SNARK to make it feasible).
This allows all NFTs to be “rooted” in the base chain instead of Rollup. This is useful for handling Rollup interruptions or otherwise becoming infeasible and applications that need to be permanently migrated to other domains.
Posted by:CoinYuppie，Reprinted with attribution to:https://coinyuppie.com/vitalik-buterin-how-to-migrate-nfts-to-layer-2-to-make-them-cross-rollup-friendly/
Coinyuppie is an open information publishing platform, all information provided is not related to the views and positions of coinyuppie, and does not constitute any investment and financial advice. Users are expected to carefully screen and prevent risks.