ipfs daemon, ipfs addipfs dht findprovsコマンドを使う。

前回まで

情報源

IPFSネットワークへ接続する

ipfs daemon
Initializing daemon...
Kubo version: 0.14.0
Repo version: 12
System version: arm/linux
Golang version: go1.18.3
2022/08/01 13:54:29 failed to sufficiently increase receive buffer size (was: 176 kiB, wanted: 2048 kiB, got: 352 kiB). See <https://github.com/lucas-clemente/quic-go/wiki/UDP-Receive-Buffer-Size> for details.
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/127.0.0.1/udp/4001/quic
Swarm listening on /ip4/192.168.11.5/tcp/4001
Swarm listening on /ip4/192.168.11.5/udp/4001/quic
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /ip6/::1/udp/4001/quic
Swarm listening on /p2p-circuit
Swarm announcing /ip4/127.0.0.1/tcp/4001
Swarm announcing /ip4/127.0.0.1/udp/4001/quic
Swarm announcing /ip4/192.168.11.5/tcp/4001
Swarm announcing /ip4/192.168.11.5/udp/4001/quic
Swarm announcing /ip6/::1/tcp/4001
Swarm announcing /ip6/::1/udp/4001/quic
API server listening on /ip4/127.0.0.1/tcp/5001
WebUI: <http://127.0.0.1:5001/webui>
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready

新しい端末を開いて次のコマンドを打つ。接続ピアが表示される。

ipfs swarm peers | head
/ip4/1.231.40.202/tcp/52820/p2p/QmPW4mr7B1sknGhNeeiUr3nB4uhXFps2U7EA6ipHRnMMAA
/ip4/100.16.163.230/tcp/4001/p2p/12D3KooWREkmcKwwzJytMwbR3t6hDQm1FHbfzrKUxS8CyrXeGuCs
/ip4/100.25.87.100/udp/4001/quic/p2p/12D3KooWSMa1TunQ5aYkSwZmDWneNLGkK5fjkhamKgUpYa1x8U5j
/ip4/103.82.230.26/udp/4001/quic/p2p/12D3KooWEAFEmdSR7YduAbJ2hVt7YVHQCNCY9LrEv9KaW13MWgLd
/ip4/104.131.131.82/udp/4001/quic/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ
/ip4/107.155.65.76/udp/4001/quic/p2p/12D3KooW9ycxcLJYFG7porA67X9owv5ZLMgjEnHPxEqopAD5YSAk
/ip4/110.164.233.73/tcp/4001/p2p/12D3KooWSvYLxmGgDHMwt4q2ubdDfpobHnHZjgcoGbNkAW828E8e
/ip4/114.39.228.96/tcp/54611/p2p/QmU7c3JDZKTHQSCpFVjfMjXnpKWXfEnGWC39BubBRbpBLb
/ip4/116.235.136.66/udp/50350/quic/p2p/12D3KooWAjkTkW3Xrgjz7xdTUP7y1n7eFHKwMTRxAoHKWY6H99JH
/ip4/117.41.247.227/udp/4001/quic/p2p/12D3KooWSHZDCThjDsGMjpS4FAmwZpgth9tNW8u3y5CkVAW3XiXp

コンテンツを保持しているピア

hello worldコンテンツを保持しているピアを一覧する。

ipfs dht findprovs QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
12D3KooWRgEQzCt1LKMiqo8nqRuyXVPH6cCiZCDK3zjUMu5N2e6Q
Qmd1d1Amxgfz3ux4XB7hQ81y23WKu2FvKA4jwTmZvPafdt
QmWDAZgHt6XASA7sh2UmjRCoLV4qt3CdGPTRhWKB3az9gP
12D3KooWCJ4Jun7Xc4JT6u6n48hvgFAHrf9GMUESZhFLS9ZcHr92
12D3KooWMjRZmFHCh9eCGPzKTSyAcA4nnFWTDvkUjWxajU8S63kD
12D3KooWPqiRdyftWpbHDFQbEqgxubeCTWZCNxqPedzEhRY1Xx2j
12D3KooWFxzpgidceisUH2AY1sS7rNpihrZEUbN9iwM3JsQVVoK7
12D3KooWJiCCSti3PwKeehnRQdQ1ihYQwSkywYuyMkhDLGZV1now
12D3KooWG2r9yNcrkmQYPeJ4jgKM4CvFXVdWMZdCDseqhvz6ibVK
12D3KooWLDf6KCzeMv16qPRaJsTLKJ5fR523h65iaYSRNfrQy7eU
12D3KooWM2fVM5swcSxACNAzEk3KQnvesV7fv7hqFNfdKj6LUq9k
12D3KooWHe5VbZHnrYMZkqdw3XTii7j3Kn3HmaKHy6cy54U63qEt
12D3KooWRrtGQCLDN8VddCW3cnAkzyAF6QTbkysLoJJqfA96Jki1
QmQzqxhK82kAmKvARFZSkUVS6fo9sySaiogAnx5EnZ6ZmC
12D3KooWJNn4H5XVihwD4oEbouxJ7yyCAyLSsCB57XCHsLmcifRe
12D3KooWAevVw4PXJADwRtfvS3WEQLHVZPuJBcfMYJ869WQSXKUn
12D3KooWS7tJzwpXBcDzfg2BKwDzPn5rvRcyx873nKpyrCsTmjyF
12D3KooWN4KT1S6yvcHWxLtSZNfUdtpzweR9eWUku3PHbhGuEXVa
12D3KooWHm46xweJhY2UoRX79iXNmv1MTapTqcSqDCpd7urz4DrB
12D3KooWSmcmvVdVNjHAPbAEbaHoNW6dFeNonh8x326jveEmY8Ek

あたらしいコンテンツを登録する

まだ他のピアが誰も持ってない新しいコンテンツを登録してみる。

作成

ip addr | sha256sum > ip_hash.txt
$ cat ip_hash.txt
bf7604191e9553e68e557f9a7a4d178149fe8afdc82a55121d74436316566379  -

ip addr出力結果にはMACアドレスが含まれるため世界でただひとつのはず。ということだと思う。

IPFSリポジトリに追加

ipfs add ip_hash.txt
added QmeS9bgskbbczAgBHRXeFox9XsouXD7NhnVrD5VVSiH93b ip_hash.txt
 68 B / 68 B [================================================================================================================] 100.00%

ブラウザURL欄で以下のように入力する。

https://ipfs-gateway.decentralized-web.jp/ipfs/QmeS9bgskbbczAgBHRXeFox9XsouXD7NhnVrD5VVSiH93b

するとURLが以下のように...localhost:8080/となる。これはローカルにしか存在しない証拠。

http://bafybeihpeohwls7rgik7q4xedoaes34d7oazyvvyxfumf63e7sxnvnxfmy.ipfs.localhost:8080/

同じくブラウザにIPFS Companionをインストール後URL欄に以下を入力する。

ipfs://QmeS9bgskbbczAgBHRXeFox9XsouXD7NhnVrD5VVSiH93b

するとURLが以下のように...localhost:8080/となる。やはりローカルを示す。

http://bafybeihpeohwls7rgik7q4xedoaes34d7oazyvvyxfumf63e7sxnvnxfmy.ipfs.localhost:8080/

IPFSネットワークに登録

ローカルにしか存在しない新コンテンツをIPFSネットワークに登録する。

ipfs dht findprovs QmeS9bgskbbczAgBHRXeFox9XsouXD7NhnVrD5VVSiH93b
12D3KooWRgEQzCt1LKMiqo8nqRuyXVPH6cCiZCDK3zjUMu5N2e6Q

45秒くらいかかった。

ブラウザで以下URLを入力すると、先述と同様のURLに変換された。これでは他のピアが所持しているのかどうかわからない。

https://ipfs-gateway.decentralized-web.jp/ipfs/QmeS9bgskbbczAgBHRXeFox9XsouXD7NhnVrD5VVSiH93b

所有ピアを探す。

ipfs dht findprovs QmeS9bgskbbczAgBHRXeFox9XsouXD7NhnVrD5VVSiH93b
12D3KooWRgEQzCt1LKMiqo8nqRuyXVPH6cCiZCDK3zjUMu5N2e6Q

ひとつしか出なかった。これって自分だけってことなの?

パブリックゲートウェイとやらの問題なのか? 以下のようにしてもやはり同様のURL。

https://ipfs.io/ipfs/QmeS9bgskbbczAgBHRXeFox9XsouXD7NhnVrD5VVSiH93b
http://bafybeihpeohwls7rgik7q4xedoaes34d7oazyvvyxfumf63e7sxnvnxfmy.ipfs.localhost:8080/

所有ピアがひとつだけだし、URLにはlocalhostとあるし。はたして本当に共有されているのか?

よくわからなかった。

ちょっとググったらipfs add パスのあとでipfs pin add ハッシュコマンドを使うことで永続化されるらしい。それが必要なのかな?