EtherscanでNFTの画像が表示されない原因と直し方

EtherscanでNFTの画像が表示されない主な原因は、メタデータのJSON内のimageフィールドが正しいIPFSリンクを指していないか、利用しているIPFSゲートウェイが応答しないことにある。加えて、Etherscanが以前のキャッシュを保持している可能性もある。

なぜEtherscanでNFTの画像が表示されないのか

なぜEtherscanでNFTの画像が表示されないのか

メタデータJSONのimageフィールドが間違っている

NFTのメタデータは、コントラクトが返すJSONファイルの中に画像の位置を指定するimageフィールドを持つ。この値が無効なURLや古いIPFSハッシュを指していると、Etherscanは画像を取得できず、何も表示されなくなる。

IPFSゲートウェイにアクセスできない

IPFS(InterPlanetary File System、分散型ファイルシステム)上のファイルをブラウザで表示するには、HTTPゲートウェイと呼ばれる中継サーバーを経由する。代表的なipfs.ioゲートウェイが高負荷やネットワーク制限で応答を返さない場合、Etherscanからも画像が読み込めず、空白のままになる。

Etherscanのキャッシュが原因

Etherscanは一度読み取ったメタデータを一定期間キャッシュする。そのため、IPFS上のファイルを差し替えても、すぐには表示が切り替わらない。このキャッシュが残っていると、修正後の画像が反映されず、直っていないように見えることがある。

メタデータが正しいか確認する手順

メタデータが正しいか確認する手順

メタデータJSONを直接取得して確認する

まず、NFTのコントラクトアドレスとトークンIDからメタデータのURIを特定し、その内容をブラウザやcurlで直接開いてみる。返ってきたJSONの中身を確認し、imageフィールドが有効なIPFSリンクになっているかを見極める。

  • そのままブラウザでURLを開いてJSONが表示されるか
  • imageフィールドの値が ipfs://ハッシュhttps://ゲートウェイ/ipfs/ハッシュ の形になっているか
  • 該当のIPFSハッシュをゲートウェイ経由で開いて画像が表示されるか

正しいIPFS URLの書式

メタデータに記述する画像の位置は、次のいずれかの形式が安全だ。

ipfs://QmHashExample12345/example.png
https://ipfs.io/ipfs/QmHashExample12345/example.png

上記のように、ipfs://プロトコルを直接使うか、パブリックゲートウェイを明示する。URIの末尾に拡張子が付いていないと、ブラウザやEtherscanが画像として認識しないことがあるため、アップロードしたファイル名まで含めておく。

IPFSゲートウェイを切り替えてテストする

IPFSゲートウェイを切り替えてテストする

ipfs.ioが応答しないときは、他のパブリックゲートウェイを使って同じハッシュにアクセスできるか試す。もし別のゲートウェイで画像が表示されるなら、問題は元のゲートウェイ側にある。

代表的なIPFSパブリックゲートウェイ一覧

  • https://cloudflare-ipfs.com/ipfs/
  • https://gateway.pinata.cloud/ipfs/
  • https://dweb.link/ipfs/
  • https://nftstorage.link/ipfs/

これらを試しても画像が表示されない場合、ハッシュ自体が無効か、ピン留めされておらずネットワーク上から消えている可能性が高い。

Etherscan側の表示を更新させる方法

Etherscan側の表示を更新させる方法

メタデータを修正した後にEtherscanを更新するには、コントラクトアドレスのページを開き、URLの末尾に ?force=1 を追加して再読み込みする方法が有効な場合がある。これによりキャッシュをバイパスし、最新のメタデータを再取得させられる。

ただし、このパラメータはEtherscanが公式に保証している機能ではない。どうしても更新されない場合は、数時間から1日程度待ってから再度確認する。

よくある質問

IPFSにアップロードしたのに数時間経っても表示されないのはなぜか

IPFSはP2Pネットワークであり、ファイルが他のノードに十分に伝播するまでに時間がかかることがある。また、ピン留めサービスを使わずにアップロードした場合、元のノードがオフラインになるとファイルがネットワークから消え、誰からも取得できなくなる。

メタデータを修正した後、OpenSeaでは表示されるがEtherscanでは表示されないのはなぜか

OpenSeaは独自のキャッシュとメタデータ更新の仕組みを持っており、Etherscanより早く新しいデータを取り込むことがある。Etherscanのキャッシュがクリアされるまで待つか、前述のキャッシュバイパスを試す。

EtherscanでNFTのコントラクトを確認する際の注意点は

コントラクトがERC-721やERC-1155の標準に準拠していない場合、Etherscanはメタデータを正しく読み取れない。トークンURIが動的に生成される仕組みや、オンチェーンSVG形式の場合はEtherscan側の対応が限られるため、画像が表示されないことが前提になるケースもある。

この記事のポイント

  • 画像が表示されない主因はメタデータのJSONとIPFSゲートウェイにある
  • メタデータのimageフィールドが正しいIPFS URLを指しているか確認する
  • パブリックゲートウェイを切り替えてIPFSハッシュが有効かテストする
  • Etherscanのキャッシュが原因なら更新を待つかキャッシュをバイパスする
共有:

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)