如何从主机获取 PeerInfo?

PeerInfo我正在尝试从一个实例中获取一个libp2p.Host。我可以multiaddr.Multiaddr通过调用 获取 s的列表Host.Addrs(),但我无法将它们转换为有效的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)

    }

}

我怎样才能peerstore.PeerInfo从 a 得到 a libp2p.Host?


萧十郎
浏览 105回答 1
1回答

拉丁的传说

PeerInfo是一个封装了对等 ID 及其多地址的结构。要从主机轻松构建 PeerInfo,您只需执行以下操作:pi := PeerInfo{         ID: host.ID(),         Addrs: host.Addrs(), }pstore.InfoFromP2pAddr()p2p需要带有 a或组件的multiaddripfs才能填充PeerInfo.ID元素。也就是说,我们绝对可以让PeerInfo从 a获取 a 变得更容易Host。我会努力的;-)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go