Skip to content
This repository has been archived by the owner on Feb 23, 2022. It is now read-only.

pex: update pex messages #352

Merged
merged 4 commits into from
Oct 13, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
23 changes: 6 additions & 17 deletions proto/tendermint/p2p/pex.proto
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ option go_package = "github.com/tendermint/tendermint/proto/tendermint/p2p";
import "gogoproto/gogo.proto";

message PexAddress {
string id = 1 [(gogoproto.customname) = "ID"];
string ip = 2 [(gogoproto.customname) = "IP"];
uint32 port = 3;
string url = 1 [(gogoproto.customname) = "URL"];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I recommend marking the removed field tags as reserved so we don't try to reuse them later.

Suggested change
string url = 1 [(gogoproto.customname) = "URL"];
string url = 1 [(gogoproto.customname) = "URL"];
reserved 2, 3; // See https://github.com/tendermint/spec/pull/352


reserved 2, 3; // See https://github.com/tendermint/spec/pull/352
}

message PexRequest {}
Expand All @@ -17,21 +17,10 @@ message PexResponse {
repeated PexAddress addresses = 1 [(gogoproto.nullable) = false];
}

message PexAddressV2 {
string url = 1 [(gogoproto.customname) = "URL"];
}

message PexRequestV2 {}

message PexResponseV2 {
repeated PexAddressV2 addresses = 1 [(gogoproto.nullable) = false];
}

message PexMessage {
reserved 1, 2; // See https://github.com/tendermint/spec/pull/352
oneof sum {
PexRequest pex_request = 1;
PexResponse pex_response = 2;
PexRequestV2 pex_request_v2 = 3;
PexResponseV2 pex_response_v2 = 4;
PexRequest pex_request = 3;
PexResponse pex_response = 4;
}
}
37 changes: 4 additions & 33 deletions spec/p2p/messages/pex.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,6 @@ Pex has one channel. The channel identifier is listed below.

## 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](https://golang.org/pkg/net/url/#URL) instead.

### PexRequest

PexRequest is an empty message requesting a list of peers.
Expand All @@ -33,32 +30,8 @@ PexResponse is an list of net addresses provided to a peer to dial.

### 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](#PexAddressV2) | List of peer addresses available to dial | 1 |

### PexAddressV2

PexAddress provides needed information for a node to dial a peer.
PexAddress provides needed information for a node to dial a peer. This is in the form of a `URL` that gets parsed
into a `NodeAddress`. See [ParseNodeAddress](https://github.com/tendermint/tendermint/blob/f2a8f5e054cf99ebe246818bb6d71f41f9a30faa/internal/p2p/address.go#L43) for more details.

| Name | Type | Description | Field Number |
|------|--------|------------------|--------------|
Expand All @@ -70,7 +43,5 @@ Message is a [`oneof` protobuf type](https://developers.google.com/protocol-buff

| Name | Type | Description | Field Number |
|--------------|---------------------------|------------------------------------------------------|--------------|
| pex_request | [PexRequest](#PexRequest) | Empty request asking for a list of addresses to dial | 1 |
| pex_response | [PexResponse](#PexResponse) | List of addresses to dial | 2 |
| pex_request_v2 | [PexRequestV2](#PexRequestV2) | Empty request asking for a list of addresses to dial | 3 |
| pex_response_v2 | [PexRespinseV2](#PexResponseV2) | List of addresses to dial | 4 |
| pex_request | [PexRequest](#PexRequest) | Empty request asking for a list of addresses to dial | 3 |
| pex_response | [PexResponse](#PexResponse) | List of addresses to dial | 4 |