IPFSでデータを永続化するには

IPFSにファイルをインポートしてもピンしないと消えてしまう。

ジェネレーティブNFTのため10000枚のそれなりの解像度の画像をまとめて10GB近い容量をIPFSにアップした。利用したピニングサービスはPinataが無料だったので使っていたが…

Pinata

無料枠1GBまでで有料化。

すでに一部NFTで無料mintで配っており、利益を生み出しておらず、PICNICプランの毎月20ドルの支払いはきつい。けど消したくなかったので延命方法を調べてみた。

Infura

無料枠5GBまでだったので見送り。

Web3 Storage

これも無料枠5GBまでだったので見送り。

Storj

問い合わせすればIPFS Pinningさせてもらえるようだったので、申請したがやり取りがうまくいかず諦めた。

Filebase

無料枠5GBまで
スタータープランがたしか 5.99ドル/月 だったので一旦こちらに移して様子をみていた。

IPFSピン同期はこちらを利用すると楽でした。いろんなピンニングサービスのAPIを設定すればそれぞれどうしで同期できるようです。

しかし、Filebaseのスタータープランがしれっと20ドル/月に値上げしたようでその請求メールがきたため、再度調べ直した。

▼この記事をみつけて希望が持てました!

永続化するために

  1. そもそもNFTの画像とかpinしてもらっている画像の元データは大切にバックアップしてとっておく。

  2. IPFSネットワーク上でファイルが消失したらバックアップしてあるファイルを他のノードにpinする

ファイル自体はネットワークにキャッシュされるので本当に四六時中動かしておく必要はないはずです。

たしかに全く同じデータをIPFSにインポートすれば同じコンテンツID(CID)になる。定期的にBraveを使ってる間つないでおけるならなんとかなるかと試してみた。

IPFS Desktop

以前試して常に動かしておくのはきついなとそれから使っていなかったが、見直すとシンプルで良くできたアプリだなと。
CIDを入力すればIPFSからインポートもできる。

Braveブラウザにこの機能拡張を入れて、My Nodeボタンを押して表示されるページも同じです。頻繁にBrave使っている人なら確かに手軽にできて良いかも。

ChromebookのLinux環境に入れたBraveでも問題なく利用できました。

でもIPFSにインポートはその分のハードディスク容量を食う。起動時は重く感じるし、通信量も多くなるので外ではきついかな。

Raspberry Pi 3が眠っていたのでこれでIPFSノードにピンできれば常に動かしておいても比較的静かにローコストで有効利用できるのではと思い試した。

Raspberry Pi にはBraveをインストールできないので少し難しいが、
下記を参考にしてできた!

しかしRaspberry Pi 3では重いようで、4が良さそう。

NFT storage

そもそもこれをまず最初から使うべきだった。
今のところ無料で無制限にピンできるサービス。

ちなみにCIDは2バージョンあり、アップロードするとバージョン1で表示される。
$VERSION_ZERO_CID
Qm〜
$VERSION_ONE_CID
ba〜

https://nftstorage.link/ipfs/$VERSION_ZERO_CID にアクセスすると、 https://$VERSION_ONE_CID.ipfs.nftstorage.link にリダイレクトされるので、同じ CID かどうかを HTTP ゲートウェイで確認することができます。

上記CIDのバージョン違いに最初つまずいたが、それでも同じデータをアップロードすれば同じCIDになるはずが、

クラウドストレージにバックアップしてたんですが、勝手に圧縮されてたりしたのかな?もしくは容量が大きいのでうまくアップできないのか、IPFSからダウンロードしたファイルも試したはずだが、なぜか何度やっても同じCIDにならなかった。

IPFSからCIDを読み込む機能があれば間違いないのだが無いので見送っていたのだが、

IPFS DesktopもしくはBraveの機能拡張に入れたIPFS CompanionのMy NodeでSet Pinninngする時、ローカルの他に設定で他のピニングサービスをAPIで追加できる。そこにNFT.storageのAPIを追加してみたら繋がった!

Set Pinning
Set Pinning

NFT.storageサイトのFilesに追加された。アーカイブ済みに赤ピンが付いているが、ストレージプロバイダは、Queuing、Sizeは0B。アップじゃなく読み込んだからか?

このアップロードのコンテンツは、ファイルコインに冗長的に保管するために集約されています。Filecoinの取引は、アップロードから48時間以内に有効になります。キューイング中も、データはIPFSネットワーク上で利用可能です。

NFT.storageは、その名の通りNFTの素材データはOKだが、HTMLなどのサイトデータはエラーになるようです。そこで

Fleek

IPFSにサイトをアップするなら、Fleekが良いです。

以前書いた記事がありましたので参考にどうぞ。

Unityもいけますね。

Estuary

そんなこんなでこのピニングサービスを見つけた。
今のところ無料で32GiB使える。申請が応募フォームだったが、取り急ぎ使いたい旨を入力し送信したらすぐにメールが来て使えるようになった!

IPFSからCIDでインポート可能。

とりあえずこれが動いているうちは安心かな。

Lighthouse

一度料金を払えばデータを永久保存してくれるArweaveのようなサービスらしいのでデータを入れてみたが容量が大きいせいかアップローディングバーが止まってるような…

まとめ

AWSなどのサーバーでIPFSノードを立てて運用できれば良いでしょうが、ゴリゴリのエンジニアでは無い私は先日仲間に「会社のAWSが乗っ取られて多額の請求がきたらしい」って話を聞いて、サーバー立てずにローコストでなんとかなりそうなので、今度気が向いたらチャレンジしてみたいなと思った。

非エンジニアでもIPFS Desktopをインストールもしくは、Braveの機能拡張にIPFS Companionを入れれば簡単にIPFSを使うことができる。

まずは、NFT storageにアップしましょう。

そしてその他のピンサービスにも無料枠に収まるなら入れておくと良いでしょう。

IPFSネットワーク自体は亡くならなくとも、以前あったはずのピンサービスが終了したり有料化でピンが外される場合もあるので複数ピンすると安心です。

購入したお気に入りのNFTのデータがIPFSにアップされていたら、自らピンしたり

良いデータならみんなでピンしあって永続されるP2Pの仕組みだなと再認識しました。

おまけ

ストレージのまとめサイトがありました。

powered by Protocol LabsだからIPFS,Filecoin押しと思うが、dfinityのストレージが載ってないな…

もしもっと良いサービスがあるとか質問がある方はこちらで

Subscribe to masia02
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.