Mirror's introduction of Writing NFTs marked a significant shift in how we approach user experience for content creators in the blockchain space. We were keen to ensure the publishing process was streamlined and accessible to as many creators as possible. To achieve this, we devised a system that removed the need for creators to submit a transaction to generate their NFTs. Instead, we required them to provide a signature of the NFT parameters. When the first NFT was bought, the collector would deploy and collect the token in a single transaction.
Since creating Writing NFTs offloaded the cost of deploying the NFT contract to the collector, we aimed to reduce the gas costs associated with collections as much as possible. After many iterations and experiments, we built the feature on L2. Choosing Optimism was not a decision we took lightly, but ultimately believed they had the best alignment with Ethereum, and we are excited to see others follow the same path recently. Optimism first used the Writing NFTs feature with their introduction of the Optimism Collective on April 2022:
The adoption of this feature design served multiple purposes. Firstly, it removed the need for the creator to hold any ETH in their wallet for deploying Writing NFTs on Mirror. Secondly, creators can price their NFTs, and their deployment does not require ETH; hence this feature serves as an onboarding mechanism since creators can earn ETH on Optimism through their writing and creativity alone. It is very important for creators to be able to create and earn without having to spend ETH, while maintaining ownership of the assets they create and identity onchain.
As the feature gained usage, we encountered a challenge with this approach. NFT data indexing platforms attributed the first collector of the NFT as the "creator," because they deployed the NFT contract. This became an issue for creator recognition and proper attribution. Furthermore, we found similar problems with smart contract wallets like Gnosis Safe, where all transactions must be initiated from a separate account. Thus, these wallets could not be specified as the creator of an NFT.
An example of this issue is the following NFT, even though I wrote and created this Writing NFT, platforms like OpenSea show Rafa (see description) as the creator:
At Mirror, we’ve always believed onchain identity to be a key feature of blockchain technology. We make signatures available for verification for all published content through Arweave, a core component of the platform. The issue described above, where platforms misattribute the Writing NFTs creator, is something we believe hinders the adoption of better UX for creators since it makes it difficult to continue building onchain identity.
To rectify the problem, we proposed ERC-7015, a standard for NFT Creator Attribution. Drawing inspiration from our initial implementation of Writing NFTs, this standard generalizes to support any new ERC-721. ERC-7015 allows wallets, whether Externally Owned Accounts (EOAs) or Smart Contract Wallets, to provide a signature that attests to them being the creators of an NFT. When the NFT contract is deployed, this signature is validated and emitted as an onchain event. This means that anyone can deploy NFTs while ensuring the correct creator is acknowledged. This acknowledgment can be cryptographically verified, establishing a reliable and transparent system for creator attribution.
As we gear up to move our proposal from draft to final state, we're eager to hear your thoughts on this issue, particularly regarding how we might refine our approach to improve the NFT creator experience. Your feedback will be invaluable as we ensure our standards and protocols best serve the Ethereum creator community. Please share your insights, suggestions, and any potential challenges you foresee with this standard on the Ethereum Magicians discussion forum.
For platforms looking to adopt the standard, whether you’re creating NFTs, or want to correctly attribute NFT creators as they build their onchain identities, feel free to reach out if you need help.