I'm creating a platform where users can mint their own NFT collections, can you tell me the best way to do this? Do I create a contract just to store the collections and tokens, or whenever the user is going to create a collection, do I create a new ERC721 contract?
2 Answers
You can either 1) have a big @ss collection and keep all user collections and group them by user data or 2) you can make a mock contract and implement OpenZeppelin clones contract to make a new contract on users demand
if you were to keep all tokens within one colllection youre saving deployment costs for your users but all the tokens would be centralized in one collection and you'd have to find a way to split royalties
if you were to make a clones implementation, it will cost to the end user the gas for deployment
You can take a look at foundation.app, they did what you're trying to do but in two steps; When they started, they had a big @ss collection where they store all tokens from their end users; but now they offer to help users to deploy their own contract
The way i see it there are two main ways:
Create a simple ERC721 factory.A contract that will create other ERC721 contracts. All you'd have to do would be to have the users fill the constructor fields (such as name,symbol, and baseURI ) and making sure that the creator will be the owner of the newly created contract. -- The user would have to take care himself of metadata either on IPFS or a centralized server. --
Use ERC1155.You can then create a very big amount of fungible tokens or NFT. Only catch to that is that all collections will have to the same address.