![見出し画像](https://assets.st-note.com/production/uploads/images/122061291/rectangle_large_type_2_5b3776bd6bcb5998552c96aff99d025f.png?width=1200)
NFT.Storageの利用に必要なIPFSの知識
NFT.Storageは
すべてのNFTデータを公共財として保管することを目的とした、オフチェーンのNFTデータを無料でアップロードできるストレージサービスです
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ネットワーク上にアップロードされたデータのコピーを多数保存します。
![](https://assets.st-note.com/img/1700267740517-cUQqgRMhWk.png?width=1200)
Filecoinは
ピアツーピアの分散型ネットワーク・プロトコルであるIPFSを利用し、分散型の効率的で安全なウェブを実現するブロックチェーンです。
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にデータを追加することで取得できます。
![](https://assets.st-note.com/img/1700269575338-FmbTl0iCcm.png?width=1200)
CIDは、コンパクトなバイナリ形式で保存され、ネットワーク経由で送信できますが、ユーザーに表示されるときは、ランダムに見える文字の文字列として表されます
IPFS URI
保存したデータはCIDを利用して取得する必要があります。
それにはIPFS URIを利用します。
IPFSデータへのリンクは次のようなURIの形になります
ipfs://bafybeigvgzoolc3drupxhlevdp2ugqcrbcsqfmcek2zxiw5wctk3xjpjwy
このIPFS URIは、IPFSのCIDであることを識別しやすくするためにipfs://という接頭辞を付加しただけのCIDになっています。
ipfs://プレフィックスを持つURLは、BraveのようなIPFSをサポートするブラウザを使えば直接利用することができます。
もしあなたが開発者であれば
SvelteやReactのようなwebフレームワークやhtmlのimgタグでは、IPFS URIは現状サポートされていない
ということを知っておく必要があります。
この場合
HTTPゲートウェイを通して取得する必要があります。
なので開発者は、HTTPゲートウェイについても理解をしておく必要があります。
HTTPゲートウェイ
HTTPゲートウェイは、IPFS URIを解決できない環境で、データアクセスの手段を提供します。
つまり
IPFSコンテンツへのHTTPリンクを提供します
![](https://assets.st-note.com/img/1700317001702-43iKn9KMXH.png?width=1200)
具体的には
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の利用を検討してみてください。