libp2p的pubsub功能
阿牛哥 Lv4

libp2p

什么是libp2p

libp2p原先是IPFS的点对点网络传输模块,目前已被独立出来,并且被Ethereum 2.0和Polkadot采用。

简单来看,libp2p包含以下四大功能:

  • 节点寻址
  • 节点连接
  • 安全加密
  • 传输数据

可见,libp2p只是个传输层协议,解决网络中数据如何传输的问题,并不涉及应用,所以可以作为传输层模块嵌入到其他应用中,帮助应用实现点对点功能。

这里不纠结技术细节,想要全面了解,请看官方文档,英文不好的,可以看翻译版。不过在看文档的时候,我发现了libp2p的一个有趣功能:pubsub。

pubsub

pubsub可视为一个消息应用,类似于聊天室。应用中的角色包含发布者和订阅者。发布者发布消息,而订阅者接收发布的消息。

ipfs命令内置了pubsub,包含以下子命令:

  • ipfs pubsub ls:列出主题
  • ipfs pubsub peers:列出开通pubsub的同伴
  • ipfs pubsub pub:发布
  • ipfs pubsub sub:订阅

假设点对点网络中有两个节点:甲和乙,我们让甲订阅主题chatroom,乙发布一条属于chatroom主题的消息:

甲:

ipfs pubsub sub chatroom

乙:

ipfs pubsub pub chatroom ‘Hello everyone!’

此时甲的命令行窗口会输出:

Hello everyone!

当更多的节点加入到chatroom,每个节点都可以在订阅的同时发布消息,那么就形成了一个聊天室。

目前,IPFS上已经有一些基于pubsub的应用了,比如orbit,以后的文章会介绍。

(完)