Solidity
在 IPFS 上為不確定數量的 NFT 儲存元數據的最佳實踐?
我正在製定一份允許無限鑄造 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())) : ""; }