Peer Exchange

Channels

Pex has one channel. The channel identifier is listed below.

Name Number
PexChannel 0

Message Types

The current PEX service has two versions. The first uses IP/port pair but since the p2p stack is moving towards a transport agnostic approach, node endpoints require a Protocol and Path hence the V2 version uses a url instead.

PexRequest

PexRequest is an empty message requesting a list of peers.

EmptyRequest

PexResponse

PexResponse is an list of net addresses provided to a peer to dial.

Name Type Description Field Number
addresses repeated PexAddress List of peer addresses available to dial 1

PexAddress

PexAddress provides needed information for a node to dial a peer.

Name Type Description Field Number
id string NodeID of a peer 1
ip string The IP of a node 2
port port Port of a peer 3

PexRequestV2

PexRequest is an empty message requesting a list of peers.

EmptyRequest

PexResponseV2

PexResponse is an list of net addresses provided to a peer to dial.

Name Type Description Field Number
addresses repeated PexAddressV2 List of peer addresses available to dial 1

PexAddressV2

PexAddress provides needed information for a node to dial a peer.

Name Type Description Field Number
url string See golang url 1

Message

Message is a oneof protobuf type. The one of consists of two messages.

Name Type Description Field Number
pex_request PexRequest Empty request asking for a list of addresses to dial 1
pex_response PexResponse List of addresses to dial 2
pex_request_v2 PexRequestV2 Empty request asking for a list of addresses to dial 3
pex_response_v2 PexRespinseV2 List of addresses to dial 4
Decorative Orb