NFTの画像データは基本Ethereumチェーン上にはありません

where-is-the-nft-metadata

どうも、でりおてんちょーです。

先日

  • フルオンチェーンNFT
  • サーバー保管(ホスト)型NFT

の違い、及びそのソリューションとしての「IPFS」の可能性についてTwitterで言及したところ、かなり大きな反響がありました。

NFTのmetadata(画像・属性・説明書きなどのデータ)がどこにホストされているのか、意外と知らないという方も多かったようです。

それどころか、すべてのNFTがフルオンチェーンかのように誤解されていた方も多く、ここに関しては消費者保護のためにもしっかり周知しておく必要があると個人的に感じました。

ということで今回は、NFTの「画像部分」に焦点を当てて、IPFSをテーマに解説していこうと思います。

はじめに、この記事の構成について説明します。

STEP
タイプごとのNFTにおける画像データの保管場所について

まずは、大きく2種類に分けて、NFTにおけるmetadataの保管方法について解説していきます。

STEP
第3の選択肢「IPFS」とは?

次に、第3の選択肢として活用事例が増えてきているIPFSとは何なのかについて解説します。

STEP
実際にいろんなNFTを見てみよう

最後に、現在発行されている有名なNFTのmetadataがどこにホストされているかを見ながら、NFTにおける画像データの保管方法についての理解を深めていただくことを目指します。

本記事が、皆さんの「NFT」や「IPFS」への理解の一助となりましたら幸いです。

※本記事は特定のFT / NFTの購入を推奨するものではありません。あくまで勉強の一環としてご活用ください

今月のスポンサー:Yay! – WEB3時代のSNS「Yay!」でリサーチャー募集
目次

NFTの画像データはどこにホストされている?

まず、画像データのホストされる場所という文脈で、NFTを大きく

  1. フルオンチェーンNFT
  2. サーバー保管型NFT

の2つに分けて考えてみます。

フルオンチェーンNFTは上側のイラストの通り、

  • NFTの情報(額縁部分)
  • 画像データ含むNFTのmetadata(イラスト部分)

が、どちらもブロックチェーン上に保持されているタイプのNFTです。

Ethereumはpublicブロックチェーンであり、データの改ざんが非常に困難であるという特性から、フルオンチェーンNFTが消失してしまうケースは「Ethereumが稼働停止したとき」「ハッキングによりデータを改ざんされたとき」と限定されます。

このことから、publicブロックチェーンの分散的な仕組みを好む方々は、フルオンチェーンNFTを好む傾向が高いと考えられます。

一方、サーバー保管型NFTは、NFTの情報はブロックチェーン上に保持されているものの、画像データ含むNFTのmetadataに関しては、ブロックチェーン外のサーバーにホストされています。

より詳しく説明すると、NFTの画像部分の情報は「運営サーバーへのURL」になっていて、要はブロックチェーンの外の世界から画像情報を引っ張ってきています。

つまりこの場合、OpenSeaなど表示されているNFTのイラストは、Ethereumブロックチェーン外の情報を参照していることになります。

サーバー保管型NFTのメリット

サーバー保管型NFTのメリットは、データ容量の大きな画像・イラストであってもNFTのイラスト情報として指定できることです。

実は、Ethereumブロックチェーンに載せられるデータ容量はかなり小さく、一般的なイラスト等はデータ容量が大きすぎるため、チェーン上に保持することが難しいといった事情があります。

つまり、データ容量の大きなイラストそのもののデータをチェーン上に保持することはできないが、外部のサーバーへのURL(https://~~のような文字列)であれば載せられるということです。

サーバー保管型NFTのデメリット

逆にデメリットは、NFTプロジェクトの運営を信じ続けたり、管理サーバーのオペレーションミスによるデータ削除など単一障害点ある分「一定のトラストリスク」が生じるという点です。

また、NFTプロジェクトの運営・ハッカーなどにデータベースの情報(ここではイラストを表す)などを変えられると、当初の画像とは違ったイラストが表示されるようになってしまいます。

上のイラストで表すと、ピンク色の部分はNFTプロジェクトの運営サーバー管轄でありブロックチェーン外の情報なので、リンク先の表示物を変更することは実質可能です。

相棒

本当にそんなことあるの?

と思う方もいらっしゃるでしょうが、実際にいくつか事例があるのでご紹介します。

事例1. Raccoon Secret Society

Raccoon Secret SocietyというNFTプロジェクトで、運営がすべてのNFTを骨のイラストに変更したことが話題になりました。

※現在の画像データは元に戻っている模様

相棒

自分が購入したNFTのイラストが、ある日突然、しかも意図的に変えることができる、サーバー保管型NFTにはそういったリスクもあるんだよ

ということを、この運営チームは伝えたかったそうです。

事例2. AtMyWhim

こちらの「AtMyWhim」というNFTは、OpenSeaやRaribleなどで見ても普通にイラストが表示されます。(それぞれ出力されるイラストは異なる仕様)

出典:OpenSea
出典:Rarible

しかし、購入するとう○このイラストにすり替わるという、なんともお茶目心満載なNFTです。

これに関して開発者のマーリンスパイク氏は、以下のように述べています。

マーリンスパイク氏はこのNFTを使った悪戯について、紐付けられたものの保有権を証明するはずのNFTが持つ脆弱性にスポットライトを当てることが目的だとしています。

NFTは技術的にはブロックチェーン上に保存されるユニークなデジタルトークンです。しかしほとんどの場合、実際にそこに保存されるのは記録だけで、アート作品などのデータは別のどこかに保管されることになります。

つまり、NFTに高額の代金を支払ってオリジナルデータとされる画像を購入したつもりでも、肝心のオリジナルデータはブロックチェーンとは異なるところにあり、保存先のなすがままに「いつでもNFTの画像を別のものに差し替えられる」可能性があるということです。

マーリンスパイク氏はOpenSeaおよびRaribleの説明書きに「あなたはこのファンクションコール」を保有しているかもしれませんが、私はファンクションそのものを保有しています」と記しています。

暗号技術者、購入するとデジタルアートが「ウ〇コ絵文字」に変わってしまうNFTをリリース

これに関しては直接データベースの画像をすり替えた事例ではないものの、後からNFTのイラストを別物に変えることができる事例といえるでしょう。

ここまで踏まえて、

相棒

フルオンチェーンNFTだとドット絵みたいなデータ容量の小さなイラスト限定で、サーバーホスト型だと運営を信じなければならないのか。
どっちもどっちだな〜

と思われた方もいらっしゃるかもしれません。

これは実際その通りで、フルオンチェーンNFTとサーバー保管型NFTの間には、実際いろんな意味で大きな溝があるのです。

では、この大きな溝の間に位置するようなmetadataの保管方法は存在しないのでしょうか?

はい、ここで登場するのが第3の選択肢「IPFS」を使った画像のホスト方法です。

ここからは、画像データ含むmetadataをホストする場所という文脈で

  • フルオンチェーンNFT
  • IPFS保管型NFT
  • サーバー保管型NFT

の3つに分類して、話を進めていきます。

第3の選択肢「IPFS保管型NFT」とは?

IPFS(Inter Planetary File System)は、アメリカの「Protocol Labs」という企業によって開発された、P2P(個人間で取引をおこなうタイプ)の分散型ファイルシステムです。

PCやスマートフォンのストレージの空き領域を使って、データを分散して保管することができます。

「特定の一つのサーバーが管理している」ではなく、「一人ひとりがサーバーとなり皆で管理している」イメージ。

よって、IPFS自体はブロックチェーンではないものの、概念は非常にパブリックブロックチェーンに近いものです。

ちなみにIPFSにはFileCoinといって、IPFSを普及させるためのネットワークが存在します。
本記事では詳細は省きますが概要だけお伝えすると、2017年にFileCoinネットワーク上の暗号資産「 FIL」はICOをおこない、約280億円を調達しています。

「ロケーション指向プロトコル」とは

このあたりは詳しく解説すると長々となってしまうので、概念だけざっくり解説しておきます。

まず前提として、我々が普段よく使っている「https://anyoneserver.com/art1」のようなURLは、ロケーション指向型プロトコルである「HTTP」を用いています。

名前の通りロケーション(場所)を指し示すのですが、上記赤線部のURLを例にすると、

相棒

「anyoneserver.com」というサーバーにある「art1」という場所にアクセスするよ

となります。

つまり、「場所」をコンピュータに指定して表示してもらいます。

ということは、コンピュータからするとその「場所」の中身が変わっていようが消えていようが、関係ないわけですね。

この図を例にすると、「空き地にある右下の土管の中」を指し示していて、そこにあるものが林檎でも、ぶどうでも、何もなくても関係ないということです。

相棒

僕は「anyoneserver.com」というサーバーにある「art1」という「場所」を見に行くよ。
その場所の中身については変わっていようが消えていようが知らないよ。

ロケーション指向プロトコルは直感的に分かりやすいものの、

  • 中身のデータ管理を運営に依存する必要がある
  • 常に絶え間なく(サバ落ちしないようコストをかけて)稼働し続ける必要がある

など課題もあります。

IPFSはコンテンツ指向型プロトコル

これに対してIPFSはコンテンツ指向型プロトコルで、名前の通りコンテンツそのものにアクセスします。

コンテンツ自身のハッシュ値がアドレスとなり、それをキーにコンテンツにアクセスするといった方式です。

厳密には、 CID(コンテンツID)という一意のハッシュ値により、一意のコンテンツを識別しています。

上画像で「これ!」と書いてある通り、ここでは林檎を指し示していて、それが空き地にあろうが、土管の中にあろうが、誰かの家の中にあろうがその場所は一切関係ないということです。

相棒

僕は「林檎」という「モノ(コンテンツID)」を見に行くよ。その場所についてはどこにあろうが知らないよ。

しかし課題として、

  • IPFSに画像データをアップロードするのは技術的なハードルが高い
  • 発行者が支払いを停止したらデータも消えてしまうので、永続性を担保する必要がある
  • キャッシュが消されないためにピン留めが必要(filecoin/arweaveなどを用意)

などが挙げられます。

ただし、このあたりの課題はpinataというサービス等を使うと誰でも簡単にできたりします。

実際にいろんなNFTを見てみよう

ここまでで3種類のNFTについてある程度理解できたと思いますので、最後に有名なNFTをいくつかピックアップして、画像データ含むmetadataがどのようにホストされているか調べてみましょう。

見方や調べ方が分からないという方も、この手順通りにやれば簡単に調べられるので、ぜひお好きなNFTでお試しください。

なお冒頭でも記載した通り、本記事におけるNFTはEthereumブロックチェーン上のものを指します。

今回の手順では調べられるものは、Ethereumチェーン上にあるNFTとなりますので、あらかじめご了承ください。

※CryptoPunksについてはERC721ではなくtokenURI関数が用意されていないため、今回は意図的に割愛しました。

2021年12月7日追記:なぜCryptoPunksだけtokenURI関数がないの?というご指摘を受けて
現在、多くのNFTにはERC721という規格(この関数を実装してくださいねという形式みたいなもの)を組み込むのが一般的になっており、tokenURI関数はそのERC721規格の中に備わっている一つの関数名です。
(※後述しますがtokenURI関数はERC721規格NFTにおいて必ず必要なものではなく、任意です)
そこには、画像データや名前、説明などNFTに関する一式のメタデータと呼ばれるものを記載する場所なっていて、OpenSeaなど各マケプレは一般的にはそこから画像などの情報を呼び出しています。
しかし、CryptoPunksはERC721規格が実装される前にできたNFTで、仮想通貨などのERC20モデルを参考に書かれています。 そのためtokenURI関数が備わっていない特殊なNFTなので、今回は割愛することに致したという経緯になります。
また余談ですが、OpenSeaは昔からプロジェクトごとに個別対応をおこなっていることで有名なので、全部のNFTの画像データがtokenURI関数を元に呼び出されているわけではないことには注意が必要です。
実際、後述するHashmasksという有名なNFTにもtokenURI関数は用意されていなかったりするのです。

Bored Ape Yacht Club

手順はこちらのBored Ape Yacht Clubの節で解説して、それ以降の節はザーッとみていく形式とします。

まずは、OpenSeaからNFTプロジェクトのページ(https://opensea.io/collection/boredapeyachtclub)にアクセスします。

次に、どれでも良いので、表示されているNFTからどれか一つクリックします。

左下にある「詳細」に「Contract Address」があるので、青くなっている英数字部分をクリックします。

そうするとEtherscanのサイトに遷移するはずです。そしたら下写真部の赤線で囲まれている「Contract」をクリックします。

「Contract」の右上に緑のチェックマークがない(verifyされていない)場合は、発行者がContractを公開していないため調べることができません。

こちらの「Code」を見れば、NFTを発行するコントラクトのソースコードを見ることができます。

でりおてんちょー

イーサリアムnaviではコントラクト輪読会という勉強会もやっているので、興味のある方はぜひこちらの関連記事も見てみてください。

さて話を戻して、次に「Read Contract」をクリックします。

ここでは、「Code」で書かれた関数の一部を、wallet認証やgas代なしで呼び出すことができます。

下の方にスクロールすると「tokenURI」という項目があるので、クリックしてタブを広げます。

ここのtokenId (uint256)という欄に、数字のトークンIDを打ち込んでQueryをクリックすれば、metadataのURLを調べることが可能です。

試しに、「1」と入力してQueryしてみます。

すると「string : ipfs://QmeSjSinHpPnmXmspMjwiXyN6zS4E9zccariGR3jxcaWtq/1」と返されましたね。

よって、Bored Ape Yacht ClubのmetadataはIPFSにホストされていることが分かりました。

また、ここから実際どうやって画像データまで辿り着くのかについても解説しておきます。

今回は、Googleのブラウザ検索窓から調べてみます。

リンクを少し変更して、「ipfs.io/ipfs/QmeSjSinHpPnmXmspMjwiXyN6zS4E9zccariGR3jxcaWtq/1」にして検索してみてください。

するとこのようなJSON形式のデータが表示されます。

この「image」の部分が画像データを差しているので、こちらのリンク「ipfs://QmPbxeGcXhYQQNgsC6a36dDyYUcHgMLnGKnF8pVFmGsvqi」を形式を変えて「ipfs.io/ipfs/QmPbxeGcXhYQQNgsC6a36dDyYUcHgMLnGKnF8pVFmGsvqi」としてから、再度検索してみましょう。

するとこのように画像が表示されますね。おめでとうございます。

以上が、コントラクトアドレスから画像データ含むmetadataをホストしている場所を調べ、また画像を表示させるまでの一連の流れとなります。

この方法で、他の有名NFTプロジェクトについても調べていきたいと思います。

Pudgy penguin

Pudgy penguinの「token ID=1」のtokenURIを調べたところ、返り値は「https://api.pudgypenguins.io/penguin/1」だったので、このNFTは「サーバー保管型NFT」に分類されます。

imageのURLについてもhttps://~~の型なので、そのまま検索すれば画像が表示されることが確認できます。

Cool Cats

Cool Catsの「token ID=1」のtokenURIを調べたところ、返り値は「https://api.coolcatsnft.com/cat/1」だったので、このNFTは「サーバー保管型NFT」に分類されます。

しかしながら、画像データに関してはIPFSにホストされていたため、

  • metadataはサーバーへホスト
  • 画像データはIPFSへホスト

していることになります。

よって、画像データが消失するリスクは一般的なサーバーホスト型のNFTと比較すると少ないと言えますが、metadata自体は運営管轄のサーバーで管理されていることには留意が必要ですね。

Loot (for Adventurers)

Loot (for Adventurers)の「token ID=1」のtokenURIを調べたところ、返り値はsvg形式の文字列だったので、このNFTは「フルオンチェーンNFT」に分類されます。

つまり、このNFTのmetadataはすべてEthereumブロックチェーン上に保持されているので、

  • Ethereuチェーンの稼働が停止
  • ハッキングによってEthereumチェーンのデータを改ざんされる

といったことがない限りデータは正当に保持されます。

0n1 Force

0n1 Forceの「token ID=1」のtokenURIを調べたところ、返り値は「ipfs://QmXgSuLPGuxxRuAana7JdoWmaS25oAcXv3x2pYMN9kVfg3/1」だったので、このNFTは「IPFS保管型NFT」に分類されます。

「ipfs.io/ipfs/QmcoavNZq2jyZGe2Zi4nanQqzU9hRPxunHAo8pgYZ5fSep/0001.png」としてから再度検索すると、カッコ良い画像が表示されました。

Generativemasks

Generativemasksの「token ID=1」のtokenURIを調べたところ、返り値は「https://ipfs.io/ipfs/QmdiWNpVVejSQNvNtgFXrqNYCGcQDANfsCNBY1iEivGxnf/3800.json」だったので、このNFTは「IPFS保管型NFT」に分類されます。

「ipfs.io/ipfs/Qma9s8wPPwxFsGAAZwtB2EPzCFGZmBtpDHq9QEfC1CoBRS」としてから再度検索すると、カッコ良い画像が表示されました。

追記:
Generativemasksを描画するscriptが、Ethereumチェーン上に保持されるようになりました。

MetaaniGEN

MetaaniGENの「token ID=1」のtokenURIを調べたところ、返り値は「ipfs://QmTiW6V5AG3tVJuewTV2NX1yqFJzLb28MpS7ctTHnPzKXT/1」だったので、このNFTは「IPFS保管型NFT」に分類されます。

「ipfs.io/ipfs/QmVtrbqqjnbzZR6x2RVLWr2MSKHZi8k7XPxHzeuMsjo1aS」としてから再度検索すると、カッコ良い画像が表示されました。

しかし、実際にはMetaaniGENはOpenSea上でアニメーションとして表示されるので、animation_urlの方(ipfs.io/ipfs/QmYpcnYwcVVgaJqbuEcJZyajKUDDEU4pZPT7VdgCWQfPhW)を検索すると、カッコ良い動画が表示されます。

ぜひご自身で試してみてください。

Autoglyphs

AutoglyphsはフルオンチェーンNFTの起源とも言われていて、CryptoPunksやMeebitsといった超有名プロジェクトを生み出したLarva labsが出した、2019年発のフルオンチェーンgenerativeartNFTプロジェクトです。

Autoglyphsの「token ID=1」のtokenURIを調べたところ、返り値はものすごく長い文字列だったので、このNFTは「フルオンチェーンNFT」に分類されます。

でりおてんちょー

昔この仕組みを見たときに感動しましたが、ソースと詳細を忘れてしまったので、また勉強会のネタにもしたいですね。

ということで、このNFTのmetadataはすべてEthereumブロックチェーン上に保持されているので、

  • Ethereuチェーンの稼働が停止
  • ハッキングによってEthereumチェーンのデータを改ざんされる

といったことがない限りデータは正当に保持されます。

Hashmasks

この記事を書くまで知らなかったのですが、HashmasksにはtokenURI関数が用意されていないみたいです。

これは前述の通り、tokenURI関数がNFT(ERC721規格)において必ず必要なものではなく、任意だからと考えられます。

そのため今回は調べることがEtherscanから調べることができないのですが、結論だけいうとHashmasksの画像データはIPFSで管理されているみたいです。

Blitmap

Blitmapの「token ID=1」のtokenURIを調べたところ、返り値は「」だったので、このNFTは「サーバー保管型NFT」に分類されます…

相棒

えっ!ちょっと待って!BlitmapはフルオンチェーンNFTって習ったよ!

実際metadataを見てみると、画像データもサーバーにホストされています。

もしかしたらsvg形式でEthereumチェーン上に画像データを保持しつつ、サーバー上でも保持しているのかもしれません。

実際、フルオンチェーンNFT「Luchadores.io」も、metadataの格納先が一箇所ではなく複数存在するようです。

でりおてんちょー

ちょっと自分は詳しくは分からなかったので、もし分かる方いらっしゃれば教えていただけますと幸いです。

まとめ

本記事では、NFTの「画像部分」に焦点を当てて、IPFSをテーマに解説したり、実際にいろんなNFTを見ながらmetadataの保管場所について解説しました。

すべてのNFTがフルオンチェーンであると誤解されていたという方もいたので、この記事で少しでも理解を深めていただけたのであれば幸いです。

最後に、IPFSやNFTなどについて

  • 聞いてみたいことがある
  • 分からない部分がある
  • もっと多くの情報が知りたい

という方は、Discordコミュニティ「イーサリアムnavi」にご参加ください!

イーサリアムnaviのDiscordコミュニティには

  • Solidityを勉強したい・既に勉強している
  • 開発に興味がある
  • NFTが好き・興味がある

といった方々がたくさん集まっており、日々NFTや開発に関する情報を共有したり、不定期で勉強会などイベントも開催しています。

また、Twitter・YouTubeでの情報発信にも力を入れていますので、合わせてフォローしていただけると幸いです。


今月のスポンサー:Yay! – WEB3時代のSNS「Yay!」でリサーチャー募集

Yay!

匿名コミュニティYay!がリサーチャーを募集中です。

誰もが素が出せて、フラットで、他人に寛容なバーチャルワールドを作っています。

この冬IEOを目指しています。一緒にサスティナブルな経済圏を作っていきましょう!

励みになるので、よかったらSNSなどでシェアしてください!

この記事を書いた人

最先端のCryptoネイティブなNFTプロジェクト、SolidityなどWeb3開発情報、その他Ethereum周りの情報などを中心に発信しています。

リサーチャーやアドバイザー含むお仕事のご依頼や、イーサリアムnaviに対する広告掲載など、お気軽にご連絡ください。

目次
閉じる