我正在尝试从一个PeerInfo实例中获取一个libp2p.Host。我可以通过调用multiaddr.Multiaddr来获得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中获得libp2p.Host
发布于 2018-10-24 13:12:00
PeerInfo是一个封装对等ID及其多个加载项的结构。要轻松地从主机构建PeerInfo,只需执行以下操作:
pi := PeerInfo{
ID: host.ID(),
Addrs: host.Addrs(),
}pstore.InfoFromP2pAddr()需要一个带有p2p或ipfs组件的multiaddr来填充PeerInfo.ID元素。
也就是说,我们肯定可以更容易地从一个PeerInfo中获得一个Host。我会努力的;-)
https://stackoverflow.com/questions/52933917
复制相似问题