IPFSリポジトリ作成
IPFSリポジトリにファイルを追加したり参照したりする。
前回まで
情報源
IPFS基本コマンド
コマンド | 概要 |
---|---|
ipfs init |
リポジトリ作成 |
ipfs add <path> |
指定したパスのファイルを追加する |
ipfs cat <ref> |
指定したデータを表示する |
ipfs get <ref> |
指定したデータをダウンロードする |
ipfs ls <ref> |
指定したデータのリンクを一覧する |
ipfs refs <ref> |
指定したデータのハッシュを一覧する |
詳しくはipfs help
コマンド出力を参照。
IPFSリポジトリ作成
ipfs init
ipfs init
すると~/.ipfs
が作成される。これがリポジトリ。カレントがどこであれホーム直下に固定名で作成されるらしい。
ipfs init
generating ED25519 keypair...done
peer identity: 12D3KooWLA3iyFsMAq27Yo5h7ZH7pfiWGop4YpoLeq6ZhDmo975G
initializing IPFS node at /home/pi/.ipfs
Error: ipfs configuration file already exists!
Reinitializing would overwrite your keys.
ipfs cat
コンテンツを取得する。
ipfs cat /ipfs/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/readme
Hello and Welcome to IPFS!
██╗██████╗ ███████╗███████╗
██║██╔══██╗██╔════╝██╔════╝
██║██████╔╝█████╗ ███████╗
██║██╔═══╝ ██╔══╝ ╚════██║
██║██║ ██║ ███████║
╚═╝╚═╝ ╚═╝ ╚══════╝
If you're seeing this, you have successfully installed
IPFS and are now interfacing with the ipfs merkledag!
-------------------------------------------------------
| Warning: |
| This is alpha software. Use at your own discretion! |
| Much is missing or lacking polish. There are bugs. |
| Not yet secure. Read the security notes for more. |
-------------------------------------------------------
Check out some of the other files in this directory:
./about
./help
./quick-start <-- usage examples
./readme <-- this file
./security-notes
ipfs add
内容が同じならハッシュも同じ
hello world
と入力したtest1.txt
ファイルを作成する。
echo "hello world" > test1.txt
cat test1.txt
test1.txt
ファイルの内容を表示して確認する。
hello world
test1.txt
ファイルをIPFSリポジトリに追加する。
ipfs add test1.txt
added QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o test1.txt
12 B / 12 B [================================================================================================================] 100.00%
表示されたQmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
はtest1.txt
の内容をハッシュ化したもの。同時にこれがコンテンツの識別子になる。さっそくcat
コマンドで表示してみる。
ipfs cat QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
hello world
たとえファイルパスが違っても、内容が同じであれば同じハッシュになる。
echo "hello world" > test2.txt
cat test2.txt
ipfs add test2.txt
added QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o test2.txt
12 B / 12 B [================================================================================================================] 100.00%
パイプで送っても同じハッシュになる。
echo "hello world" | ipfs add
added QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
12 B / 12 B [================================================================================================================] 100.00%
ipfs cat QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
hello world
ディレクトリ
mkdir testdir
echo "hello world" > test1.txt
echo "hello world" > test2.txt
mv test*.txt testdir/
ls testdir/
test1.txt test2.txt
ディレクトリを丸ごとadd
する。
ipfs add -r testdir
added QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o testdir/test1.txt
added QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o testdir/test2.txt
added QmWpxMfLZcDVeMcBJXoZbqpaeXdzXBxoBScYSSb8ctzu8W testdir
24 B / 24 B [================================================================================================================] 100.00%
1, 2行目のハッシュはこれまで同様hello world
をハッシュ化したもの。
3行目のtestdir
ディレクトリのハッシュは新しい。ipfs ls
コマンドで見てみる。
ipfs ls QmWpxMfLZcDVeMcBJXoZbqpaeXdzXBxoBScYSSb8ctzu8W
QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o 12 test1.txt
QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o 12 test2.txt
ディレクトリ配下のファイルは次のように参照することもできる。
ipfs cat QmWpxMfLZcDVeMcBJXoZbqpaeXdzXBxoBScYSSb8ctzu8W/test1.txt
hello world
もちろん以下でも同じように参照できる。
ipfs cat QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
hello world
IPFSオブジェクト
ipfs add
でファイルをIPFSオブジェクトとして追加してきた。その実態はリンクとデータである。それを取得するコマンドが以下。
ディレクトリ。
ipfs object get QmWpxMfLZcDVeMcBJXoZbqpaeXdzXBxoBScYSSb8ctzu8W
{"Links":[{"Name":"test1.txt","Hash":"QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o","Size":20},{"Name":"test2.txt","Hash":"QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o","Size":20}],"Data":"\u0008\u0001"}
ファイル。
ipfs object get QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
{"Links":[],"Data":"\u0008\u0002\u0012\u000chello world\n\u0018\u000c"}
ハッシュ | 内容 |
---|---|
QmWpxMfLZcDVeMcBJXoZbqpaeXdzXBxoBScYSSb8ctzu8W |
testdir ディレクトリ |
QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o |
hello world ファイル |
IPFS Companion
IPFS Companionはipfs://ハッシュ
とすると表示できるブラウザ拡張。
たとえば以下はhello world
のテキストが表示される。
ipfs://QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
このときURLが以下のように変換される。
https://ipfs.io/ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
以下は猫の画像が表示される。
ipfs://QmZZrDCuCV5A3WsxbbC6UCtrHtNs2eVyfJwF7JcJJoJGwV
このときURLが以下のように変換される。
https://ipfs.io/ipfs/QmZZrDCuCV5A3WsxbbC6UCtrHtNs2eVyfJwF7JcJJoJGwV