• https://docs.ipfs.tech/concepts/bitswap/

  • IPFSにおけるデータExchangeプロトコル

  • 主な機能

    • クライアントから要求されたブロックをネットワークから取得する
    • 持っているブロックを,それを欲している他のピアに送信する
  • ファイルがほしいとき,他のピアにwant-listsを送る

    • want-list: ほしいブロックのCIDのリスト
  • 各ノードは,他のピアのwant-listを把握している

    • ブロックを受信するたびに,そのブロックを欲しがっている他のピアがいるかどうかチェックし,欲しがってるピアがいたらそこに送る

Discovery

  • ファイルを持ってるピアを見つけたいとき…
    • 自分が接続しているすべてのピアにwant-haveリクエストを送信
      • want-haveにはファイルのルートブロックのCIDが含まれる(Merkle Treeの根)
    • want-haveを受信したノードは,持ってたらhave,持ってなかったらdont-haveレスポンスを送る
    • どのピアも持ってなかったら,DHTに問い合わせて誰がルートブロックを提供できるか尋ねる
    • want-haveとwant-blockを分けたのはなぜ? 最初からwant-blockを送ればいいのでは(kekeho)