A few of you may know me from a few hashmask tribes(mainly the voyager hashmask tribe(pay attention!)) or a few defi dev servers.
But I’m bringing it here because I think NFTX has become a bit of a focal point for the NFT space in general, and especially relevant for collections of NFTs. And the community seems active!
This is something I could(and would love to) do if it is a good idea, but here mostly to start the discussion.
It is hard today to agree on what a collection is on the NFT space unless it’s explicitly defined on the NFT metadata, has been determined as such by the market, or is in some index (like an NFTX specific trait fund).
This is I think a problem for several applications, and from the whole stack(from frontends trying to group NFTs) to automating NFT for NFT swaps(for instance saying something like "I would only trade my voyager mask for an alien punk), or even basic inclusion/exclusion features like just allowing alien punks into a server without ad hoc solutions for the particular NFT.
So there is no way that I know of to trustlessly agree on
new and arbitrary collections of NFTs at the smart contract level. So for example, no way to trustlessly agree(even if the agreement is incomplete) on an alien punks, voyager or green dot mask collections, or if the NFT owners approve of their NFTs being part of said collection.
I think I have a simple but working solution for collections of NFTs that can be enumerated, compliant or not with the NFT with the ERC721 enumerable extension, like punks or hashmasks.
And potentially more complicated “key” sets(via more general interfaces). The main idea though is that the collection primitive would just be 3 components: the NFT contract that the collection is of, (say hashmasks if it is the voyager hashmask collection), the set of ids that the collection creator thinks are part of the collection(say the numbers
of the voyager hashmasks), and a set of the ids from the set that have been “verified” by the owners of the NFTs.
Anyone can set up a collection by giving a set of ids and calling the contract, but only the owner of the particular NFT can choose whether their NFT is a “verified” item of the collection(without giving up control of the NFT). Then, even if spammers create many alien
punk collections(punk id sets they say are aliens) it will be obvious which collection is the most socially agreed on by alien punk owners as their collections would fail to show many “verified by owner” punks.
If the NFTs can be enumerated then solutions like EnumerableSets, from OpenZeppelin which are very cheap/fast for adding, removing, and checking for existence in O(1)
can be used, and this would be super cheap even on Ethereum L1, especially for the NFT owners at the detriment of the collection creators.