IPFSのデータが消滅した場合に復活させる方法を試してみた

なちゃっとさんが興味深いことを呟いてました。
Nemberartはあまり触れていないので詳しくないのですが、IPFSは最近触っていて、この方法で復活できるらしいというのも噂で聞いていたので、確かめてみようと思います。

何をしようとしているのかというと、IPFSから画像を読みだそうとしているNFT(など)のIPFS画像が消えた際に復活させようと思います

IPFSはファイルを変換して得られる固定長の「ハッシュ」というデータに変換し、その「ハッシュ」に対応するデータがどこかに保存されていれば読み出すことが出来ます
ただ、全てのサーバから「ハッシュ」に対応するデータが消えてしまうと、当然ながらデータが読みだせなくなります

ここで、同じファイルに対しては同じハッシュが生成されるので、もう一度同じファイルをIPFSにアップロードしてあげれば、IPFSを読みだそうとするコンテンツはまた画像が表示されるようになるはずです。(理論上は)

これを試してみましょう。

取り敢えず、適当な画像を用意します。

pinataというサービスを使って、IPFSにあげてみます。

この「QmSmngkSVtFMQJ8hZveCSuJdySY1wfr9y2pqw9RtXtezDa」というものがハッシュです。
IPFSに対応している読み出し方であれば、例えば以下の2URLなどで画像を確認することが出来ます。(Chromeなどの対応ブラウザのみ)
上はpinata経由、下はIPFSの汎用な呼び出しです。

https://gateway.pinata.cloud/ipfs/QmSmngkSVtFMQJ8hZveCSuJdySY1wfr9y2pqw9RtXtezDa
https://ipfs.io/ipfs/QmSmngkSVtFMQJ8hZveCSuJdySY1wfr9y2pqw9RtXtezDa

こんな風に、呼び出すURLに差があっても、同じハッシュを呼び出せば同じ画像が呼び出されます。

さて、次にimgurはダメと言われていましたが、imgurにも上げてみます。
正直見た目は一緒ですね。

両方とも、画像ファイルをダウンロードしておきます。

では、IPFSのPIN止めを削除します。
本来はPIN止め(確実に持っているサーバ)が0になるとサーバ上から無くなる可能性があるのですが、
残念ながら?そんなすぐには消えないので同じハッシュ値が出来ることの検証になります。

ちなみに、imugrにアップロードしてからダウンロードした画像がこちら。
見た目では分かりませんが、しれっとファイルサイズが「332KB」から「269KB」に減っています。

IPFSからダウンロードした方は、元のファイルサイズのままでした。

では、IPFSからダウンロードした画像とimgurからダウンロードした画像をIPFSにアップロードします。

同じファイルでないことを示すために、適当に名前を変えてアップロードしてみました。

下がIPFSからダウンロードした画像、上がimgurからダウンロードした画像です。
下のハッシュは「QmSmngkSVtFMQJ8hZveCSuJdySY1wfr9y2pqw9RtXtezDa」であり、先ほどと同一です。

よって、IPFSから画像が消えてもこのように自分でIPFSからダウンロードしておいた画像があれば、復活させられることが分かりました!

ちなみに、上のハッシュ値は元のファイルから変わってしまっています。
このため、IPFS上にアップロードしたとしても、NFTなどは「QmSmngkSVtFMQJ8hZveCSuJdySY1wfr9y2pqw9RtXtezDa」を探そうとするため復活させることはできません。

よって、なちゃっとさんの言う通り、サムネイルなどではなくIPFSからデータを保存することが復活させる条件です。

 

理論上できるとは知っていましたが、やってみると面白いですね!

コメントを残す

メールアドレスが公開されることはありません。