先日紹介してもらった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だとえらい時間かかる。ふむ。
参考