-
-
Notifications
You must be signed in to change notification settings - Fork 56
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
💥 ERC-2981
(NFT Royalty Standard) Implementation
#120
Comments
I believe that the value add is massive. The ways that NFTs can be designed and use cases drastically changes when you can customize royalty receivers, but it needs to be universally adopted to be viable. I am working on an ERC-1155 contract where anyone can be an NFT creator and then earn royalties from their creations. With opensea this is not possible without an insurmountable amount of off-chain work to manage creators and sales on opensea. It also requires that creators trust the contract owner to pay them, which completely goes against the purpose of trustless smart contracts. Creators should only have a trust relationship with marketplaces to pay royalties, not contract owners. This has many business applications, my above example could be for any type of project. Where their is a single contract with hundreds or thousands of creators using it. This allows for the development of potentially massive specialized platforms built on-top of NFTs. The division of creators and contract owners is the next step to make the NFT ecosystem grow. The average creator doesn't have the time, knowledge, or money to get a custom contract designed. They need the tech side to provide smart contract platforms that they can easily use with very little knowledge. |
I would even go further - the entire beauty of smart contracts should be trustlessness. Thus nobody should trust anyone by design. If it's not possible to enforce that trustlessness in the code, either the code or the standard interface is the bug and not the feature imo. My issue is that I don't want to have dead code inside 🐍 snekmate's ERC721 contract. Also, we want max composability and smart contract creators might want other future standards to be implemented. What I could think of is the following: We create a directory |
In my opinion ERC2981 was definitely a step in the right direction and it has also found decent adoption by some of the largest marketplaces. At the same time it also falls short in certain critical areas. As @pcaversaccio mentioned it’s only a standard for royalty signalling and as such it doesn’t actually enforce anything. It’s up to the marketplaces to support royalty payouts or not. On OpenSea the situation is even more complicated as signalled royalties are only enforced if a contract also implements the blacklisting of zero-fee marketplaces that do not respect creator royalties. Furthermore, the deliberately simple design of ERC-2981 only allows you to define a single recipient. This limitation has prompted players like Manifold to introduce their own solutions that enable creators to split royalties between multiple recipients. I generally think that the current solution as presented by ERC2981 is just not complete and future-proof enough to warrant an integration into the core ERC721 contract. I think providing a reference implementation for creators that want to deliberately adopt ERC2981 would be a great compromise in this case. |
@schuma7 Its pretty easy to add a PaymentSplitter to 2981 to allow multiple recipients. I agree it shouldn't be in the core ERC721 contract though. Developers need the choice to implement it, but marketplaces should abide by it. @pcaversaccio I wouldn't be concerned about ERC2981 being dead code, there are many marketplaces that do implement it already such as Rarible. Since you can't control which marketplace a user will use it is a good net to catch those that do support it. My plan is to implement it and set the royalties for 2981 at 5% and all other unsupported marketplaces at 10% in an attempt to dissuade selling on marketplace like opensea. On top of that I plan to use the non-2981 compliant royalties to fund a DAO since it would be a royal pain to try to distribute the royalties to the correct creators. The entire intention of my plan is to make owners and creators dislike marketplaces that don't integrate EIP-2981 and put pressure on them to do so. |
When I referred to dead code, I meant that being part of my ERC721 contract it's most probably going to be dead code. Vyper doesn't allow for inheritance and will allow for library modules (most probably) starting with Vyper |
Consider a scenario where renowned street artist Banksy decides to release an NFT collection on a marketplace that supports royalty payments. However, platforms like OpenSea, which are currently not enforcing royalties (even though they did a few months ago when testing this ERC721 experiment!), will be unable to facilitate the buying/selling of these NFTs. This is due to the integrated royalty enforcement mechanism in the ERC721 contract of Banksy's NFTs, making royalty payments mandatory. One might speculate if OpenSea would risk missing out on the trading volume of such high-profile collections due to their non-compliance with royalty payments. The answer, in my opinion, highlights the importance of taking a stand to push marketplaces towards respecting artist royalties. As artists and developers, while we're yet to claim victory in enforcing royalty payments across all marketplaces, one proactive step could be the creation of a Working alongside @fubuloubu, we're in the process of integrating these royalty functionalities into the contracts. We aim to build a trustless system that doesn't rely solely on the goodwill of marketplaces to apply a suggested 10% royalty, but rather enforces it on a contractual level. This represents a significant step towards a more equitable NFT ecosystem, where artists' rights to residual earnings are universally recognized and respected. A current summary of progress made so far:
These features collectively ensure that the contract enforces the payment of royalties on each transaction and that this royalty amount adapts to the transaction history of the contract, providing a form of floor price oracle. I´m sure there are many things not taken into account of that could be more of a bug than a feature. Will love to hear your thoughts and collaborate together. |
@victor-ego thanks for sharing this information. I think what you outline is a nice approach; some feedback:
So coming back to the initial topic of this issue: I will release 🐍 snekmate |
@pcaversaccio , I appreciate your insightful feedback and suggestions on our royalty implementation approach.
As for 🐍 snekmate Lastly, I would be absolutely thrilled to collaborate with you on this contract! Let's work together to create a robust, equitable, and universally accepted royalty standard for the NFT ecosystem. 🫡 |
100%
Awesome :-D - will reach out on Discord for the next steps. Anyone is invited to continue to share his/her/their thoughts about what can improved wrt on-chain royalties! |
FYI, I just released 🐍 snekmate |
ERC-2981
(NFT Royalty Standard) Implementation
@victor-ego proposes to implement
ERC-2981
(NFT royalty standard) for 🐍 snekmate'sERC721
contract.This issue is opened to gather the discussion around whether such an implementation is of a value-add.
Personally, I have the following view:
Let me know your thoughts.
The text was updated successfully, but these errors were encountered: