github.com/aakash4dev/cometbft@v0.38.2/spec/p2p/legacy-docs/messages/pex.md (about) 1 --- 2 order: 6 3 --- 4 5 # Peer Exchange 6 7 ## Channels 8 9 Pex has one channel. The channel identifier is listed below. 10 11 | Name | Number | 12 |------------|--------| 13 | PexChannel | 0 | 14 15 ## Message Types 16 17 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, 18 node endpoints require a `Protocol` and `Path` hence the V2 version uses a [url](https://golang.org/pkg/net/url/#URL) instead. 19 20 ### PexRequest 21 22 PexRequest is an empty message requesting a list of peers. 23 24 > EmptyRequest 25 26 ### PexResponse 27 28 PexResponse is an list of net addresses provided to a peer to dial. 29 30 | Name | Type | Description | Field Number | 31 |-------|------------------------------------|------------------------------------------|--------------| 32 | addresses | repeated [PexAddress](#pexaddress) | List of peer addresses available to dial | 1 | 33 34 ### PexAddress 35 36 PexAddress provides needed information for a node to dial a peer. 37 38 | Name | Type | Description | Field Number | 39 |------|--------|------------------|--------------| 40 | id | string | NodeID of a peer | 1 | 41 | ip | string | The IP of a node | 2 | 42 | port | port | Port of a peer | 3 | 43 44 45 ### PexRequestV2 46 47 PexRequest is an empty message requesting a list of peers. 48 49 > EmptyRequest 50 51 ### PexResponseV2 52 53 PexResponse is an list of net addresses provided to a peer to dial. 54 55 | Name | Type | Description | Field Number | 56 |-------|------------------------------------|------------------------------------------|--------------| 57 | addresses | repeated [PexAddressV2](#pexresponsev2) | List of peer addresses available to dial | 1 | 58 59 ### PexAddressV2 60 61 PexAddress provides needed information for a node to dial a peer. 62 63 | Name | Type | Description | Field Number | 64 |------|--------|------------------|--------------| 65 | url | string | See [golang url](https://golang.org/pkg/net/url/#URL) | 1 | 66 67 ### Message 68 69 Message is a [`oneof` protobuf type](https://developers.google.com/protocol-buffers/docs/proto#oneof). The one of consists of two messages. 70 71 | Name | Type | Description | Field Number | 72 |--------------|---------------------------|------------------------------------------------------|--------------| 73 | pex_request | [PexRequest](#pexrequest) | Empty request asking for a list of addresses to dial | 1 | 74 | pex_response | [PexResponse](#pexresponse)| List of addresses to dial | 2 | 75 | pex_request_v2| [PexRequestV2](#pexrequestv2)| Empty request asking for a list of addresses to dial| 3 | 76 | pex_response_v2| [PexRespinseV2](#pexresponsev2)| List of addresses to dial | 4 |