ERC-6551

The making of abstract NFTs.


2023-08-21

A stubborn pattern of history is the naming of inventions after a historical detail rather than something useful, like what the invention is supposed to achieve. If mathematicians managed to give theorems useful names instead of naming them after their inventors, mathematics would seem a lot more approachable. But the trend is persistent, apparently. Ethereum’s London upgrade got its name because many of the developers were in London and ERC-6551 because it happened to come out of “Ethereum Request for Comments” number 6551.

The name of ERC-6551 doesn’t say much about its usefulness, but I believe it’s a useful invention. ERC-6551 is a standard that gives Ethereum NFTs wallet functionality. An NFT, a unique or scarce onchain object, can therefore own other NFTs. But ownership in itself is not as important as the consequence that it enables NFTs to represent particular concepts, such as objects consisting of other objects, more accurately.

For instance, you might have an in-game character that is an NFT. (Since that character is an NFT, game developers can use it in games with confidence that it will remain permanently available; no outside organization can cut access to the character if they believe it’s a threat to their business.) Let’s say the character has a backpack. You can fill your character’s backpack with stuff. That should have several consequences: You can no longer give the backpack away without figuring out what to do with the stuff. And you cannot give the character away without figuring out what to do with the backpack. Anything inside the backpack, however, you can give away with no issue. So there is a difference in logic between the character, the backpack and its content. With ERC-6551, the stuff inside the backpack can be owned by the backpack and the backpack by the character, which would account for this difference.

Another consequence of filling the backpack is that it looks different since a full backpack should look different from an empty one. A static image of the backpack would not accurately show its current state. Instead, the image must be generated based on the current state of the backpack. This could happen onchain through a contract that uses the backpack and its content, or offchain, like in a game environment.

This might sound obscure. To many, the concept of NFTs is cloudy to begin with and this doesn’t make it any more tangible. In fact, a consequence of ERC-6551 is that it pushes NFTs toward being more abstract. When many think of an NFT, what pops up is an image stored onchain (of a monkey, to be precise). But only some NFTs will be like this. A different use case is NFTs that are not simply stored images, but abstract information that represents information like structure, organization, logic, hierarchy and rights. What a particular NFT represents changes over time, not because the data inside the NFT has changed, but because there is some change of structure through change in ownership.

The NFT itself goes from being a static image to an abstract object, which changes via transaction to its wallet. Because of that, an up-to-date representation of it must be generated. We get NFTs that can change while still immutable, with representations that are generated rather than stored. There might be generators that output an image, a video representation or a playable character from that same NFT. Some NFTs, such as those that store a work of art, will remain similar to what they are today because the goal is to preserve a particular work of art. But for other NFTs, much will be stripped away, making NFTs only an abstraction.