package util import ( "errors" "github.com/libp2p/go-libp2p/core/peer" pbv2 "github.com/libp2p/go-libp2p/p2p/protocol/circuitv2/pb" ma "github.com/multiformats/go-multiaddr" ) func PeerToPeerInfoV2(p *pbv2.Peer) (peer.AddrInfo, error) { if p == nil { return peer.AddrInfo{}, errors.New("nil peer") } id, err := peer.IDFromBytes(p.Id) if err != nil { return peer.AddrInfo{}, err } addrs := make([]ma.Multiaddr, 0, len(p.Addrs)) for _, addrBytes := range p.Addrs { a, err := ma.NewMultiaddrBytes(addrBytes) if err == nil { addrs = append(addrs, a) } } return peer.AddrInfo{ID: id, Addrs: addrs}, nil } func PeerInfoToPeerV2(pi peer.AddrInfo) *pbv2.Peer { addrs := make([][]byte, 0, len(pi.Addrs)) for _, addr := range pi.Addrs { addrs = append(addrs, addr.Bytes()) } return &pbv2.Peer{ Id: []byte(pi.ID), Addrs: addrs, } }