Extending features for individual NFTs

Hey! I’ve just had a chat with a lead dev from an NFT-based project, and they shared an interesting pattern they are exploring for extending features for non-fungible tokens. I wanted to share it here so we can discuss about it, and loop everyone interested into the conversation.

The goal is to allow owners to extend their individual NFTs with additional features (mostly related to exploring new monetization strategies in this project’s use case). Note that it’s not the contract itself that can be extended, but each individual NFT instance, so upgradeability of the 721 contract doesn’t work for this.

They are solving this problem with a neat addition: each NFT has, in addition to their owner, a collection of additional owners. These additional owners have the same rights as the owner (meaning they are more powerful than an operator from a regular approval), and are appointed to contracts that extend the NFT with extra features.

This allows devs to code and deploy small contracts that acts as plugins, and then each NFT owner can decide to enable any of those plugins for their NFT by just appointing them as an additional owner.

I’m curious: what do you think of this pattern? Does it make sense to have something more powerful than an operator, but less than an owner?

What are examples of additional features someone would add? I feel like it makes more sense to extend operators so that they fit the requirements, rather than extending the notion of ownership.

Hey hey we’re the team behind the extendable NFT’s. Earlier this year we were in the NFT standards group! Long-story short it’s hard to come to consensus for NFT’s because smaller projects often want to extend the functionality of a single NFT to support novel monetization frameworks. We’re trying to find a clean programming pattern for adding extensions to the NFT. Open to any patterns (extending operators for instance). @spalladino mentioned gnosis safe modules as an interesting implementation.

Would love to open this up for community discussion and then potentially open an EIP if there is interest from the collective!

1 Like

It would be great if you could give concrete examples that would help guide the design of the feature.