Background on Metamorphosis
Yesterday, March 29, 2022, Pak dropped his latest collection, “Ash Chapter 2: Metamorphosis”. It is a collaboration with 29 other NFT artists and features a very interesting “morph” mechanism where 4 NFTs can be burned to transform another NFT to tier 2 with different metadata and visuals. Pak has a large following (and produced the highest-grossing NFT drop of all time with “Merge”) as do many of the artists who participated in this collection and there was incredible excitement to mint NFTs from this collection (which sold for 50 ASH or around 1000 USD at the time of mint).
The result of this was a gas war that many people anticipated ahead of time. Gas rates spiked to 1000s of gwei, and due to issues causing poor gas estimation and an overall gas expensive mint many users ended up with “Out of gas” failed transactions that cost thousands of USD worth of ETH in gas.
Users were understandably upset after paying such high gas fees and in many cases not receiving the NFT. Pak and Manifold.xyz made some effort to blame issues on bots. And Pak made statements that trading on secondary markets was locked.
The Transfer Lock
In the case of Metamorphosis, it was determined that 6% of the supply was purchased by bots who could circumvent the 1 mint per transaction requirement. There were also metadata issues with the contract. Because of this, the decision was made to re-mint the collection and airdrop to the original collectors minus the bots with the original tokens being locked forever. How was this even possible though? Why were NFT holders not able to sell or transfer their NFTs?
safeTransferFrom
method in the Metamorphosis smart contract codeThis was made possible by overriding the standard safeTransferFrom
method from OpenZeppelin’s ERC-721 contract. As you can see in the code snippet above, there is an additional check for a variable called _transferLock
. This is a boolean lock that can be toggled by the contract admin. If this variable is set to true, NFT transfers are not allowed.
In the case of Metamorphosis, this lock was activated at contract initialization and then was never toggled off. It was not made clear to the community of people who were going to buy these tokens that this lock existed, and many people were surprised to realize that they could not sell these NFTs on OpenSea as a result.
Because of this transfer lock, Pak is able to issue a re-mint of this collection and ensure that no one can trade while that is prepared. It also prevents so-called “botters” from profiting by selling the NFTs that they were able to acquire as they are excluded from the re-mint.
Implications of Transfer Locks
In a sense, having this transferLock in place was protection against contract bugs (which were present in this case), and allows the creator to redo in such cases.
In a vacuum, this sounds nice and it is quite normal in the conventional software development world for there to be bugs followed by patches. Developers who put such methods in place might feel that rigorous testing is less required as there is always the possibility of a redo.
However, these transfer locks take away a fundamental property that makes NFTs special, censorship resistance and the freedom to transact. With a standard ERC-721 contract you can transfer a non-fungible token to whoever you want and no one can do anything about it. You can even send it to the Zero address — burning it and making sure that no one can interact with that NFT ever again. In this usual case, you don’t have to ask for permission from anyone, it is one of the rights that comes along with owning the NFT.
By adding a transferLock, creators take a step back from this freedom and the decentralized ethos of blockchain. Now as an owner of an NFT you have to be granted permission by a central authority in order to transact with what you purchased. As elegantly articulated by @punk6529 in a Twitter thread this is the most fundamental of all rights. There is no freedom of speech without the freedom to transact.
Centralized Systems on the Blockchain
The capabilities of smart contracts offer the flexibility for creators to arbitrarily blacklist users, change the ownership of a token, destroy any token, or create new tokens. If a creator wishes, they can create an entirely closed-loop system where you must transact exclusively on their marketplace as they take a fee and they retain the right to punish any user who breaks their rules by burning their token. Essentially, they could create a centralized marketplace similar to those for games like CS:GO or Fortnite.
What makes NFTs Special
The problem with all this is that it gets away from what makes NFTs special in the first place, that they are decentralized and that they can represent true unrestricted digital asset ownership. If someone purchases an NFT from a contract where there are no admin functions (or all admin rights have been renounced) and the metadata is located in permanent storage, then they can be confident that they can do whatever they want with that NFT and no centralized authority can change anything about it from under them.
This is also part of the reason that NFTs are valued so much higher than digital assets that are sold in closed-loop systems. The blockchain itself is censorship resistant which means that it is possible for assets transacted on it to also be. But due to the flexibility of smart contracts, creators can take this freedom away.
I would argue that if creators are going to maintain full control of every aspect of their NFTs even after mint, then there isn’t any reason for it to be on a blockchain. It might as well all be hosted on a centralized server that the creator controls. This gives them all the same control but removes the need to pay high gas fees to interact with the collection.
Conclusion
One of the fundamental aspects of blockchain that differentiates it from conventional databases is that there is no central authority. There has been a recent movement in the NFT space to grant contract admins enormous power over their collections including arbitrarily changing asset metadata, restricting free trade, and even in some cases burning tokens when owners take actions they don’t agree with.
Some of these powers (like changing metadata) are required for the artistic performance of the collection and make sense.
However, in general, creators should not maintain full flexibility to do whatever, whenever, in perpetuity, with the NFTs that they created. For NFTs to be true decentralized ownership of an asset, creators must relinquish control and let their collectors do as they please. Let’s keep freedom in the NFT world.