見出し画像

NFT.Storageの利用に必要なIPFSの知識


NFT.Storageは

すべてのNFTデータを公共財として保管することを目的とした、オフチェーンのNFTデータを無料でアップロードできるストレージサービスです

https://nft.storage/

NFT.Storageを使用して保存されたデータはすべて、IPFSを介して検索できるようになります

IPFSとは

コンテンツアドレス付きデータを保存・共有するための分散型ピアツーピアネットワーク

のことです。

NFT.Storageを使用してNFTを作成するためには

  • IPFSアドレスの仕様

  • IPFS URIとHTTPゲートウェイの関連性

を理解する必要があります。

残念ながら現時点では、これらの情報について、日本語の体系だった情報はありません。

しかし、分散型サービスを開発するなら、分散型ストレージの利用が必要となります。そして、分散型ストレージの利用するには、バックグラウンドで動いている技術や仕組みをきちんと理解しておくことが必要になります。

なのでこの記事では、この先分散型(web3)サービスを作る人が、NFT.Storage等の分散型ストレージサービスを使う時に、IPFSを容易に理解できるよう簡潔にまとめました。

NFT.Storage


NFT.Storageは

分散型のストレージサービス

です。

中央集権型のサービスだと、Aws s3やCloud Storageに該当します。

NFT.Storageは、NFT.Storageが管理する専用のIPFSサーバーとFilecoin上の分散型サーバーの2つの主な方法で、パブリックIPFSネットワーク上にアップロードされたデータのコピーを多数保存します。

IPFSサーバーとして稼働するNFT.StorageとFilecoin

Filecoinは

ピアツーピアの分散型ネットワーク・プロトコルであるIPFSを利用し、分散型の効率的で安全なウェブを実現するブロックチェーンです。

https://filecoin.io/

NFT.StorageはFilecoinを利用していますが

NFT.Storageを利用するのにFilecoinのネイティブトークンFILは必要ありません

また、Filecoinの仕組みを理解している必要もありません。

必要なのは

  • 汎用的なIPFSの仕組みの理解すること

  • NFT.StorageのAPIやSDKの使い方を理解すること

です。

これはとてもありがたいことで、

他の分散型ストレージを使う場合でも、NFT.Storageで学んだ知識が流用できる

ということです。

IPFS


IPFSは

NFT(non-fungible tokens)用のデータの保存とアドレス指定に最適なプロトコル

です

NFTは作成後に簡単に変更することができないため、NFTのデータをどのように保存し、長期にわたって永続させるかを考えることが重要になってきます。

IPFSは、NFTの用途にマッチした仕様になっています。

IPFSはコンテンツIDと呼ばれる

短い文字列でデータを一意に識別するコンテンツアドレス指定

と呼ばれる技術を使用しています。

具体的には

bafybeigvgzoolc3drupxhlevdp2ugqcrbcsqfmcek2zxiw5wctk3xjpjwy

のような文字列です。

このようなコンテンツIDを開発者は

CID

と呼びます。

CIDはIPFSにデータを追加することで取得できます。

CIDの取得フロー

CIDは、コンパクトなバイナリ形式で保存され、ネットワーク経由で送信できますが、ユーザーに表示されるときは、ランダムに見える文字の文字列として表されます

IPFS URI


保存したデータはCIDを利用して取得する必要があります。

それにはIPFS URIを利用します。

IPFSデータへのリンクは次のようなURIの形になります

ipfs://bafybeigvgzoolc3drupxhlevdp2ugqcrbcsqfmcek2zxiw5wctk3xjpjwy

このIPFS URIは、IPFSのCIDであることを識別しやすくするためにipfs://という接頭辞を付加しただけのCIDになっています。

ipfs://プレフィックスを持つURLは、BraveのようなIPFSをサポートするブラウザを使えば直接利用することができます。

https://brave.com/ja/

もしあなたが開発者であれば

SvelteやReactのようなwebフレームワークやhtmlのimgタグでは、IPFS URIは現状サポートされていない

ということを知っておく必要があります。

この場合

HTTPゲートウェイを通して取得する必要があります。

なので開発者は、HTTPゲートウェイについても理解をしておく必要があります。

HTTPゲートウェイ


HTTPゲートウェイは、IPFS URIを解決できない環境で、データアクセスの手段を提供します。

つまり

IPFSコンテンツへのHTTPリンクを提供します

HTTPゲートウェイのイメージ

具体的には

https://nftstorage.link/ipfs/bafybeigvgzoolc3drupxhlevdp2ugqcrbcsqfmcek2zxiw5wctk3xjpjwy

ようにhttpプロトコルを使ったアクセスを可能します。

HTTPゲートウェイは、ピアツーピアのIPFSプロトコルと、すべてのウェブブラウザがサポートするHTTPプロトコルとの間のブリッジを提供します。

NFT.Storageを利用する場合は

nftstorage.linkゲートウェイの使用が推奨されています。

nftstorage.linkゲートウェイは、NFT.StorageチームによってNFT資産の検索を最適化するために構築され、NFT.Storageを通じてアップロードされたデータのキャッシュを含みます。

なので

https://nftstorage.link/ipfs/bafybeigvgzoolc3drupxhlevdp2ugqcrbcsqfmcek2zxiw5wctk3xjpjwy/amazing.gif

のようなゲートウェイlinkを作成してデータにアクセスします。

ゲートウェイは 「パス・スタイル 」と 「サブドメイン・スタイル 」の両方のURLをサポートしています。

どちらを利用しても問題ないので、好みの方を使えば良いです。

また、注意すべき点としては

ゲートウェイ・リンクは相互運用性には優れていますが、IPFS上のデータへの主要リンクや正規リンクにすべきではありません。

IPFS URIは、IPFS上の誰もがデータを持っている限りアクセス可能なままですが、ゲートウェイ・リンクは、ゲートウェイがオフラインになるとアクセスができなくなる怖れがあります。

まとめ


NFT.Storageは、NFTを扱うサービスを作る上でとても役立つサービスです。

また、あなたがIPFSを使う分散型サービスを開発しようと考えているなら、NFT.Storageの設計とマネタイズ手法を学ぶと良いでしょう。

分散型サービスを開発する機会があれば、NFT.Storageの利用を検討してみてください。


この記事が気に入ったらサポートをしてみませんか?