IPFSを使ってみる

先日紹介してもらったIPFSを使ってみようのコーナー

IPFSとは

IPFSとはP2Pネットワークでファイルを管理するコンテンツ指向型プロトコル

💡
IPFS上にファイルを保存しそのアドレスをBC上で保存する。これはオンチェーンなの?もうわからんくなってきた。

インストール

macOS

ここからDL、解凍

Linux

$ wget https://dist.ipfs.io/go-ipfs/v0.5.0/go-ipfs_v0.5.0_linux-amd64.tar.gz $ tar xvzf go-ipfs_v0.10.0_linux-amd64.tar.gz
./install.sh

これでインストール完了。

次にローカルのレポジトリを作成する。

$ ipfs init

これだけ。ホームディレクトリに .ipfs というディレクトリが作られる。ここがローカルのレポジトリ。

ファイルの追加
$ ipfs add ファイルパス added <アドレス>

これでローカルのレポジトリに追加される。デーモンが起動している場合は直でブロードキャストされる。

間違っても機密情報を追加してはならない。追加してしまってもデーモン起動前ならまだなんとかなる。.ipfs ディレクトリを削除すればいい。デーモン起動後の場合、すでにネットワークに拡散されてしまっている。これを完全に削除するのは事実上ほぼ不可能である。

デーモンの起動
$ ipfs daemon

これで起動。ネットワークに接続し活動を始める。

ファイルを取得
$ ipfs get <アドレス>

カレントディレクトリにアドレス名でファイルが落ちてくる。拡張子は無し。

その他

同一のコンテンツには同じアドレスが発行される

IPFSにおいて、異なるファイルでipfs addしてもその内容が同一であれば、インプット元のファイルの違いは全く区別されません。これはすなわちipfs addで追加するものは「ファイル」ではなく「コンテンツ自身」であることを意味しています。またそのコンテンツを参照する場合も、これまでのファイルシステムやインターネットとは異なり、test1.txtやtest2.txtのそのコンテンツがある場所(今回の場合はファイル)を指定するのではなく、QmT78zSu....というコンテンツ自体の識別子(アドレス)を示すハッシュ値を指定します。これがコンテンツ指向の思想です。

🤔
ローカルIPなら一瞬でgetできたけど、グローバルIPだとえらい時間かかる。ふむ。

参考