Used to acquire and send blocks to peers in IPFS. It’s slow.
Nodes running bitswap send out their wantlists. Peer nodes keep track of the wants their peers have and sends it if they have it.
Discovery
User asks for the root node of the DAG of blocks they want.
sequenceDiagram PeerA ->> PeerB : want-have CID1? PeerA ->> PeerC : want-have CID1? PeerA ->> PeerD : want-have CID1? PeerB ->> PeerA : HAVE CID1 PeerA ->> PeerB : want-block CID1 PeerC ->> PeerA : HAVE CID1 PeerD ->> PeerA : HAVE CID1 PeerB ->> PeerA : Block (CID1)

Transfer
If none of the peers have the root block, bitswap queries the DHT.