Solidity

在 IPFS 上為不確定數量的 NFT 儲存元數據的最佳實踐?

  • October 19, 2021

我正在製定一份允許無限鑄造 NFT 的契約(它們將用於辨識目的,不一定是收集)。ipfs://但由於 NFT 的數量以及相應的元數據文件的數量是不確定的,因此在啟動時將 URI 設置為單個地址似乎是不可能的。

我正在考慮的一些解決方案是:

  • 為 token => CID 創建一個映射,該映射作為鑄幣功能的一部分進行更新。客戶端邏輯將負責獲取和提供 CID。但是儲存所有這些字元串似乎很浪費。
  • 使用託管 IPFS 網關。現在很多 NFT 都這樣做了,但這似乎違背了首先使用 IPFS 的目的,因為如果它是我自己的網關,我可以更改指針。

有沒有人解決過這個問題?任何幫助表示讚賞。

您可以使用IPNS來獲得以 ID 結尾的動態 URI。通常在 NFT 合約中,tokenURI函式是這樣實現的:

function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
       require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

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

引用自:https://ethereum.stackexchange.com/questions/111818