Как я могу получить PeerInfo от хоста? - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь получить 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 от libp2p.Host?

1 Ответ

0 голосов
/ 24 октября 2018

PeerInfo - это структура, которая инкапсулирует идентификатор партнера и его мультиаддеры.Чтобы легко построить PeerInfo из хоста, вы можете просто сделать следующее:

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

pstore.InfoFromP2pAddr() требует мультиаддера с компонентом p2p или ipfs для заполнения элемента PeerInfo.ID.

Тем не менее, мы можем определенно упростить получение PeerInfo из Host.Я над этим поработаю; -)

...