limitbreakinc / creator-token-contracts

MIT License
109 stars 26 forks source link

Discussion and Inquiry About ERC-721C Immutable Royalties Enforcement #7

Open denizhankara opened 1 year ago

denizhankara commented 1 year ago

I am seeking clarification and assistance regarding the ERC-721C contract, specifically concerning immutable on-chain royalties across various platforms, including OpenSea (OS). I have encountered an issue where the royalties, intended to be immutable, can still be bypassed during secondary sales on OS.

Here's a brief overview of my implementation:

  1. I utilized your ERC-721C contract from the following repository: https://github.com/limitbreakinc/creator-token-contracts/blob/main/contracts/erc721c/ERC721C.sol

  2. My implementation followed the guidelines provided in your example for Immutable royalties: https://github.com/limitbreakinc/creator-token-contracts/blob/main/contracts/examples/erc721c/ERC721CWithImmutableMinterRoyalties.sol

  3. Despite adhering to the guidelines, I observed that the royalties could be altered by secondary sellers on OpenSea, allowing them to bypass the originally set royalties during the sale process.

For a more detailed context, I have deployed a contract on the ETH Sepolia testnet; here is the contract address for your reference: 0x009106272e00EBF0D1fC8D84E81509FdEFA98519

Given these circumstances, I have two primary questions:

  1. Could there be any discrepancies or errors during my deployment process aligning with the instructions provided in your repository? If so, I would appreciate any insights or corrective measures.

  2. Is the ERC-721C inherently designed to enforce immutable royalties on platforms like OpenSea, or might I have overlooked additional steps to guarantee these royalties' immutability on OS specifically? I understand that OS handles NFT sales differently, directly transferring NFTs from seller wallets and processing funds through SeaPort, enabling the bypassing of royalties. Understanding the nuances of royalties on ERC-721C is very important for our royalties requirements, and I believe your insights as the developer will be incredibly beneficial. I appreciate any information, suggestions, or guidance you can provide on these matters.

Understanding the nuances of royalties on ERC-721C is very important for different royalty requirements, and I believe your insights as the developers will be incredibly beneficial. I appreciate any information, suggestions, or guidance you can provide on these matters.

0xboga commented 1 year ago

As far as I know OS do not adhere to EIP-2981 as their royalty implementation. You may look to something like Rarible. I've tested the ERC-721C implementation there and it seems to be working.

denizhankara commented 1 year ago

Yes, ERC-721C implementation in Rarible is working and distributing royalties.

However, I can take an ERC-721C NFT (that enforces royalties on Rarible) to OpenSea and bypass the royalties by essentially being able to pay 0 royalties during a secondary sale since they do not adhere to the royalty standard. Then, what is the point of having royalties with ERC-721C? The royalties will not be enforced on all platforms, making their on-chain property obsolete.

At least it should not be possible to sell these NFTs on OpenSea with 0% royalties. Are you aware of such a mechanism for ERC-721C contracts?

0xboga commented 1 year ago

One option could be just to blacklist in ur contract the routers that do not support 2981 if u want enforcement in contract level. Otherwise, afaik there's no method to enforce royalties for every platform. Trades can still occur through swaps or OTC. So, if someone really wants to bypass the royalty they can do it.