https://ipfs.github.io/js-ipfs-bitswap/

这层并不复杂,功能仅限于数据交换。

BitSwap

类似于BitTorrent,但:

  • 不局限于单文件,只要哈希相同,传输不同文件中的块也可以。
1
2
Bitswap.prototype.get
get(cid: CID, callback: function (Error, Block)): void
1
2
3
4
5
6
7
8
9
10
11
wantlistForPeer
ledgerForPeer
get
getMany
put
putMany
getWantlist
peers
stat
start
stop

防吸血

  • 节点计算与某节点上传/下载量的差
  • 以一定概率向吸血节点发送数据,吸血越多概率越低

一旦节点决定不发送数据给吸血者,会等待一个冷却时间,默认是10秒。