代码之家  ›  专栏  ›  技术社区  ›  Louis Thibault

我怎么能从一个主人那里得到一个peerinfo?

  •  0
  • Louis Thibault  · 技术社区  · 6 年前

    我想得到一个 PeerInfo 从A 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)
        }
    }
    

    我怎么能得到一个 皮尔斯托尔皮里诺 从A libp2p.主机 ?

    1 回复  |  直到 6 年前
        1
  •  2
  •   raulk    6 年前

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

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

    pstore.InfoFromP2pAddr() 需要具有 p2p ipfs 组件以填充 PeerInfo.ID 元素。

    也就是说,我们绝对可以更容易地获得 PeerInfo 从A Host . 我会努力的;-)

    推荐文章