When musicians mint music NFTs, what type of relationship do they have with their smart contract? (creator: smart contract)
1:N - Album
1:1 - Artist
N:1 - Platform
N:1 - Platform
there is one, shared, smart contract for all music on the platform.
upgradeable.
example: Mint Songs (OpenSea).
1:1 - Artist
each smart contract represents an artist.
multiple projects on one contract.
example: Sound.xyz (Iman Europe, Pussy Riot, Daniel Allen).
1:N - Album
each smart contract represents an album, EP, or single.
pre-defined at contract creation.
example: Zora Drops (glassface.eth), Glass.xyz (CharlieCrown.eth).
NFT Factory
Onboarding the next 1 million web3 musicians requires easy-to-use UI for creators to deploy smart contracts for all 3 options. Free to use, at gas cost. Platforms (option #1) does not need to consider a factory because all NFTs use one, shared, smart contract. Artists / Albums need a permissionless NFT Factory for musicians to create new Album / Artist NFTs. Ethereum must be supported, as well as having networks for experimentation such as Polygon Mainnet, Sepolia testnet, Goerli testnet & Mumbai testnet.
Deployment Pattern - Proxy vs Standard
Transactions on Ethereum Mainnet are expensive. Deployment of large, feature-rich, smart contracts is expensive. Proxy contracts are less expensive to deploy. “Proxy contracts” are a pattern of deploying a, smaller, “proxy contract” to save state and interact with the, feature-rich, “implementation contract” while being controlled by the “proxy admin contract”.
For musicians using Zora Drops or Manifold, you don’t actually own the logic contract. You own a “proxy” that’s interacting with the core Zora / Manifold implementations. Maybe this is sufficient. However, proxies make me ask questions:
who controls the “proxy admin” contract?
how can the “implementation contract” change over time?
what would the gas cost be if I just deployed the base contract myself? without a proxy?
The alternative to proxies is to just deploy your own, non-upgradeable, copy of the base contract. I don’t know any easy examples of this today. That’s what I’ll be building today. If you know any examples of permissionless NFT factories that deploy a non-upgradeable contract let me know on Twitter or lens.
Why I choose to lean away from Proxy here.
Simple is best.
I want to build this codebase as simple as possible. If someone wants to take this and add Proxy deployment to save gas. Feel free. This code should be very easy to tweak to leverage the proxy pattern. Myself, I see creating simple, verified, contracts on Polygon, Arbitrum & other L2 scaling ecosystems are the future for the creator economy.
What we’re building today
NFT Factory -
createAlbum.
RaibowKit - make web3 fun.
indexer (optional) - I don’t think I’ll get here today.
Lens Protocol - something I’m thinking more about.