Open matthewpaul opened 1 year ago
Could you point me to where you're seeing that? I haven't seen that referenced in any of the documentation, nor do I see it in any of the source code provided by OpenSea
Sorry, my mistake. Got mixed into a different repo.
Hello, @matthewpaul .
In my tests, the "Refresh eligibility" button appeared on the collection edit pages of the smartcontracts, deployed on Ethereum (mainnet) and Goerli. And by pressing the button, i was able to enforce the fees.
On the other hand, the "Refresh eligibility" button did not appear on the edit pages of Mumbai and Fuji. And the fees are still optional.
This is despite all deploying the same code. I think the behavior of "Creator earnings" in ERC1155 seems to work differently depending on the chain that deployed the smart contract(Will OpenSea eventually fix this?).
If you are testing in Mumbai, are you planning to release a smartcontract in Polygon? You may want to test it on Polygon, although it will cost you actual gas(Matic).
I hope this helps.
Translated with www.DeepL.com/Translator (free version)
Is this fixed?
I applied code as same as you did in ERC1155 but it is not working even "Refresh eligibility" clicked. It seems there are several teams that facing same issues. I am using proxy contract to update my contract, so is there any special treats that needed for proxy too?
Here is my code too
` contract NFTHelper is ProxyStorage, NFTStorage, ERC1155, DefaultOperatorFilterer { constructor(string memory uri) ERC1155(uri)
function setApprovalForAll(address operator, bool approved) public override onlyAllowedOperatorApproval(operator) { super.setApprovalForAll(operator, approved); }
function safeTransferFrom(address from, address to, uint256 tokenId, uint256 amount, bytes memory data) public override onlyAllowedOperator(from) { super.safeTransferFrom(from, to, tokenId, amount, data); }
function safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) public virtual override onlyAllowedOperator(from) { super.safeBatchTransferFrom(from, to, ids, amounts, data); }
function supportsInterface(bytes4 interfaceId) public view virtual override(ERC1155) returns (bool) { return super.supportsInterface(interfaceId); }
`
@madorca At the end of last year there seemed to be various cases of it working and not working properly, but the collection we deployed to Ethereum(mainnet ) on 19,Jan 2023 is working fine.
When I look at your "supportsInterface" code, I don't find "ERC2981". Does your smart contract implement "EIP 2981"? OpenSea requires "EIP 2981 implementation" in the following tweet. https://twitter.com/opensea/status/1600913315576049669
Also, do you have "default royalty info" setup? For example, in our project we specify it in the constructor.
address constant private ROYALTY_ADDRESS = 0xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX;
uint96 constant private ROYALTY_FEE_NUMERATOR = 1000; // 1000/10000 = 10%
constructor() Ownable() ERC1155( "" ) {
_setDefaultRoyalty( ROYALTY_ADDRESS, ROYALTY_FEE_NUMERATOR );
// ....
Now the collection page on OpenSea successfully reflects the address and royalty percentage specified in "ERC2981".
Please refer to the following Issue for additional information. https://github.com/ProjectOpenSea/operator-filter-registry/issues/94 https://github.com/ProjectOpenSea/operator-filter-registry/issues/82
@KunihiroTakayanagi Oh... thank you for this feedback.I didn't include ERC2981 and will try again!
@KunihiroTakayanagi The problem was ERC2981. It fixed. Thanks!
Hello!
I've read through most of the existing issues, but can't quite figure out why my contract is being shown as optional for creator fees...
Chain: Polygon Testnet (Mumbai) Token Type: ERC1155
Here's my Smart Contract code:
Editing the contract on OpenSea shows the following:
I've seen some other people saying that they had to hit a refresh button, but I don't have access to a refresh button to run the check again. I've also minted a few NFTs from the contract, as it says in the documentation that the enforcement check is run whenever the first NFT is minted.
Any ideas as to why this isn't being enforced?
Thanks,
Matt