本月IPFS/Libp2p进展

本月协议实验室连续发布了go-ipfs 0.4.18,js-libp2p 0.24.0和js-ipfs 0.33.0,重要更新如下。

QUIC

go-ipfs终于合入了原计划Q3完成的QUIC(之前是libp2p已经合入了,卡在go-ipfs自己)。QUIC是一个基于UDP的协议,对于IPFS来说,使用QUIC的好处有:

gossipsub

go-ipfs支持了基于gossip的pubsub(订阅发布)。和之前floodsub相比,gossipsub可以降低对带宽的需要,同时可以fallback回floodsub。 gossipsub 的规范:https://github.com/libp2p/specs/tree/master/pubsub/gossipsub floodsub在节点连接时会查询对方是否支持floodsub,如果支持会给对方发一个hello message。floodsub会把所有收到的消息都会转给本节点连接的所有节点。这种简单粗暴的方式会造成消息洪水。。gossipsub希望找到一个平衡点:较快的广播metadata的同时通过可控的路由做数据传输。

用户可以用下面命令打开gossipsub : ipfs config Pubsub.Router gossipsub

代码实现在:https://github.com/libp2p/go-libp2p-pubsub/blob/master/gossipsub.go

WebUI

IPFS官方认为改进后的WebUI比之前好了100倍,下图是笔者在日常开发分支编译的ipfs节点截图。 节点启动五分钟后,可以看到节点数量最做的依次是美国,德国和中国。 在节点页可以看到基于地理位置的分布,主要在北美,亚洲和欧洲: 用文件传输功能上传Filecoin白皮书: 使用Filecoin的CID(QmRWx2YMoaJvsVu6v3oBvNwF9Pfcx2VdGEpLuWcBnkVwLR)查看 Filecoin的白皮书659k,ipfs默认的chunk大小是256k,所以有三个chunk(分别是256k, 256k, 147k),对应上图从root分出的三个点。

js-libp2p进展

IPLD roadmap

IPFS学习资料