函数contractURI()何时在OpenSea NFT合同中生效?
function contractURI() public view returns (string memory) {
return "https://metadata-url.com/my-metadata";
}它是否只在NFT合同第一次加载到Opensea时才生效?或者可以使ContractURI在部署后更改契约元数据?部署之后,我尝试将其更改为
function setContractURI(string memory _contractURI) public onlyOwner {
contractURI = string(
abi.encodePacked(_contractURI, contractMetadataFilename)
);
}但是在我设置了一个新的ContractURI之后,Opensea没有改变任何事情。
发布于 2022-03-30 06:45:18
我发现问题出在哪里了。这是一个常见的问题,并不是上述问题所特有的。但共同问题的解决也解决了上述问题。
我在开源生物示例( ProxyRegistryAddress )中使用了在2_deploy_contracts.js中编码的2_deploy_contracts.js。这是在2022年1月。地址为0xf57b2c51ded3a29e6891ab85459d600256cf317 f或Rinkeby
现在我试着使用2022年3月部署的工厂合同。我得到了错误
无法获得批准这些代币进行交易的许可。他们的合同可能没有得到正确的执行。请与开发者联系!
我再次检查了上面提到的存储库中的ProxyRegistryAddress中的2_deploy_contract.js中的Rinkeby。同时改为0x1E525EEAF261cA41b809884CBDE9DD9E1619573A。
我在OpenSea中找不到任何文档,其中记录了给定环境(如Rinkeby )的当前ProxyRegistryAddress。
在这一经历之后,我认为为ProxyRegistryAddress编写一个setter代码是一个好主意,以便能够在部署合同后更改地址。
使用正确的proxyRegistryAddress后,已经部署的契约的contractURI的更改将反映在OpenSea中。
https://stackoverflow.com/questions/71554693
复制相似问题