0

所以我的朋友们正在制作 NFT 合约并使用 IPFS 来存储元数据。我想查看生成的 IPFS 链接中包含的 JSON,以便可以在 Bootstrap 卡中显示元数据。当我使用此代码调用浮出水面的合约函数之一时:

const tokenContract = new ethers.Contract(nftaddress, NFT.abi, provider);
const nft = await tokenContract.tokenURI(1);
console.log("nft:", nft);

我得到了这个输出,所以我可以看到合约中的函数调用有效:

nft: ipfs://Qmchgm5...GLnGMk

但是当我尝试将该 IPFS 链接转换为 JSON 格式时(正如我在访问链接 URL 时看到的那样),这不起作用并引发此错误:

console.log('nft:', nft.json());
// TypeError: nft.json is not a function

有人可以解释为什么将链接放入我的浏览器可以显示 JSON,但尝试从链接中读取它却不能?我认为这是 IPFS 的一些基本功能,但我找不到任何东西(这对我来说很有意义,完全是新手)告诉我这个功能以及如何在我的代码中读取 IPFS 对象。

先感谢您!-哲学水獭

4

1 回答 1

1

IPDS CID 不是一个对象,而是对存储在 IPFS 网络上的资产的引用,例如,如果 IPFS 哈希是: bafybeidyp5tc6vfjsis7rziok4o6j6ckjajpug4wceavcyujm6bsiqqk4m 您可以使用 Dweb 之类的 IPFS 网关访问它,因此您可以执行以下操作: https://bafybeidyp5tc6vfjsis7rziok4o6j6ckjajpug4wceavcyujm6bsiqqk4m.ipfs.dweb.link/ 因此您可以获得像这样的JSON:

const data = await fetch("https://bafybeidyp5tc6vfjsis7rziok4o6j6ckjajpug4wceavcyujm6bsiqqk4m.ipfs.dweb.link/")
const json = await data.json()
console.log(json)

你也应该阅读这个

于 2021-12-21T06:03:04.060 回答