弄清楚如何通过延迟发布、元数据未在 opensea 上验证来铸造 NFT

Posted

技术标签:

【中文标题】弄清楚如何通过延迟发布、元数据未在 opensea 上验证来铸造 NFT【英文标题】:Figuring out how to mint NFT with delayed release, metadata not validating on opensea 【发布时间】:2021-09-08 02:14:03 【问题描述】:

我有一个在 rinkeby 上工作的智能合约,它正在铸造 ERC721 代币。目标是允许铸币一周,然后在一周后发布元数据和图像。

当我部署它时,我使用 https://gateway.pinata.cloud/ipfs/ 作为我提供给合约的 baseUri。

接下来,我模拟延迟的元数据/图像发布:

生成令牌后,我运行 curl POST 将图像添加到 IPFS 并获取其哈希值。

然后我通过 UI 手动将图像固定到 pinata 并创建元数据 使用固定的图像 uri。

元数据中的图片链接在我的浏览器中解析。

接下来,我运行第二个 curl POST 以将 JSON 元数据添加到 IPFS。

我通过 UI 手动将元数据固定到 pinata: https://gateway.pinata.cloud/ipfs/Qmf43nycxRXdwdq3GqT7SKU3MvRyBvbpjzufzZR8ASkMGb

此时,Opensea 没有显示图像,其元数据也无法显示 证实: https://testnets.opensea.io/assets/0x1b566f6946feeb73e178c63a2992c2365c6cd55f/0 - https://rinkeby-api.opensea.io/asset/0x1b566f6946feeb73e178c63a2992c2365c6cd55f/0/validate/

image_url 元数据属性验证失败,因为 ipfs 链接使用哈希,而 im 使用整数令牌值。我无法弄清楚如何弥补这一差距,因为哈希是在合同之外生成的,而且看起来合同是在元数据中生成此链接的原因。

任何人都可以照亮我的困境吗?谢谢! :D

【问题讨论】:

我很接近...需要为每个铸造令牌运行 OppenZeppelin _setTokenURI 以完成此操作... 【参考方案1】:

答案在于需要在启动前使用 IPFS 中的文件夹哈希构造元数据,然后 setBaseURI!

【讨论】:

我做的和你一模一样。您能否详细说明文件夹哈希和您的解决方案? 当然!基本上你只需要一个返回你的元数据的 API:ex - api.com/1 将返回令牌 1 的元数据。一旦你有了它,在你的合同中使用 setBaseURI 方法作为你的 api 的地址,并带有一个斜杠 - api.com如果您使用 IPFS,则同样的故事 - 您必须将所有元数据放在一个文件夹中并一次全部上传,这使得 FOLDER 拥有自己的唯一地址。 ipfs.io/ipfs/bafybeigpbly.../0 ipfs.io/ipfs/bafybeigpbly.../1 ipfs.io/ipfs/bafybeigpbly.../2 注意文件夹是一样的。 上述评论中的 https 已从链接中删除 setbaseuri 必须这样填充:h t t p s : // api.com/ 感谢您提供此信息!但在这种情况下,用户可能会意识到你的模式并在揭示之前嗅出所有元数据?

以上是关于弄清楚如何通过延迟发布、元数据未在 opensea 上验证来铸造 NFT的主要内容,如果未能解决你的问题,请参考以下文章

通过 JS API 在 OpenSea 上列出 NFT:无法提取 transfer calldata 错误 400

直播音频获取元数据

合约未在 opensea 主网上收听,但在 metamask 中显示 NFT 并在测试网上工作

扭曲的延迟/回调和异步执行

OpenSea使用XFS存储NFT

OpenSea API文档中文版