# 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 (opens new window) 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 (opens new window) 1

# Message

Message is a oneof protobuf type (opens new window). 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