BitSwap
主な機能
クライアントから要求されたブロックをネットワークから取得する
持っているブロックを,それを欲している他のピアに送信する
ファイルがほしいとき,他のピアにwant-listsを送る
want-list: ほしいブロックのCIDのリスト
各ノードは,他のピアのwant-listを把握している
ブロックを受信するたびに,そのブロックを欲しがっている他のピアがいるかどうかチェックし,欲しがってるピアがいたらそこに送る
Discovery
https://scrapbox.io/files/643a535dd3908b001b17ca94.png
ファイルを持ってるピアを見つけたいとき…
自分が接続しているすべてのピアにwant-haveリクエストを送信
want-haveを受信したノードは,持ってたらhave,持ってなかったらdont-haveレスポンスを送る
どのピアも持ってなかったら,DHTに問い合わせて誰がルートブロックを提供できるか尋ねる
want-haveとwant-blockを分けたのはなぜ? 最初からwant-blockを送ればいいのではkekeho.icon