The word on the street is that NFT fever is not over, and a single search in your search engine of choice will definitely confirm it. News about the release of an interactive NFT Platform, the first-ever NFT trophy for UEFA’s goal of the tournament, or pictures of unique monkeys and giraffes all over social media, from Twitter to Instagram. But what exactly is an NFT, and more importantly, where do these NFTs actually live?
Back to basics
An NFT (or Non-Fungible Token) is a non-interchangeable digital asset backed by a blockchain system. While a unit of Bitcoin or Ether is interchangeable, any two units of the token will have the same exact value, this is not the case for NFTs. NFTs are “one of a kind” tokens, and they are uniquely identifiable. This is why they are usually used to represent collectibles (like art, music, games, or even real estate) or unique digital resources (like domain names or identities). They are the ultimate way to represent ownership and scarcity of digital resources. How can one own an image on the Internet when anyone can copy-paste it and replicate it? Well, NFTs try to tackle this problem; they won’t be able to prevent others from copy-pasting it, but at least there’s a way to track back its ownership directly to you.
The first wide-spread standard for the implementation of NFTs was Ethereum’s ERC-721. This ERC provides a standard API for the implementation of NFTs and its basic functionalities. Units of an NFT in the contract’s implementation are represented with a unique ID (this is what makes them non-interchangeable), and the kind of functionalities exposed by the standard are the straightforward ones that anyone would expect: transfer the ownership of a token; approve certain rights over the token for an address; check the balance and ownership of tokens in the contract for an address, etc.
NFTs are nothing new. Those of you who have been here for a while may recall how in 2017 the priciest CryptoKitties were trading at a record high of $1 million USD when EIP-721 was still in a draft state. L2 solutions weren’t a thing back then, and the interest in NFT kitties was such that the great majority of transactions in the Ethereum network involved the CryptoKitties’ ERC721 contract, to the point of clogging the whole network.
The asset fragmentation problem
So what has changed in the NFT space since the CryptoKitties fever of 2017? Mainly, NFT standards have improved; L2 solutions (like Metis or Arbitrum) are now a reality; and new blockchain networks with smart contract support beyond Ethereum (like Solana or Polygon) are in mainnet. In 2017 we could only mint our NFTs in Ethereum; now, we can have our NFTs scattered all around the blockchain space, from Solana, to Metis, to Ethereum.
This may not seem such a big deal; as long as our wallet supports all of these networks, we should be able to track where all our assets are, right? But what if you want to exchange an NFT in Solana with one that lives in the Ethereum network? Or if you want to migrate you asset from one network to another? Or what if you have an NFT that was minted in L2 (and thus lives in L2) and you want to withdraw it in L1? If an NFT is minted in L2, the only knowledge L1 has about that NFT is the rollup transaction that includes the minting L2 transaction.
Digital asset fragmentation in blockchain “is” indeed a problem, one that limits what we can do with NFTs. Of course, digital asset fragmentation is a sub-problem inside the more general issue of blockchain interoperability.
“But wait, why mint an NFT in L2 if it will limit what I can do with it in the future? I get that the interoperability between networks is a problem yet to be solved, but why promote fragmentation within the Ethereum ecosystem by minting in L2 instead of minting right away in L1?” Well, we are back to gas costs, and the throughput problems that plague Layer 1 Ethereum. The NFT ecosystem is growing rapidly, and it’s already responsible for a huge chunk of the load in the Ethereum network. In order to scale in terms of gas costs and performance, and to prevent the next CryptoKitties-level project from clogging the network, we need NFTs in L2 solutions. Even more, users should be free to use their L2 solution of choice to handle their NFTs without being limited with what they can do with it, or where they can exchange it. It is all the same Ethereum ecosystem, so NFTs in L2 solutions should be able to be moved around between L2 solutions and to L1 seamlessly, as if they lived in the same single Ethereum network (despite the low level being a set of protocols that handle these “move arounds”).
To further support my argument, this asset fragmentation problem between L1 and L2 in Ethereum has already been identified by great minds like Ethereum co-founder Vitalik Buterin. In fact, the discussion has been recently brought up again in the Ethereum Research forum in a thread started Metis’ Pavel Sinelnikov.
NFT Bridges
So how can we remove these NFT silos between different L2 solutions and Layer 1? We need a protocol that supports the creation and transfer of NFT across multiple layers, i.e. an NFT bridge. Is there already any implementation of an NFT bridge? Not that I am aware of, but different designs are being discussed (such as the aforementioned ones). For illustration purposes, let me walk you through the approach that Pavel Sinelnikov proposed in his post (which, from what I infer from the title of the images shared, could end up being the approach that gets implemented by Metis).
The whole goal of this NFT bridge design is to create a way to easily transfer NFTs across layers and reduce the gas requirements by minting the NFTs on Layer 2. This is great, because it tackles the gas cost and performance issues while allowing users to withdraw their NFTs to Layer 1. The bridge is implemented through a set of user-owned contracts in L1 and L2.
The high-level protocol is quite straightforward. Users deploy a registry of their NFT collections in L1 and L2. These collections are used to track the different NFTs owned by them, and the chain where they are currently hosted. If a user wants to transfer an NFT from L2 to L1, he sends a transaction to his collection, specifying the target address of the transfer in L1. Under the hood, this contract locks the NFT in L2, and performs a cross-chain transaction to L1 in order to mint (or unlock if it has already been minted) the NFT in L1.
And what if we want to deposit an NFT from L1 back to L2? The process is essentially the same. From L1, the owner of the NFT in L1 sends a transaction to his NFT collection contract to trigger its locking in L1 and its corresponding unlock (or minting) in L2. A detailed description of the proposed protocol can be found here.
With this simple protocol, we offer an easy way to migrate NFTs from L1 to L2 seamlessly. Many of you may be wondering, “but doesn’t this only tackle the communication between L1 and L2? What about the communication between different L2 solutions?”. You see that the protocol is symmetric from L1 to L2 and vice versa. Which means that as long as the other L2 solution is EVM-compatible, we could use this same baseline protocol based on the NFT collection and deposit contracts to perform the NFT migration between layers.
This design is quite straightforward, and one could probably come up with more complex primitives to improve it. But what I like about this NFT bridge design is that it has all of the building blocks to solve the fragmentation issue and build upon more complex use cases. The advantage of easy designs that involve the exchange of (potentially) assets worth thousands or even millions of dollars is that they are easier to update.
Is this the best we can get with NFT bridges? Probably not. Fortunately, there is a lot of literature out there (academic and non-academic) exploring the problem of blockchain interoperability. As I already mentioned, NFT fragmentation is just a subproblem, so if you want to follow this line of research, this is a good survey paper to get you started.
And its use cases
But what kind of use cases do NFT bridges unlock? Why would we want to migrate NFTs from one layer to another? In the near future, we can expect limited resources from the Internet to be represented with NFTs, like for instance domain names or identities. A user looking to own the domain name example.dapp to deploy his new decentralize service can mint a new NFT in a Layer 1 smart contract that provides a registry of available domains. This user can afford the cost and the wait of minting this in L1, but from there on, he doesn’t want to pay the gas cost of every single change to its domain name NFT metadata. Consequently, after minting it, he chooses to migrate his domain name NFT to an L2 solution.
In L2, he is able to handle the domain name’s day-to-day operation in a more affordable manner. The user will be able to upgrade where the domain name points, update its metadata, or even give admin rights to other users within L2 solutions without having to pay an exorbitant cost.
At one point, this user may choose to sell his domain name to another user for a handsome profit. The main contract of the decentralized domain service lives in L1, and in order not to limit himself to buyers in the L2 solution where he currently hosts and is operating his domain, he decides to migrate it back to L1 using an NFT bridge, making it available for the ownership transfer. After it is bought, the new user is able to operate his domain directly in L1, or as the original owner did, handle it within the L2 solution of his choice.
NFT bridges thus offer a way to seamlessly migrate assets between layers in an easier way than going through the existing process of migrating a resource within traditional cloud infrastructures (something we’ve all experienced). This level of interoperability unlocks a ton of new use cases where resources will be transferred between layers. In this way, a user comfortable with the enriched features of a Layer 2 solution like Metis will be able to buy some asset hosted on Polygon, and migrate it for its day-to-day operation to Metis. All while leveraging the level of decentralized trust and security of a strong Layer 1 network like Ethereum.
Towards an interoperable ecosystem
One of the big promises of blockchain systems is the removal of all of those data silos that we currently have on the Internet. When one talks about the Cloud, it may seem as if it was a single entity holding all our data on the Internet. But this is far from the truth. The Internet is full of data silos kept hostage by companies. We need to prevent this from happening to our assets in the blockchain space. NFT bridges and other interoperability efforts are already paving the way towards the “blockchain without silos” that we all want and need.