IPFSでファイルを半永久的に共有することが「できます」。
「NFTの画像がIPFSに保存されてても永続的には維持できないからNFTゴミになるじゃん」というよくある誤解について。
こんな記事を書いておいてなんなんですが、IPFSでファイルを半永久的に共有することができます。なぜなのか説明するためにはIPFSってそもそも何の略なんだっけって話からするのが良さそうです。
IPFSってそもそも何の略なのか
I P F S
the InterPlanetary File System
日本語に直すと惑星間ファイルシステムです。
惑星間というのがポエジーでいいんですが、今回の議題はそこではなく、「ファイルシステム」の方ですね。IPFSは惑星間ファイルシステムであって、惑星間ファイルストレージではないということ点が重要です。
保管はストレージの役割なので「IPFSでファイルを半永久的に保管することはできます」ではなくて「IPFSでファイルを半永久的に共有することができます」と書きました。
結論からいうと、ファイルシステムはシステムなのでファイルを保存する決まりを定義するものではありますが、どれくらい長く保存できるかはファイルシステムにはよらず、ストレージの方の質とかによります。なのでストレージの質が良ければIPFSに永続的にファイルを公開することは可能です。
図書館に例える
雑に図書館に例えると、本そのものや紙の材質がファイルストレージだとするならば、ファイルシステムは図書の索引やタイトル順に並べられた本棚のしくみとかだといえます。
本棚に並んでいる本の紙の材質がわら半紙だったとしたら、その情報は10年も持たないかもしれませんが、中性紙だったら100年は持つかもしれません。もし羊皮紙だったら、1000年以上は持つでしょう。
極端な話、本棚に石版を並べてそれに文字を刻んだら1万年くらい経って図書館が跡形も無くなっても、石版とそのデータ自体は残るかもしれません。
IPFSもそれと同じです。サーバーが死んでもデータ自体が(石版とかに)残っていればいくらでも再公開できます。
「IPFSで永続的にファイルを保管できるのか」という命題自体がずれたものであることがわかったでしょうか。
永続化するためには
「そんなごたくを並べたって結局ファイルを保存しているIPFSノードがpinしなくなったり、ノードが落ちたりしたらどうすればいいの」という疑問はあると思います。
どうすればいいのか書きます。
1. そもそもNFTの画像とかpinしてもらっている画像の元データは大切にバックアップしてとっておく。
石版に書くのはさすがに現実的ではありませんが、PCとUSBメモリ、クラウドストレージとかに分散させて保存しておけばそうそうなくなることはないでしょう。買ったNFTも価値があると信じているのであれば、IPFSに保存された画像自体をダウンロードして取っておいてください。
2. IPFSネットワーク上でファイルが消失したらバックアップしてあるファイルを他のノードにpinする
IPFS上でファイルを判別するCIDは同じファイルであれば必ず同じ値になるので、再度同じファイルをどこかのノードにpinすれば、CIDに紐付けられているNFTの画像も表示できるようになります。
「難しそう。サーバを維持するのに知識や莫大なコストがかかる」というのは誤解です。暗号通貨のノードと違ってIPFSのノードはそんなに大変じゃないです。
そういう方のためにこういう記事を書いたことがあります。四六時中動かしておくのはまあまあ大変かもですが、ファイル自体はネットワークにキャッシュされるので本当に四六時中動かしておく必要はないはずです。
それどころか、ブラウザだけでIPFSのファイルをpinして公開することすら可能です。実はそういうアプリを作って公開しています。
https://starshare.ipfscrosspoint.net/#/upload
ここにアップロードしてタブを開いている間はIPFSネットワークにファイルを提供し続けることができます。(※ただしネットワーク環境による。9割がた大丈夫ですが。)
もちろん有料のpinサービスにお金を払って画像をpinしてもらうことも可能です。むしろ一番始めに来る選択肢でしょう。あなたの持っているNFTが素晴らしい価値があるのであればその価値の維持に必要な出費と考えてください。
最後にこういうのやりたいなあというはなし
個人的には中央集権的なpinサービスに画像が大量にpinされていて大きな事故でサービスが死んで誰も画像のバックアップ取ってなかったので全部消える、というのが一番残念な事態だと思います。
じゃあみんなでお気に入りのNFTの画像のバックアップ取っておけばいいじゃんという話でも話は終わるんですが、それじゃあつまらないなあと。
せっかくIPFSがブラウザで動くんだから画像閲覧用のアプリ自体のキャッシュにファイルを残せるようにしとけばいいと思うんですよね。つまり「見ている人にバックアップを取っておいてもらいましょう、ついでにIPFSへの公開もお願いしましょう」ということですね。
そうするとどうなるかというと「見られ続けているうちはファイルは残るけど、誰にも見られなくなったらファイルは消える」という世界になります。しかも保管する側の負担はほぼゼロです。
まだ妄想に近いんですが、そういう方向のアプリを作ろうとしていますのでそのうち公開できるといいなと思います。(丁度いいあれもあるのでいいかなあと)
以上でした。
誰も見られなくなると消えるのはちょっと寂しいですが(笑)、面白い発想ですね!