登录
首页 >  Golang >  Go问答

获取对等节点信息的方法

来源:stackoverflow

时间:2024-03-23 17:15:30 118浏览 收藏

获取对等节点信息是 libp2p 中一项常见任务。通过使用 libp2p.PeerInfo 结构,可以轻松地封装对等节点 ID 及其多重地址。从 libp2p.host 实例构建 PeerInfo 只需创建一个新实例并将其 ID 和地址分配给相应字段即可。这提供了一种简单的方法来获取对等节点信息,而无需手动处理多重地址。

问题内容

我正在尝试从 libp2p.host 实例获取 peerinfo。我可以通过调用 host.addrs() 来获取 multiaddr.multiaddrs 列表,但我无法将它们转换为有效的 peerstore.peerinfo

这是我的尝试,它会出现错误 panic: invalid p2p multiaddr

package main

import (
    "log"

    "github.com/SentimensRG/ctx"
    "github.com/SentimensRG/ctx/sigctx"

    libp2p "github.com/libp2p/go-libp2p"
    ps "github.com/libp2p/go-libp2p-peerstore"
)

var c = ctx.AsContext(sigctx.New())

func main() {
    h0, err := libp2p.New(c)
    if err != nil {
        panic(err)
    }    

    addr0 := h0.Addrs()[1]

    _, err := ps.InfoFromP2pAddr(addr0)
    if err != nil {
        panic(err)
    }
}

如何从 libp2p.host 获取 peerstore.peerinfo


解决方案


PeerInfo 是一个封装对等 id 及其多重地址的结构。要轻松地从主机构建 peerinfo,您只需执行以下操作:

pi := PeerInfo{
        ID: host.ID(),
        Addrs: host.Addrs(),
}

pstore.infofromp2paddr() 需要带有 p2pipfs 组件的多重地址才能填充 peerinfo.id 元素。

也就是说,我们绝对可以更轻松地从 host 获取 peerinfo。我会努力的;-)

今天关于《获取对等节点信息的方法》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>