如何从主机获取 PeerInfo?
How can I get a PeerInfo from a Host?
我正在尝试从 libp2p.Host
实例中获取 PeerInfo
。我可以通过调用 Host.Addrs()
获得 multiaddr.Multiaddr
的列表,但我无法将它们转换为有效的 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()
需要具有 p2p
或 ipfs
组件的多地址才能填充 PeerInfo.ID
元素。
也就是说,我们绝对可以更轻松地从 Host
获得 PeerInfo
。我会努力的 ;-)
我正在尝试从 libp2p.Host
实例中获取 PeerInfo
。我可以通过调用 Host.Addrs()
获得 multiaddr.Multiaddr
的列表,但我无法将它们转换为有效的 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()
需要具有 p2p
或 ipfs
组件的多地址才能填充 PeerInfo.ID
元素。
也就是说,我们绝对可以更轻松地从 Host
获得 PeerInfo
。我会努力的 ;-)