我想得到一个 PeerInfo 从A libp2p.Host 实例。我能得到 multiaddr.Multiaddr 通过打电话 Host.Addrs() ,但我无法将这些转换为有效的 peerstore.PeerInfo 。
PeerInfo
libp2p.Host
multiaddr.Multiaddr
Host.Addrs()
peerstore.PeerInfo
这是我的尝试,它对错误感到恐慌 panic: invalid p2p multiaddr .
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.主机
PeerInfo 是封装对等ID及其多地址的结构。要轻松地从主机构建peerinfo,只需执行以下操作:
pi := PeerInfo{ ID: host.ID(), Addrs: host.Addrs(), }
pstore.InfoFromP2pAddr() 需要具有 p2p 或 ipfs 组件以填充 PeerInfo.ID 元素。
pstore.InfoFromP2pAddr()
p2p
ipfs
PeerInfo.ID
也就是说,我们绝对可以更容易地获得 PeerInfo 从A Host . 我会努力的;-)
Host