繁体   English   中英

ERC721 NFT 未在 opensea 中显示(与元数据相关)

[英]ERC721 NFT not showing in opensea (related to the metadata)

我正在创建 DApp 并成功使用 IPFS (pinata) 和 Nethereum (C#) 在 Rinkeby 中铸造 NFT。

现在,我可以在 ERC721URIStorage.sol 中使用 tokenURI function 获取 TokenURI,例如ipfs://QmRH9pTTADs3BCqMLqXEAMP83FoaeMD8CUkNgtxZ5HKTLq

以下是有关相同 NFT 的元数据的链接。 https://ipfs.io/ipfs/QmRH9pTTADs3BCqMLqXEAMP83FoaeMD8CUkNgtxZ5HKTLq

但是,在 opensea 测试网中,我看不到有关我的 NFT 的信息。 (我可以看到我的 NFT,但是没有图像、名称、描述等..)

为了解决这个问题,我在https://testnets-api.opensea.io/asset/0x1770A249C9743F1493C55fE505BC17beAB772cD5/4/validate/中检查了我的合同是否有效。 有一些错误:“AttributeError: 'str' object has no attribute 'get'”,但我不知道它是什么..

即使我可以得到 TokenURI,为什么没有 opensea? 在这个文档( https://docs.opensea.io/docs/metadata-standards )中,他们说如果我想使用 IPFS 来托管我的元数据,URL 应该采用 ipfs:// 格式(如ipfs://QmRH9pTTADs3BCqMLqXEAMP83FoaeMD8CUkNgtxZ5HKTLq 。)我跟着那个,但它不起作用。

哦,我发现我ipfs中的json不是json,因为是用""包围的。

这意味着 opensea 将无法从我的元数据中获取某些内容,因为它是字符串。

我使用了另一个示例元数据( https://ipfs.io/ipfs/bafybeibnsoufr2renqzsh347nrx54wcubt5lgkeivez63xvivplfwhtpym/metadata.json ),它不是我的,而且效果很好!

因此,我必须修复将元数据上传到 ipfs 的代码。

我还没有完全解决问题,但是我找到了原因,所以我将退出这个问题。 解决这个问题后,我会再次发布。

只需将其放入智能合约 tada 即可解决



function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        _requireMinted(tokenId);

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, Strings.toString(tokenId),".json")) : "";
    }```

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM