Erc-721
如何在鑄造期間使用佔位符圖像,然後在鑄造後僅使用實際 URI 更新元數據?
按照標題。我希望能夠為我的 NFT 提供一個佔位符圖像,如下所示:
https://opensea.io/collection/thealcabones
隨後,在啟動後,我會更新元數據。
如何使用 Pinata / IPFS 執行此操作?我需要在我的智能合約中編寫一個特定的函式來允許這個嗎?
您需要在智能合約的開頭聲明一個空變數:
string newURI
然後你需要創建一個函式來控制URI,這個函式以一個叫_newURI的變數為參數,這是pinata的CID。
// Modify URI with this function function setURI(string calldata _newURI) public onlyOwner{ newURI = _newURI; } // Base URI function, this won't be callable, you will use the above // function instead to invoke this one function _baseURI() internal view override returns (string memory) { return newURI; }
如您所見,_baseURI() 函式返回文件的 URI,而 setURI() 函式將覆蓋 newURI 變數(即 _baseURI 返回的變數)
當你部署你的智能合約時,你需要使用佔位符圖像設置 pinata 的 CID,並且每當你想要顯示它們時,你只需要使用更新的 CID 呼叫 setURI()。
@alex 的答案的替代方案(不建議,但為了完成)是創建一個 IPNS 列表。IPFS 使用內容定址,所以當內容髮生變化時,地址也會發生變化。對於您可能需要具有可更新內容的契約地址的地方,IPNS 充當命名方案,您可以在其中更新它指向的 IPFS 內容。內容可以通過 訪問
/ipns/<ipns_hash>
。但是,我不確定哪些 NFT 市場支持它。您可以在此處閱讀有關 IPNS的更多資訊。