Cross-rollup NFT wrapper and migration ideas

You can define your own data availability and consensus policies on L2, wallet/UX/usability can be improved but that is an iteration once the infrastructure is built out. For example a VRF based selection mechanism with a POS L2 rollup would allow for seperations of concerns where NFT’s can exist for certain applications (for example a sports theme’d NFT marketplace). Apply this idea to be able to jump across individual L2’s which wallet’s can adopt and likely it will cut down on L1 settlement times and skip L1 altogether for the most part.

1 Like

the idea of pre-creating all NFTs, I think, is a good one. i.e. nft contracts could have create2-like addressable virtual memory to use that could transparently map to serial #s and i think this could also be backwards-compatible.

1 Like

Let me share my though on this:

Each L2 maintains an “Exit Tree” This tree is a merkle tree where elementts can only be added and cannot be removed. This merkle tree contains entries of this type:

Entry Id: This is the key of the merkle tree, it’s incremntal and mantained by the wrapper manager.
Type: NFT_Exit
Original NFT: X
Original Rollup: A
Destination Rollup: B
Destination Owner: O2

The consistency of this Exit tree is warranted by the wrapper manager. The NFTs are locked in this smart contract in case they are original from this L2, or just burned if they are wrappers of NFT’s of other chains.

The hash of this exit tree is published in L1 when a batch is forged. (Or one week after the batch is forged in the case of optimistics).

Actually, a smart contract in L1 will maintain a merkle tree with ALL the Exit trees of all the L2 rollups. Let’s call it “Global Exit Tree”

The root of this “Global Exit Tree” is sent to all L2s. In the case of the zkRollup this can be a public input of the processing circuit.

In the L2s, this “Global Exit Tree” root is accessible. This can be done by adding it to the L2 state every time a batch is forged.

This should be enough to proof in L2 the authenticity of the transfer and withdraw the original NFT or create a wrapper in case it’s a foreign NFT. Of course nullifying that entry so that it cannot be used again.

Goodness of this protocol:

  • You don’t need to proof the full track of the different chains it has been traveling.
  • It can work the same way with ERC20 tokens just adding a value in the leaf.
  • In the case of ERC20, it avoids having multiple wrappers of the same token in the same chain.
  • This protocol can also be extended with inter L2 smart contract message communication. The leaf would say “Smart contract XXX is saying MsgY” and this msg will be available in the other L2.
  • The same mechanism can be used for L1-L2 and L2-L1 transfers.
8 Likes

But right now even listing and cancelling NFT on layer one cost gas. I don’t even dare to list my NFT on opensea because it is likely I waste gas listing there if no one buys it.

In my view the experience trading on L1 really sucks now. It stops many potential new users getting into and using NFT. The question is how to make it better.

3 Likes

You’d still need to send your NFT to the rollup (costing gas) and you’d need to deposit ETH as well (another tx) so ultimately you will still be paying the more fees than mainnet for a single NFT.

It becomes much more cost effective if your doing multiple transactions on the rollup, but if you wanted to get 5 cryptopunks on the rollup, you’d need to submit 5 transactions. Then you can submit 50 transactions on the rollup for free, and then another 5 transactions on mainnet with gas costs to get the cryptopunks off the rollup.

Point here is, there is a lot of complication for both users and services, and it doesn’t really save gas costs at all initially. So the barrier to entry for joining the rollup is the same as listing your NFT for sale now.

Meaning, people who care the most about gas fees (people without a lot of money) will be the ones most hesitant to join the rollup.

3 Likes

The project can issue NFT on rollups, so the main cost is transferring the ETH to and from the rollups. This makes even the simple buy once and sell cheaper than mainnet. Because the transfer off and from mainnet is a lot cheaper than buying/selling from mainnet(more complicated so costing more gas). The trading on rollup is cheaper than that delta.

Also if you buy more than 1 NFT (still the NFT is issued on rollups), you can batch deposit/withdraw ETH from L1, which will save you tons more gas.

Please correct me if I am wrong. Thanks!

1 Like

Really nice to see this proposed, the ENS L2 proposal from last year similarly helped get an important discussion started!

Two questions come to mind:

  1. What do you think about this approach being used for ERC-1155 non-fungibles? Would it mean that the wrapper manager be of a different type to incorporate the token ID and batch operations? I assume this could apply to any number of NFTs stored in a ERC-1155 compliant contract.

  2. If applied to the same network (e.g. simply a trusted transfer wrapper w/ chain of custody), this protocol could help w/ “jailbreaking” NFTs so that the ownership and metadata be put in a new “frame”, e.g. removing one minter’s restrictions or making it compatible with a certain NFT exchange. Are there implications for the wrapper manager for enabling it to work within the same network?

2 Likes

These are all my same concerns laid out succinctly. From a usability standpoint, particularly for those using hardware wallets, we’d be adding significantly more clicks and unnecessary touch points with multiple interacting parts. O(n^2) learning… It would mean a substantial decrease in user experience and adding potentially more unseen risk due to the various interacting surfaces and potential for user error.

I’m intrigued about the idea of Ethereum building somewhat of its own, dedicated NFT roll-up “portal.” One entry and exit point and then low-fee trading? There could be some arbitrary limit to this entry/exit (15mins? making it up) to avoid an excess of people “going in and out of the door”, and use that limit to perhaps fit in a prioritization scheme for this network so as users enter, the mining priority shifts to the NFT portal (users inside and outside would be zero sum, so it’s ok to move this priority as people move). Maybe in this special Ethereum NFT network, there’s a special wrap that happens to the tokens, I’m not sure. But the idea is to dynamically adjust block validation priority to this new NFT branch as needed.

I’m not sure a multi-protocol or multi-rollup approach will set us up for a scalable future that will likely require NFT microtransactions at high-frequency speeds. In advertising, we will probably connect media and ad auctions to NFTs at some point, which is a massive amount of volume.

Maybe it does make sense to have a dedicated (but not exclusive) space on the Ethereum network specifically for the efficient minting, trading, etc. of NFTs? Could that work?

EDIT: also, maybe @vbuterin’s multi-rollup approach is somehow abstracted away behind a simple UI for the user such that they aren’t the ones having to navigate the multiple rollups and such that it feels simply like going in and out of a door to enter the NFT “area” with a single signing. I think the UI/UX of such a thing would be the key aspect for mass adoption - remember, opensea is particularly simple to use; much has been abstracted away from the user.

1 Like

Yep! This is basically exactly the same as the designs that we considered for cross-shard transactions a few years ago (the ideas were never abandoned, it’s just that execution sharding was deprioritized).

3 Likes

Of course the transferring from rollup to rollups can be hidden from the user standpoint. :slight_smile:

1 Like

How much of the gas crisis do you attribute to the sniping and front running bots competing to buy out supply of well hyped NFT launches?

Today this launch was botted. I’m leading a project that does a fairly good job at detecting these bad actors and can streamline and automate the process by which projects can take this kind of protection into their own hands. But I’ve got a birds eye view into how pernicious they can be to the chain.

So the bots make the price of transacting rise by exorbitant tipping, then faster than human transactions as they attempt to fill the order queue up entirely, creating even more artificial load and congestion…

Are there too many conditions that would be impacted by setting a maximum standard deviation from the next highest tip you’re trying to outbid? That if nobody is tipping above 10, but suddenly a bit fills up a bunch of txn’s worh $4,000, we’re not all forced to outbid?

Just seems like a war of attrition that could scale badly for us no?

1 Like

Will this impact how often an NFT can be sold within a week because of the delayed withdrawal?
Will it just get updated each time the NFT is sold if sold within a week multiple times?

1 Like

Most users will want to own NFTs, use them, enjoy and sell to make money, or forget about them. Most NFTs will probably have short lifetime of hype and then go to oblivion. Some very rare ones will have longer life time.

If I were a typical consumer or gamer I would probably be too scared, lazy, and disinclined to move my NFT anywhere, except if I can make lots of money buy selling it.

To sell an NFT you can perfectly stay on the platform where it is stored. So again there is no point moving it.

A place like OpenSea can perfectly make many chains look like the same market place. You can perfectly buy an NFT on its native chain, transfer it, burn it, whatever.

So my subjective prediction is that people will move liquidity to NFTs and not NFTs to liquidity. When you buy a house, theoretically you could disassemble and move it to a different place. Very few people do it though. Very much same for NFTs. There is simply no strong purpose to overcome general human laziness. Theoreticaly, you can export and move your data from FB to Google to Instagram whatever. In reality I have never met a single person who did it. Same for NFTs.

It is interesting to create solutions that potentially move NFTs but they may be beyond the need or comprehension of a typical consumer. Security problems will multiply incredibly and probably unsolvably if an NFT is moved around different incompatible platforms. Add to this that for most of these platforms there is zero information on how they actually work and a number of security problems that people that runs these platforms simply hide.

The only thing that will be moved in large quantities between chains is money and this will be done by professionals (liquidity providers, money makers, etc)

Subjectively, if I ever own an NFT, I will keep it where it is.

So in my view, moving NFTs is a solution in a search of a problem. What will probably happen in real world, is that DeFi apps will have replicas on each chain, and if you want to use your NFT in defi, you will use it on corresponding replica. People that provide liquidity for DeFi will move it in big chunks to different chains. This is very much what is happening now already.

So moves will be done by professionals only. The unavoidable complexity of the move will be compensated by return on liquidity. Consumers will probably almost never need to move anything anywhere.

1 Like

I think it’s a bit of a blanket statement though that multichain always necessitates a bridge to another chain – the design of IBC (Interblockchain Communication Protocol) allows for a verification of consensus transcript and state of another chain without any of the governance related issues you mentioned that bespoke bridges introduce. So, I guess it would be more accurate to say that the the security uncertainties with multichain have to do with bridge implementations which are unreliable or dependent on governance mechanisms.

In this vein, I think cross-communication protocols for L2s as they become more widely used will face a similar dilemma as L1 multichain approaches – LazyLedger/Celestia would use IBC also to communicate between their rollup chains, but it seems to be a larger discussion that is still evolving.

2 Likes

Regarding multichain security Polkadot, a good description is given in this article:

For the complete decentralization of the huge global NTF market, one blockchain is not enough, abuses can always be carried out in the future.
At the moment, the most technologically advanced and promising for world adoption are Ethereum and Polkadot. Why not try to come up with a single solution for NTF. What do you think?

1 Like

Thanks for sharing.

Regarding ERC-721 support for L1 batch minting

The “batch mint everything” is a use case we had anticipated, and I baked one specific feature into ERC-721 to support this. It is documented in the Transfer event specification:

///  ...Exception: during contract creation, any number of NFTs
///  may be created and assigned without emitting Transfer....

Su Squares is an example where 10,000 NFTs are minted at contract deployment, and this number is scalable.

Contrasting NFTs and coins

In the diagrams above we can see wrapping and unwrapping makes sense. In the real world we call this “wealth management”, “tax management” and “blind trusts”. It is how we move wealth across generations and avoid taxes (i.e. transfers on the L1 base layer). We can add features such as privacy (e.g. “Delaware corporations”) and fractionalization (e.g. “corporate ownership”) and can even manage jurisdiction to control fees (e.g. “double Irish with a dutch sandwich”).

But please note that the NFT landscape is not just financial assets. The metaphor above breaks down when we see just how many use cases (mostly on L1, some off-chain) are attached to NFTs:

  • Breeding the cats on an L1 contract
  • Voting
  • Royalty fees attached to transfers
  • Derivative royalty fees settled off-chain (OpenSea)
  • Splitting tokens (see Area.world)
  • Pausing transfers
  • Randomized minting
  • Setting resolvers
  • Personalizing Squares
  • Auctions

Before we seriously consider any L2 proposal for NFTs, I would like to see an analysis of how many transfers are happening versus how many of these over-the-top actions are happening. My expectation is that the proposals above actually ceteris paribus INCREASE gas usage of NFTs due to the amount of unwrapping/rewrapping. And… plus one week to use anything.

Summary

In summary, no, kicking NFTs off your L1 network doesn’t make anything better.

2 Likes

@kladkogex always love reading your post in this forum.

As an NFT owner, one thing I am pretty know for sure is NFT trading is a disaster right now. I need to pay for gas fee to list my NFT on Opensea, I need to pay for gas fee to cancel my order there. I believe there is no way we can’t do better than this.

Maybe people can start on NFT issuing/buying on L2 and keep it there. (ok, it is fine if people don’t move NFT around and just keep it on the same L2 rollup as you predicted, maybe they can sell on L2 and get some WETH or whatever.) This would bring so much new crypto users in as the entrance fee would be so much lower.

I was just reading Argent’s L2 plan and it strike me they just onboard users starting with L2 wallet instead of L1. Maybe we can do the same for NFT? It will be much cheaper to trade I think. And we can do this project by project (issue say the next project on this rollup, and people would just trade on this rollup as they are too lazy to move it back to L1 and also it is cheaper to trade on this rollup).

And as of cross-rollup? I agree it is not an important problem now. If it would be a problem one day, we can solve it later.

Would really love your feedback! @kladkogex @vbuterin

1 Like

So I don’t think the issue here is about whether NFT issuers and marketplaces should release on L2s. It’s pretty obvious that they should and are in the process of doing so. The issue is once they are there, how do we minimize the resulting cross rollup fragmentation. This is exacerbated because at the moment most cross-rollup or fast exit bridges only support stablecoins, and do not currently support ETH for what I assume are due to risks involved in arbitrage such as liquidity risk - problems which are even greater for NFTs. That means the only way to cross rollups for NFTs will be to exit (7 days for optimistic rollups) to layer 1. And then to enter another L2, it will still need to be wrapped and bridged in any case, so why not set up a standard to support this between L1-L2 and L2-L2 in any case?

Imo, it’s not the most urgent problem, since as noted earlier most NFT users will just keep their NFT in the marketplace where they mint or purchase them. But I can think of at least two issues off the top of my head which exist, including

  1. migrating from a NFT specific zk-rollup into a defi supporting L2 which can fractionalize the NFT
  2. trading two NFTs between two different L2s.

NFTs are very nascent and there is are a lot of interesting projects which can be built around them - but which require low transaction costs (fees, time, and complexity). Dismissing cross L2 solutions for NFTs as unnecessary is basically equivalent to saying that a cryptocurrency is good enough if you just hold it, and building additional functionality on top of it isn’t necessary for most people or applications.

1 Like

Hi, I’m new.

I think the idea that an end-user will need to check the chain of receipts is fine, it can be done on the front end. The chain will never be too big if you just reroute it through the original rollup of issuing from time to time.

I assume the serial number R is random, so there is no possibility to create two wrapped NFTs pointing to the same address.

For me, the main issue is how the smart contract can recognize NFT as genuine. Say, you have the same protocol in two different rollups, or have some NFT-collateral lending and it needs to verify that NFT is genuine.

1 Like

I am not saying cross rollups are not necessary, but instead let’s onboard users on L2 first and when people need to migrate across L2 we can build the solution then.