
libp2p
文章平均质量分 92
kk3909
区块链 云计算
展开
-
Testground初体验
Testground是一个用于测试(testing) 、基准测试(benchmarking)、模拟分布式和p2p系统的平台。它设计为多语言且与运行时无关,可以需要时才从2个实例优雅地扩展到10000个实例。目前主要用于测试ipfs和libp2p。编写测试计划需要Testground相关sdk,目前官方只提供go-sdk和js-sdk(libp2p目前只有go和js版比较完整)。原创 2020-12-16 14:05:58 · 1207 阅读 · 1 评论 -
【go-libp2p源码剖析】DHT Kademlia 迭代查询
文章目录简介主要结构时序图函数说明runLookupWithFollowuprunQueryrunrecordPeerIsValuableconstructLookupResultspawnQueryqueryPeerdialPeerupdateStateisReadyToTerminateisLookupTerminationGetClosestNInStates简介query是整个dht的核心主要结构// query represents a single DHT query.type qu原创 2020-12-12 13:06:25 · 1502 阅读 · 1 评论 -
【go-libp2p源码剖析】DHT Kademlia 路由
文章目录简介接口定义接口实现ProvideFindProvidersFindProvidersAsyncFindPeerPutValueGetValueSearchValueValidator.Select简介接口定义整个dht routing共定义了8个方法:Provide、FindProvidersAsync、FindPeer、PutValue、GetValue、SearchValue、Bootstrap//间接的值提供层。它用于查找谁拥有相关内容。//内容由CID(内容标识符)标识,该CID原创 2020-12-14 14:18:09 · 1215 阅读 · 0 评论 -
【go-libp2p源码剖析】DHT Kademlia协议消息处理
文章目录简介Protobuf结构定义Protobuf消息组装、发送(客户端)dht.getValueSingle(dht.go)dht.putValueToPeer(dht.go)dht.findProvidersSingle(dht.go)dht.findPeerSingle(dht.go)dht.Ping(dht.go)dht.Provide(routing.go)Protobuf消息发送Protobuf消息解码处理(服务端)handleFindPeerhandlePinghandleGetValueh原创 2020-12-14 07:33:25 · 1840 阅读 · 0 评论 -
【go-libp2p源码剖析】DHT 路由刷新管理器
文章目录RtRefreshManager初始化DefaultBootstrapPeers启动rtRefreshManager循环RtRefreshManager用于dht路由表刷新。网络上的节点可能随时会离线,RtRefreshManager提供定时(每10分钟)检测机制,如果节点离线,则将该节点从路由表中剔除出去,待所有节点检测完后,刷新k桶数据(填充k桶)。它提供一个Refresh方法,Refresh有一个force参数,如果force参数设置为true,则所有存储桶都将被强制刷新,而与它们的最后原创 2020-12-14 07:32:28 · 1260 阅读 · 0 评论 -
如何用rust重写go-libp2p的swarm拨号
文章目录简介代码结构总体流程简介最近我们在libp2p-rs上完成拨号功能的开发,功能基本上和go-libp2p保持一致,稍微做了精简。去掉了go-libp2p拨号的部分功能,如DialSync中的同步拨号限制(go-libp2p拨号的实现详请参考另一篇文章)。下面对拨号功能的实现做一个详细的说明。代码结构仓库地址:https://github.com/netwarps/libp2p-rs.git拨号相关代码主要分布在swarm/src/lib.rs和swarm/src/dial.rs两个文件中原创 2020-11-17 17:19:16 · 630 阅读 · 0 评论 -
【go-libp2p源码剖析】Swarm拨号
libp2p swarm是用于libp2p网络的“低级”接口,它使您可以更精细地控制系统的各个方面。swarm可以建立监听,也可以向其他主机拨号建立新的连接(比如和某个主机建立tcp连接),而这里所指的拨号其实就是建立出站连接的过程,它的实现逻辑较为复杂,这里做一个梳理。原创 2020-11-06 17:54:37 · 1622 阅读 · 0 评论