Erc-721

NFT Opensea 元數據格式不正確?

  • January 22, 2022

我在這裡部署了一個 NFT 集合,並使用以下程式碼設置了 ERC721 合約的 tokenURI。

var tokenURI = await bento_collection.tokenURI(1, {from: accounts[1]});
console.log("Token URI is " + tokenURI);

對於令牌 #1,程式碼的輸出是:

Token URI is http://sushibento.club/sushis/1

此 URL 指向元數據,應由 Opensea 獲取。如果您在瀏覽器中訪問 URL,您可以看到 URL 給出了有效的 JSON:

{"name":"Sushi #1", "description":"Fresh Sushi Bento Club Sushi Character #1. The owner of this asset also owns the full commercial rights of the image itself and the original rights in the metaverse.", "image":"https://sushibento.club/assets/img/egg.png", "external_url":"https://sushibento.club/assets/img/egg.png", "attributes":[{"trait_type":"Sushi Type","value":"Unhatched Sushi Egg"}]}

但是,opensea 並沒有獲取元數據。我看不是因為在Opensea網站上,佔位符圖片還在,沒有顯示NFT屬性。在過去的幾個小時裡,我已經通過他們的網站刷新了幾次元數據,但還沒有奏效。

我無法使用他們的元數據驗證器檢查元數據,因為它不支持多邊形鏈(不知道為什麼)。為什麼我的元數據沒有被 opensea 接收?或者它有什麼問題。

有時 OpenSea 甚至可能需要幾個小時來刷新元數據。您可以嘗試的幾件事 -

  1. 將其上傳到 Ethereum Rinkeby 測試網,您可以在其中使用 API 檢查您的元數據是否有效。
  2. 您是否在 OpenSea 上按了項目上的“刷新元數據”按鈕?
  3. 我會嘗試將 URI 放在 HTTPS 而不是 HTTP 中作為健全性檢查
  4. 等待更多時間讓 OpenSea 更新:\

原來是標題問題。

我將內容作為 HTML 提供,但我需要Content-Type: application/json; charset=utf-8. 這是伺服器正確發送元數據所需的標頭。

由於某種原因,他們的文件中沒有提到這一點。我正在使用 PHP,所以以下行為我解決了這個問題。

header('Content-Type: application/json; charset=utf-8');

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