From fd8ff2bb1a65bec246644ccdbb3d037327b2c2ee Mon Sep 17 00:00:00 2001 From: Kolby Moroz Liebl <31669092+KolbyML@users.noreply.github.com> Date: Thu, 6 Jun 2024 18:08:46 -0600 Subject: [PATCH 1/8] Add EIP: Portal Wire Protocol extensible generic overlay over discv5 --- EIPS/eip-template.md | 408 ++++++++++++++++++++++ assets/eip-template/bep_0029-rst_post.pdf | Bin 0 -> 174109 bytes 2 files changed, 408 insertions(+) create mode 100644 EIPS/eip-template.md create mode 100644 assets/eip-template/bep_0029-rst_post.pdf diff --git a/EIPS/eip-template.md b/EIPS/eip-template.md new file mode 100644 index 00000000000000..843f5704a53f06 --- /dev/null +++ b/EIPS/eip-template.md @@ -0,0 +1,408 @@ +--- +eip: +title: Portal Wire Protocol a framework for discv5 +description: A generic framework over discv5 which allows new overlay protocols to be built without reimplementing DHT primitives +author: Kolby ML (@KolbyML) +discussions-to: https://ethereum-magicians.org/t/add-eip-portal-wire-protocol-a-framework-for-discv5/20230 +status: Draft +type: Standards Track +category: Networking +created: 2024-06-06 +--- + +## Abstract + +Discv5 is an extensible protocol which allows building new protocols on top of it. We propose a generic framework for building new DHT networks on top of Discv5 referred to as the `Portal Wire Protocol` + +## Motivation + +Discv5 is implemented in many languages, has built in packet encryption, used by consensus clients, and allows building sub-protocols using it's `TalkRequest` message type. + +With the ubiquity of Discv5 in Ethereum and it being implemented in many languages, building new protocols using Discv5 as a base is beneficial as it enables quicker implementation times, stability as Discv5 is already used in production, as well as inheriting improvements and optimizations discovered by Discv5. + +Building new DHT sub-protocols on Discv5 all share the same primitive message types. By defining a framework `Portal Wire Protocol` new networks can be built without reimplementing the DHT primitives reducing the workload for new networks, well inheriting the performance optimizations of the base `Portal Wire Protocol` implementation for all overlay networks. + +## Specification + + +The Portal wire protocol is the default p2p protocol by which Portal nodes communicate. + +The different sub-protocols within the Portal network **MAY** use this wire protocol, but they **MUST** remain separated per network. + +This is done at the [Node Discovery Protocol v5](https://github.com/ethereum/devp2p/blob/56a498ee34ee0fb69ffd33dda026d632af4c4048/discv5/discv5-wire.md#talkreq-request-0x05) layer, by providing a different protocol byte string, per protocol, in the `TALKREQ` message. + +The value for the protocol byte string in the `TALKREQ` message is specified as protocol identifier per network. + +Each network using the wire protocol **MUST** specify which messages are supported. + +Unsupported messages **SHOULD** receive a `TALKRESP` message with an empty payload. + +### Protocol identifiers + +All protocol identifiers consist of two bytes. The first byte is "`P`" (`0x50`), to indicate "the Portal network", the second byte is a specific network identifier. + +#### Mainnet identifiers +Currently defined mainnet protocol identifiers: +- Inclusive range of `0x5000` - `0x5009`: Reserved for future networks or network upgrades +- `0x500A`: Execution State Network +- `0x500B`: Execution History Network +- `0x500C`: Beacon Chain Network +- `0x500D`: Execution Canonical Transaction Index Network +- `0x500E`: Execution Verkle State Network +- `0x500F`: Execution Transaction Gossip Network +#### Angelfood identifiers +Currently defined `angelfood` protocol identifiers: +- `0x504A`: Execution State Network +- `0x504B`: Execution History Network +- `0x504C`: Beacon Chain Network +- `0x504D`: Execution Canonical Transaction Index Network +- `0x504E`: Execution Verkle State Network +- `0x504F`: Execution Transaction Gossip Network + +### Content Keys and Content IDs + +Content keys are used to request or offer specific content data. As such the content key and content data can be represented as a key:value pair. + +Content keys are passed as byte strings to the messages defined in the Portal wire protocol. How they are encoded is defined per content network specification. + +Content IDs are derived from the content keys and are used to identify where the content is located in the network. The derivation is defined per content network specification. + +#### SHA256 Content ID Derivation Function + +The SHA256 Content ID derivation function is defined as: + +``` +content_id = sha256(content_key) +``` + + +### Nodes and Node IDs + +Nodes in the portal network are represented by their [EIP-778 Ethereum Node Record (ENR)](./eip-778.md) from the Discovery v5 network. A node's `node-id` is derived according to the node's identity scheme, which is specified in the node's ENR. A node's `node-id` represents its address in the DHT. Node IDs are interchangeable between 32 byte identifiers and 256 bit integers. + +### Request - Response Messages + +The messages in the protocol are transmitted using the `TALKREQ` and `TALKRESP` messages from the base [Node Discovery Protocol](https://github.com/ethereum/devp2p/blob/56a498ee34ee0fb69ffd33dda026d632af4c4048/discv5/discv5-wire.md#talkreq-request-0x05). + +All messages in the protocol have a request-response interaction: +* Request messages **MUST** be sent using a `TALKREQ` message. +* Response messages **MUST** be sent using the corresponding `TALKRESP` message. + +All messages are encoded as an [SSZ Union](https://github.com/ethereum/consensus-specs/blob/04f5ec595d78c0e3e43794fb7644c18f2584770d/ssz/simple-serialize.md#union) type. + +``` +message = Union[ping, pong, find_nodes, nodes, find_content, content, offer, accept] +serialized_message = serialize(message) +``` + +The `serialized_message` is the payload passed to the `request` field of the `TALKREQ` message or the `reponse` field of the `TALKRESP` message. + +The type values for the `Union` are the SSZ Containers specified per message type. + +The transmission of `content` data that is too large to fit a single packet is done over [uTP](../assets/eip-template/bep_0029-rst_post.pdf). + +#### Aliases + +For convenience we alias: +- `ByteList` to `List[uint8, max_length=2048]` + +#### Message Types + +##### Ping (0x00) + +Request message to check if a node is reachable, communicate basic information about our node, and request basic information about the recipient node. + +``` +selector = 0x00 +ping = Container(enr_seq: uint64, custom_payload: ByteList) +``` + +* `enr_seq`: The node's current sequence number of their ENR record. +* `custom_payload`: Custom payload specified per the network. + +##### Pong (0x01) + +Response message to Ping(0x00) + +``` +selector = 0x01 +pong = Container(enr_seq: uint64, custom_payload: ByteList) +``` + +* `enr_seq`: The node's current sequence number of their ENR record. +* `custom_payload`: Custom payload specified per the network. + +##### Find Nodes (0x02) + +Request message to get ENR records from the recipient's routing table at the given logarithmic distances. The distance of `0` indicates a request for the recipient's own ENR record. + +``` +selector = 0x02 +find_nodes = Container(distances: List[uint16, max_length=256]) +``` + +* `distances`: a list of distances for which the node is requesting ENR records for. + * Each distance **MUST** be within the inclusive range `[0, 256]` + * Each distance in the list **MUST** be unique. + +##### Nodes (0x03) + +Response message to FindNodes(0x02). + +``` +selector = 0x03 +nodes = Container(total: uint8, enrs: List[ByteList, max_length=32]) +``` + +* `total`: The total number of `Nodes` response messages being sent. +* `enrs`: List of byte strings, each of which is an RLP encoded ENR record. + * Individual ENR records **MUST** correspond to one of the requested distances. + * It is invalid to return multiple ENR records for the same `node_id`. + * The ENR record of the requesting node **SHOULD** be filtered out of the list. + +> Note: If the number of ENR records cannot be encoded into a single message, then they should be sent back using multiple messages, with the `total` field representing the total number of messages that are being sent. + +##### Find Content (0x04) + +Request message to get the `content` with `content_key`, **or**, in case the recipient does not have the data, a list of ENR records of nodes that are closest to the requested content. + +``` +selector = 0x04 +find_content = Container(content_key: ByteList) +``` + +* `content_key`: The key for the content being requested. The encoding of `content_key` is specified per the network. + +##### Content (0x05) + +Response message to Find Content (0x04). + +This message can contain either a uTP connection ID, a list of ENRs or the +requested content. + +``` +selector = 0x05 +content = Union[connection_id: Bytes2, content: ByteList, enrs: List[ByteList, 32]] +``` + +* `connection_id`: Connection ID to set up a uTP stream to transmit the requested data. + * Connection ID values **SHOULD** be randomly generated. +* `content`: byte string of the requested content. + * This field **MUST** be used when the requested data can fit in this single response. +* `enrs`: List of byte strings, each of which is an RLP encoded ENR record. + * The list of ENR records **MUST** be closest nodes to the requested content that the responding node has stored. + * The set of derived `node_id` values from the ENR records **MUST** be unique. + * The ENR record of the requesting & responding node **SHOULD** be filtered out of the list. + +If the node does not hold the requested content, and the node does not know of any nodes with eligible ENR values, then the node **MUST** return `enrs` as an empty list. + +Upon *sending* this message with a `connection_id`, the sending node **SHOULD** *listen* for an incoming uTP stream with the generated `connection_id`. + +Upon *receiving* this message with a `connection_id`, the receiving node **SHOULD** *initiate* a uTP stream with the received `connection_id`. + +###### `content` Union Definition + +The `Union` defined in the `content` field of the `Content (0x05)` message is defined as below: + +**`connection_id`** +``` +selector = 0x00 +ssz-type = Bytes2 +``` + +**`content`** +``` +selector = 0x01 +ssz-type = ByteList +``` + +**`enrs`** +``` +selector = 0x02 +ssz-type = List[ByteList, 32] +``` + +##### Offer (0x06) + +Request message to offer a set of `content_keys` that this node has `content` available for. + +``` +selector = 0x06 +offer = Container(content_keys: List[ByteList, max_length=64]) +``` + +* `content_keys`: A list of encoded `content_key` entries. The encoding of each `content_key` is specified per the network. + +##### Accept (0x07) + +Response message to Offer (0x06). + +Signals interest in receiving the offered data from the corresponding Offer message. + +``` +selector = 0x07 +accept = Container(connection_id: Bytes2, content_keys: BitList[max_length=64]] +``` + +* `connection_id`: Connection ID to set up a uTP stream to transmit the requested data. + * ConnectionID values **SHOULD** be randomly generated. +* `content_keys`: Signals which content keys are desired. + * A bit-list corresponding to the offered keys with the bits in the positions of the desired keys set to `1`. + +Upon *sending* this message, the requesting node **SHOULD** *listen* for an incoming uTP stream with the generated `connection_id`. + +Upon *receiving* this message, the serving node **SHOULD** *initiate* a uTP stream with the received `connection_id`. + +###### Content Encoding + +Up to 64 content items can be sent over the uTP stream after an `Offer` request and `Accept` response. + +In order to be able to discern these different content items, a variable length unsigned integer (variant) MUST be prefixed to each content item. +The variant MUST hold the size, in bytes, of the consecutive content item. + +The variant encoding used is Unsigned LEB128. +The maximum size allowed for this application is limited to `uint32`. + +The content item itself MUST be encoded as is defined for each specific network and content type. + +The encoded data of n encoded content items to be send over the stream can be formalized as: +```py +# n encoded content items to be send over the stream, with n <= 64 +encoded_content_list = [content_0, content_1, ..., content_n] + +# encoded data to be send over the stream +encoded_data = variant(len(content_0)) + content_0 + variant(len(content_1)) + content_1 + ... + variant(len(content_n)) + content_n +``` + +#### Distance Function + +Each sub protocol must specify a distance function for computing the distance +between either two nodes in the network or a node and a piece of content. + +##### XOR Distance Function + +The XOR `distance` function is defined as: + +``` +distance(a: uint256, b: uint256) = a XOR b +``` + +Similarly, we define a `logdistance` function identically to the Discovery v5 network. + +``` +logdistance(a: uint256, b: uint256) = log2(distance(a, b)) +``` + +### Routing Table + +Most networks that use the Portal Wire Protocol will form an independent DHT which requires individual nodes to maintain a routing table. + +#### Standard Routing Table + +We define the "standard" routing table as follows: + +We adapt the node state from the Discovery v5 protocol. Assume identical definitions for the replication parameter `k` and a node's k-bucket table. Also assume that the routing table follows the structure and evolution described in section 2.4 of the Kademlia paper. + +Nodes keep information about other nodes in a routing table of k-buckets. This routing table is specific to a sub protocol and is distinct from the node's underlying Discovery v5 routing table or the routing table of any other sub protocols. + +A node should regularly refresh the information it keeps about its neighbors. We follow section 4.1 of the Kademlia paper to improve efficiency of these refreshes. A node delays `Ping` checks until it has a useful message to send to its neighbor. + +When a node discovers some previously unknown node, and the corresponding k-bucket is full, the newly discovered node is put into a replacement cache sorted by time last seen. If a node in the k-bucket fails a liveness check, and the replacement cache for that bucket is non-empty, then that node is replaced by the most recently seen node in the replacement cache. + +Consider a node in some k-bucket to be "stale" if it fails to respond to β messages in a row, where β is a system parameter. β may be a function of the number of previous successful liveness checks or of the age of the neighbor. If the k-bucket is not full, and the corresponding replacement cache is empty, then stale nodes should only be flagged and not removed. This ensures that a node who goes offline temporarily does not void its k-buckets. + +### Node State + +Most networks that use the Portal Wire Protocol will track some additional state about nodes in the network. + +#### Base Node State + +Nodes in the network are expected to maintain a database of information with the following information: + +``` +node-entry := (node-id, ip, port) +node-id := uint256 +ip := IPv4 or IPv6 address +port := UDP port number +``` + +#### Protocol Specific Node State + +Sub protocols may define additional node state information which should be tracked in the node state database. This information will typically be transmitted in the `Ping.custom_data` and `Pong.custom_data` fields. + + +### Algorithms + +Here we define a collection of generic algorithms which can be applied to a sub-protocol implementing the wire protocol. + + +#### Lookup + +The term lookup refers to the lookup algorithm described in section 2.3 of the Kademlia paper. + +A node lookup is the execution of the algorithm to find the `k` closest nodes to some `node-id`. + +A content lookup is the execution of the algorithm to find the content with `content-id` or the `k` closest nodes to `content-id`. + +A `FindNode` request is used for a node lookup, and a `FindContent` request for a content lookup. + +#### Joining the Network + +We follow the join procedure described in the Kademlia paper. + +In order to join the network, a node `u` must know some node `v` who is already participating in the network. Node `u` inserts `v` into the appropriate k-bucket and then sends a `FindNode` request to `v` in order to discover more nodes in the network. Then, node `u` refreshes all k-buckets with distances further than its closest neighbor. To refresh a bucket, a node selects a random node ID in the bucket's range and performs a `FindNode` request with a distance that maps to that ID. + +#### Finding Nodes + +A node's routing table is initially populated by the `FindNode` messages that the node sends when it joins the network. + +Following the join phase, a node's k-buckets are generally kept fresh by network traffic. When a node learns of a new contact (through node lookups), it attempts to insert the contact into the appropriate k-bucket. A node keeps track of the last node lookup it performed for each k-bucket, and it will regularly refresh any k-buckets with no recent lookups. + +#### Finding Content + +To find a piece of content for `content-id`, a node performs a content lookup via `FindContent`. + +#### Storing Content + +The concept of content storage is only applicable to sub-protocols that implement persistant storage of data. + +Content will get stored by a node when: +- the node receives the content through the `Offer` - `Accept` message flow and the content falls within the node's radius +- the node requests content through the `FindContent` - `Content` message flow and the content falls within the node's radius + +The network cannot make guarantees about the storage of particular content. A lazy node may ignore all `Offer` messages. A malicious node may send `Accept` messages and ignore the data transmissions. The `Offer` - `Accept` mechanism is in place to require that nodes explicitly accept some data before another node attempts to transmit that data. The mechanism prevents the unnecessary consumption of bandwidth in the presence of lazy nodes. However, it does not defend against malicious nodes who accept offers for data with no intent to store it. + +#### Neighborhood Gossip + +We use the term *neighborhood gossip* to refer to the process through which content is disseminated to all of the DHT nodes *near* the location in the DHT where the content is located. + +The process works as follows: + +- A DHT node is offered and receives a piece of content that it is interested in. +- This DHT node checks their routing table for `k` nearby DHT nodes that should also be interested in the content. Those `k` nodes **SHOULD** not include the node that originally provided aforementioned content. +- If the DHT node finds `n` or more DHT nodes interested it selects `n` of these nodes and offers the content to them. +- If the DHT node finds less than `n` DHT nodes interested, it launches a node lookup with target `content-id` and it +offers the content to maximum `n` of the newly discovered nodes. + +The process above should quickly saturate the area of the DHT where the content is located and naturally terminate as more nodes become aware of the content. + +#### POKE Mechanism + +When a node in the network is doing a content lookup, it will practically perform a recursive find using the `FindContent` and `Content` messages. +During the course of this recursive find, it may encounter nodes along the search path which do not have the content but for which the `content-id` does fall within their announced radius. These are nodes that should be interested in storing this content unless their radius was recently changed. + +If the node doing the lookup successfully retrieves the content from another node, it should send an `Offer` message for that content to those interested nodes. This mechanism is designed to help spread content to nodes that may not yet be aware of it. + +## Rationale + +Reducing the amount of duplicate code for primitive DHT functions, to enable cleaner and quicker development of sub-protocols over Discv5 + +TBD + +## Security Considerations + +Needs discussion. + +## Copyright + +Copyright and related rights waived via [CC0](../LICENSE.md). diff --git a/assets/eip-template/bep_0029-rst_post.pdf b/assets/eip-template/bep_0029-rst_post.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ac047e9a1e11e6ab7908043649941a0002278081 GIT binary patch literal 174109 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 %kVBz8Bc_-Q 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 literal 0 HcmV?d00001 From 4bd444bb9156bc3319e4217916a9b59a113d0003 Mon Sep 17 00:00:00 2001 From: Kolby Moroz Liebl <31669092+KolbyML@users.noreply.github.com> Date: Fri, 7 Jun 2024 01:59:39 -0600 Subject: [PATCH 2/8] 7718: add eip number and fix ci --- EIPS/{eip-template.md => eip-7718.md} | 8 +++----- .../bep_0029-rst_post.pdf | Bin 2 files changed, 3 insertions(+), 5 deletions(-) rename EIPS/{eip-template.md => eip-7718.md} (99%) rename assets/{eip-template => eip-7718}/bep_0029-rst_post.pdf (100%) diff --git a/EIPS/eip-template.md b/EIPS/eip-7718.md similarity index 99% rename from EIPS/eip-template.md rename to EIPS/eip-7718.md index 843f5704a53f06..8b0f4c193d3010 100644 --- a/EIPS/eip-template.md +++ b/EIPS/eip-7718.md @@ -1,9 +1,9 @@ --- -eip: +eip: 7718 title: Portal Wire Protocol a framework for discv5 description: A generic framework over discv5 which allows new overlay protocols to be built without reimplementing DHT primitives author: Kolby ML (@KolbyML) -discussions-to: https://ethereum-magicians.org/t/add-eip-portal-wire-protocol-a-framework-for-discv5/20230 +discussions-to: https://ethereum-magicians.org/t/eip-7718-portal-wire-protocol-a-framework-for-discv5/20230 status: Draft type: Standards Track category: Networking @@ -24,7 +24,6 @@ Building new DHT sub-protocols on Discv5 all share the same primitive message ty ## Specification - The Portal wire protocol is the default p2p protocol by which Portal nodes communicate. The different sub-protocols within the Portal network **MAY** use this wire protocol, but they **MUST** remain separated per network. @@ -75,7 +74,6 @@ The SHA256 Content ID derivation function is defined as: content_id = sha256(content_key) ``` - ### Nodes and Node IDs Nodes in the portal network are represented by their [EIP-778 Ethereum Node Record (ENR)](./eip-778.md) from the Discovery v5 network. A node's `node-id` is derived according to the node's identity scheme, which is specified in the node's ENR. A node's `node-id` represents its address in the DHT. Node IDs are interchangeable between 32 byte identifiers and 256 bit integers. @@ -364,7 +362,7 @@ To find a piece of content for `content-id`, a node performs a content lookup vi #### Storing Content -The concept of content storage is only applicable to sub-protocols that implement persistant storage of data. +The concept of content storage is only applicable to sub-protocols that implement persistent storage of data. Content will get stored by a node when: - the node receives the content through the `Offer` - `Accept` message flow and the content falls within the node's radius diff --git a/assets/eip-template/bep_0029-rst_post.pdf b/assets/eip-7718/bep_0029-rst_post.pdf similarity index 100% rename from assets/eip-template/bep_0029-rst_post.pdf rename to assets/eip-7718/bep_0029-rst_post.pdf From c6fcb5bb3cc0c9e5ca3c8306a506c4f924524a24 Mon Sep 17 00:00:00 2001 From: Kolby Moroz Liebl <31669092+KolbyML@users.noreply.github.com> Date: Fri, 7 Jun 2024 02:07:41 -0600 Subject: [PATCH 3/8] 7718: fix --- EIPS/eip-7718.md | 66 ++++++++++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/EIPS/eip-7718.md b/EIPS/eip-7718.md index 8b0f4c193d3010..f1c44bc65fdea9 100644 --- a/EIPS/eip-7718.md +++ b/EIPS/eip-7718.md @@ -41,7 +41,9 @@ Unsupported messages **SHOULD** receive a `TALKRESP` message with an empty paylo All protocol identifiers consist of two bytes. The first byte is "`P`" (`0x50`), to indicate "the Portal network", the second byte is a specific network identifier. #### Mainnet identifiers + Currently defined mainnet protocol identifiers: + - Inclusive range of `0x5000` - `0x5009`: Reserved for future networks or network upgrades - `0x500A`: Execution State Network - `0x500B`: Execution History Network @@ -49,8 +51,11 @@ Currently defined mainnet protocol identifiers: - `0x500D`: Execution Canonical Transaction Index Network - `0x500E`: Execution Verkle State Network - `0x500F`: Execution Transaction Gossip Network + #### Angelfood identifiers + Currently defined `angelfood` protocol identifiers: + - `0x504A`: Execution State Network - `0x504B`: Execution History Network - `0x504C`: Beacon Chain Network @@ -83,8 +88,8 @@ Nodes in the portal network are represented by their [EIP-778 Ethereum Node Reco The messages in the protocol are transmitted using the `TALKREQ` and `TALKRESP` messages from the base [Node Discovery Protocol](https://github.com/ethereum/devp2p/blob/56a498ee34ee0fb69ffd33dda026d632af4c4048/discv5/discv5-wire.md#talkreq-request-0x05). All messages in the protocol have a request-response interaction: -* Request messages **MUST** be sent using a `TALKREQ` message. -* Response messages **MUST** be sent using the corresponding `TALKRESP` message. +- Request messages **MUST** be sent using a `TALKREQ` message. +- Response messages **MUST** be sent using the corresponding `TALKRESP` message. All messages are encoded as an [SSZ Union](https://github.com/ethereum/consensus-specs/blob/04f5ec595d78c0e3e43794fb7644c18f2584770d/ssz/simple-serialize.md#union) type. @@ -115,8 +120,8 @@ selector = 0x00 ping = Container(enr_seq: uint64, custom_payload: ByteList) ``` -* `enr_seq`: The node's current sequence number of their ENR record. -* `custom_payload`: Custom payload specified per the network. +- `enr_seq`: The node's current sequence number of their ENR record. +- `custom_payload`: Custom payload specified per the network. ##### Pong (0x01) @@ -127,8 +132,8 @@ selector = 0x01 pong = Container(enr_seq: uint64, custom_payload: ByteList) ``` -* `enr_seq`: The node's current sequence number of their ENR record. -* `custom_payload`: Custom payload specified per the network. +- `enr_seq`: The node's current sequence number of their ENR record. +- `custom_payload`: Custom payload specified per the network. ##### Find Nodes (0x02) @@ -139,9 +144,9 @@ selector = 0x02 find_nodes = Container(distances: List[uint16, max_length=256]) ``` -* `distances`: a list of distances for which the node is requesting ENR records for. - * Each distance **MUST** be within the inclusive range `[0, 256]` - * Each distance in the list **MUST** be unique. +- `distances`: a list of distances for which the node is requesting ENR records for. + - Each distance **MUST** be within the inclusive range `[0, 256]` + - Each distance in the list **MUST** be unique. ##### Nodes (0x03) @@ -152,11 +157,11 @@ selector = 0x03 nodes = Container(total: uint8, enrs: List[ByteList, max_length=32]) ``` -* `total`: The total number of `Nodes` response messages being sent. -* `enrs`: List of byte strings, each of which is an RLP encoded ENR record. - * Individual ENR records **MUST** correspond to one of the requested distances. - * It is invalid to return multiple ENR records for the same `node_id`. - * The ENR record of the requesting node **SHOULD** be filtered out of the list. +- `total`: The total number of `Nodes` response messages being sent. +- `enrs`: List of byte strings, each of which is an RLP encoded ENR record. + - Individual ENR records **MUST** correspond to one of the requested distances. + - It is invalid to return multiple ENR records for the same `node_id`. + - The ENR record of the requesting node **SHOULD** be filtered out of the list. > Note: If the number of ENR records cannot be encoded into a single message, then they should be sent back using multiple messages, with the `total` field representing the total number of messages that are being sent. @@ -169,7 +174,7 @@ selector = 0x04 find_content = Container(content_key: ByteList) ``` -* `content_key`: The key for the content being requested. The encoding of `content_key` is specified per the network. +- `content_key`: The key for the content being requested. The encoding of `content_key` is specified per the network. ##### Content (0x05) @@ -183,14 +188,14 @@ selector = 0x05 content = Union[connection_id: Bytes2, content: ByteList, enrs: List[ByteList, 32]] ``` -* `connection_id`: Connection ID to set up a uTP stream to transmit the requested data. - * Connection ID values **SHOULD** be randomly generated. -* `content`: byte string of the requested content. - * This field **MUST** be used when the requested data can fit in this single response. -* `enrs`: List of byte strings, each of which is an RLP encoded ENR record. - * The list of ENR records **MUST** be closest nodes to the requested content that the responding node has stored. - * The set of derived `node_id` values from the ENR records **MUST** be unique. - * The ENR record of the requesting & responding node **SHOULD** be filtered out of the list. +- `connection_id`: Connection ID to set up a uTP stream to transmit the requested data. + - Connection ID values **SHOULD** be randomly generated. +- `content`: byte string of the requested content. + - This field **MUST** be used when the requested data can fit in this single response. +- `enrs`: List of byte strings, each of which is an RLP encoded ENR record. + - The list of ENR records **MUST** be closest nodes to the requested content that the responding node has stored. + - The set of derived `node_id` values from the ENR records **MUST** be unique. + - The ENR record of the requesting & responding node **SHOULD** be filtered out of the list. If the node does not hold the requested content, and the node does not know of any nodes with eligible ENR values, then the node **MUST** return `enrs` as an empty list. @@ -203,18 +208,21 @@ Upon *receiving* this message with a `connection_id`, the receiving node **SHOUL The `Union` defined in the `content` field of the `Content (0x05)` message is defined as below: **`connection_id`** + ``` selector = 0x00 ssz-type = Bytes2 ``` **`content`** + ``` selector = 0x01 ssz-type = ByteList ``` **`enrs`** + ``` selector = 0x02 ssz-type = List[ByteList, 32] @@ -229,7 +237,7 @@ selector = 0x06 offer = Container(content_keys: List[ByteList, max_length=64]) ``` -* `content_keys`: A list of encoded `content_key` entries. The encoding of each `content_key` is specified per the network. +- `content_keys`: A list of encoded `content_key` entries. The encoding of each `content_key` is specified per the network. ##### Accept (0x07) @@ -242,10 +250,10 @@ selector = 0x07 accept = Container(connection_id: Bytes2, content_keys: BitList[max_length=64]] ``` -* `connection_id`: Connection ID to set up a uTP stream to transmit the requested data. - * ConnectionID values **SHOULD** be randomly generated. -* `content_keys`: Signals which content keys are desired. - * A bit-list corresponding to the offered keys with the bits in the positions of the desired keys set to `1`. +- `connection_id`: Connection ID to set up a uTP stream to transmit the requested data. + - ConnectionID values **SHOULD** be randomly generated. +- `content_keys`: Signals which content keys are desired. + - A bit-list corresponding to the offered keys with the bits in the positions of the desired keys set to `1`. Upon *sending* this message, the requesting node **SHOULD** *listen* for an incoming uTP stream with the generated `connection_id`. @@ -264,6 +272,7 @@ The maximum size allowed for this application is limited to `uint32`. The content item itself MUST be encoded as is defined for each specific network and content type. The encoded data of n encoded content items to be send over the stream can be formalized as: + ```py # n encoded content items to be send over the stream, with n <= 64 encoded_content_list = [content_0, content_1, ..., content_n] @@ -365,6 +374,7 @@ To find a piece of content for `content-id`, a node performs a content lookup vi The concept of content storage is only applicable to sub-protocols that implement persistent storage of data. Content will get stored by a node when: + - the node receives the content through the `Offer` - `Accept` message flow and the content falls within the node's radius - the node requests content through the `FindContent` - `Content` message flow and the content falls within the node's radius From b14a030a588cdfdb6b04d788c662f821f8e5c006 Mon Sep 17 00:00:00 2001 From: Kolby Moroz Liebl <31669092+KolbyML@users.noreply.github.com> Date: Fri, 7 Jun 2024 02:08:57 -0600 Subject: [PATCH 4/8] 7718: fix --- EIPS/eip-7718.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/EIPS/eip-7718.md b/EIPS/eip-7718.md index f1c44bc65fdea9..ef3ed9f0d3d947 100644 --- a/EIPS/eip-7718.md +++ b/EIPS/eip-7718.md @@ -88,6 +88,7 @@ Nodes in the portal network are represented by their [EIP-778 Ethereum Node Reco The messages in the protocol are transmitted using the `TALKREQ` and `TALKRESP` messages from the base [Node Discovery Protocol](https://github.com/ethereum/devp2p/blob/56a498ee34ee0fb69ffd33dda026d632af4c4048/discv5/discv5-wire.md#talkreq-request-0x05). All messages in the protocol have a request-response interaction: + - Request messages **MUST** be sent using a `TALKREQ` message. - Response messages **MUST** be sent using the corresponding `TALKRESP` message. @@ -107,6 +108,7 @@ The transmission of `content` data that is too large to fit a single packet is d #### Aliases For convenience we alias: + - `ByteList` to `List[uint8, max_length=2048]` #### Message Types @@ -190,7 +192,7 @@ content = Union[connection_id: Bytes2, content: ByteList, enrs: List[ByteLi - `connection_id`: Connection ID to set up a uTP stream to transmit the requested data. - Connection ID values **SHOULD** be randomly generated. -- `content`: byte string of the requested content. +- `content`: byte string of the requested content. - This field **MUST** be used when the requested data can fit in this single response. - `enrs`: List of byte strings, each of which is an RLP encoded ENR record. - The list of ENR records **MUST** be closest nodes to the requested content that the responding node has stored. From b7b72ef7264ca893b0d8d854f0084db6b305d4e0 Mon Sep 17 00:00:00 2001 From: Kolby Moroz Liebl <31669092+KolbyML@users.noreply.github.com> Date: Fri, 7 Jun 2024 02:18:34 -0600 Subject: [PATCH 5/8] 7718: fix --- EIPS/eip-7718.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EIPS/eip-7718.md b/EIPS/eip-7718.md index ef3ed9f0d3d947..30d50a73034360 100644 --- a/EIPS/eip-7718.md +++ b/EIPS/eip-7718.md @@ -103,7 +103,7 @@ The `serialized_message` is the payload passed to the `request` field of the `TA The type values for the `Union` are the SSZ Containers specified per message type. -The transmission of `content` data that is too large to fit a single packet is done over [uTP](../assets/eip-template/bep_0029-rst_post.pdf). +The transmission of `content` data that is too large to fit a single packet is done over [uTP](../assets/eip-7718/bep_0029-rst_post.pdf). #### Aliases From eada2e5d468f5af624f329a521037ea96b935bbe Mon Sep 17 00:00:00 2001 From: Kolby Moroz Liebl <31669092+KolbyML@users.noreply.github.com> Date: Fri, 7 Jun 2024 12:30:21 -0600 Subject: [PATCH 6/8] 7718: fix --- EIPS/eip-7718.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/EIPS/eip-7718.md b/EIPS/eip-7718.md index 30d50a73034360..cb055279354aaf 100644 --- a/EIPS/eip-7718.md +++ b/EIPS/eip-7718.md @@ -20,7 +20,7 @@ Discv5 is implemented in many languages, has built in packet encryption, used by With the ubiquity of Discv5 in Ethereum and it being implemented in many languages, building new protocols using Discv5 as a base is beneficial as it enables quicker implementation times, stability as Discv5 is already used in production, as well as inheriting improvements and optimizations discovered by Discv5. -Building new DHT sub-protocols on Discv5 all share the same primitive message types. By defining a framework `Portal Wire Protocol` new networks can be built without reimplementing the DHT primitives reducing the workload for new networks, well inheriting the performance optimizations of the base `Portal Wire Protocol` implementation for all overlay networks. +When building new DHT sub-protocols on Discv5, new sub-protocols often share the same primitive message types. By defining the framework `Portal Wire Protocol`, new networks can be built without re-implementing the DHT primitives reducing the development time and inheriting the performance optimizations of the base `Portal Wire Protocol` implementation. ## Specification @@ -96,7 +96,7 @@ All messages are encoded as an [SSZ Union](https://github.com/ethereum/consensus ``` message = Union[ping, pong, find_nodes, nodes, find_content, content, offer, accept] -serialized_message = serialize(message) +serialized_message = SSZ.serialize(message) ``` The `serialized_message` is the payload passed to the `request` field of the `TALKREQ` message or the `reponse` field of the `TALKRESP` message. @@ -119,7 +119,7 @@ Request message to check if a node is reachable, communicate basic information a ``` selector = 0x00 -ping = Container(enr_seq: uint64, custom_payload: ByteList) +ping = Container(enr_seq: uint64, custom_payload: ByteList[2048]) ``` - `enr_seq`: The node's current sequence number of their ENR record. @@ -131,7 +131,7 @@ Response message to Ping(0x00) ``` selector = 0x01 -pong = Container(enr_seq: uint64, custom_payload: ByteList) +pong = Container(enr_seq: uint64, custom_payload: ByteList[2048]) ``` - `enr_seq`: The node's current sequence number of their ENR record. @@ -165,7 +165,6 @@ nodes = Container(total: uint8, enrs: List[ByteList, max_length=32]) - It is invalid to return multiple ENR records for the same `node_id`. - The ENR record of the requesting node **SHOULD** be filtered out of the list. -> Note: If the number of ENR records cannot be encoded into a single message, then they should be sent back using multiple messages, with the `total` field representing the total number of messages that are being sent. ##### Find Content (0x04) From 9b40672bf978fa848f1f56a5fa0208600b5c4d38 Mon Sep 17 00:00:00 2001 From: Kolby Moroz Liebl <31669092+KolbyML@users.noreply.github.com> Date: Fri, 26 Jul 2024 11:58:37 -0600 Subject: [PATCH 7/8] 7718: fix --- EIPS/eip-7718.md | 388 +------------------------- assets/eip-7718/bep_0029-rst_post.pdf | Bin 174109 -> 0 bytes 2 files changed, 6 insertions(+), 382 deletions(-) delete mode 100644 assets/eip-7718/bep_0029-rst_post.pdf diff --git a/EIPS/eip-7718.md b/EIPS/eip-7718.md index cb055279354aaf..da478acc369332 100644 --- a/EIPS/eip-7718.md +++ b/EIPS/eip-7718.md @@ -12,405 +12,29 @@ created: 2024-06-06 ## Abstract -Discv5 is an extensible protocol which allows building new protocols on top of it. We propose a generic framework for building new DHT networks on top of Discv5 referred to as the `Portal Wire Protocol` +Discv5 is an extensible protocol which allows building new protocols on top of it. We propose a generic framework for building new distributed hash table (DHT) networks on top of Discv5 referred to as the _Portal Wire Protocol_ ## Motivation -Discv5 is implemented in many languages, has built in packet encryption, used by consensus clients, and allows building sub-protocols using it's `TalkRequest` message type. +Discv5 is implemented in many languages, has built in packet encryption, used by consensus clients, and allows building sub-protocols using its _TalkRequest_ message type. With the ubiquity of Discv5 in Ethereum and it being implemented in many languages, building new protocols using Discv5 as a base is beneficial as it enables quicker implementation times, stability as Discv5 is already used in production, as well as inheriting improvements and optimizations discovered by Discv5. -When building new DHT sub-protocols on Discv5, new sub-protocols often share the same primitive message types. By defining the framework `Portal Wire Protocol`, new networks can be built without re-implementing the DHT primitives reducing the development time and inheriting the performance optimizations of the base `Portal Wire Protocol` implementation. +When building new DHT sub-protocols on Discv5, new sub-protocols often share the same primitive message types. By defining the framework _Portal Wire Protocol_, new networks can be built without re-implementing the DHT primitives reducing the development time and inheriting the performance optimizations of the base _Portal Wire Protocol_ implementation. ## Specification -The Portal wire protocol is the default p2p protocol by which Portal nodes communicate. - -The different sub-protocols within the Portal network **MAY** use this wire protocol, but they **MUST** remain separated per network. - -This is done at the [Node Discovery Protocol v5](https://github.com/ethereum/devp2p/blob/56a498ee34ee0fb69ffd33dda026d632af4c4048/discv5/discv5-wire.md#talkreq-request-0x05) layer, by providing a different protocol byte string, per protocol, in the `TALKREQ` message. - -The value for the protocol byte string in the `TALKREQ` message is specified as protocol identifier per network. - -Each network using the wire protocol **MUST** specify which messages are supported. - -Unsupported messages **SHOULD** receive a `TALKRESP` message with an empty payload. - -### Protocol identifiers - -All protocol identifiers consist of two bytes. The first byte is "`P`" (`0x50`), to indicate "the Portal network", the second byte is a specific network identifier. - -#### Mainnet identifiers - -Currently defined mainnet protocol identifiers: - -- Inclusive range of `0x5000` - `0x5009`: Reserved for future networks or network upgrades -- `0x500A`: Execution State Network -- `0x500B`: Execution History Network -- `0x500C`: Beacon Chain Network -- `0x500D`: Execution Canonical Transaction Index Network -- `0x500E`: Execution Verkle State Network -- `0x500F`: Execution Transaction Gossip Network - -#### Angelfood identifiers - -Currently defined `angelfood` protocol identifiers: - -- `0x504A`: Execution State Network -- `0x504B`: Execution History Network -- `0x504C`: Beacon Chain Network -- `0x504D`: Execution Canonical Transaction Index Network -- `0x504E`: Execution Verkle State Network -- `0x504F`: Execution Transaction Gossip Network - -### Content Keys and Content IDs - -Content keys are used to request or offer specific content data. As such the content key and content data can be represented as a key:value pair. - -Content keys are passed as byte strings to the messages defined in the Portal wire protocol. How they are encoded is defined per content network specification. - -Content IDs are derived from the content keys and are used to identify where the content is located in the network. The derivation is defined per content network specification. - -#### SHA256 Content ID Derivation Function - -The SHA256 Content ID derivation function is defined as: - -``` -content_id = sha256(content_key) -``` - -### Nodes and Node IDs - -Nodes in the portal network are represented by their [EIP-778 Ethereum Node Record (ENR)](./eip-778.md) from the Discovery v5 network. A node's `node-id` is derived according to the node's identity scheme, which is specified in the node's ENR. A node's `node-id` represents its address in the DHT. Node IDs are interchangeable between 32 byte identifiers and 256 bit integers. - -### Request - Response Messages - -The messages in the protocol are transmitted using the `TALKREQ` and `TALKRESP` messages from the base [Node Discovery Protocol](https://github.com/ethereum/devp2p/blob/56a498ee34ee0fb69ffd33dda026d632af4c4048/discv5/discv5-wire.md#talkreq-request-0x05). - -All messages in the protocol have a request-response interaction: - -- Request messages **MUST** be sent using a `TALKREQ` message. -- Response messages **MUST** be sent using the corresponding `TALKRESP` message. - -All messages are encoded as an [SSZ Union](https://github.com/ethereum/consensus-specs/blob/04f5ec595d78c0e3e43794fb7644c18f2584770d/ssz/simple-serialize.md#union) type. - -``` -message = Union[ping, pong, find_nodes, nodes, find_content, content, offer, accept] -serialized_message = SSZ.serialize(message) -``` - -The `serialized_message` is the payload passed to the `request` field of the `TALKREQ` message or the `reponse` field of the `TALKRESP` message. - -The type values for the `Union` are the SSZ Containers specified per message type. - -The transmission of `content` data that is too large to fit a single packet is done over [uTP](../assets/eip-7718/bep_0029-rst_post.pdf). - -#### Aliases - -For convenience we alias: - -- `ByteList` to `List[uint8, max_length=2048]` - -#### Message Types - -##### Ping (0x00) - -Request message to check if a node is reachable, communicate basic information about our node, and request basic information about the recipient node. - -``` -selector = 0x00 -ping = Container(enr_seq: uint64, custom_payload: ByteList[2048]) -``` - -- `enr_seq`: The node's current sequence number of their ENR record. -- `custom_payload`: Custom payload specified per the network. - -##### Pong (0x01) - -Response message to Ping(0x00) - -``` -selector = 0x01 -pong = Container(enr_seq: uint64, custom_payload: ByteList[2048]) -``` - -- `enr_seq`: The node's current sequence number of their ENR record. -- `custom_payload`: Custom payload specified per the network. - -##### Find Nodes (0x02) - -Request message to get ENR records from the recipient's routing table at the given logarithmic distances. The distance of `0` indicates a request for the recipient's own ENR record. - -``` -selector = 0x02 -find_nodes = Container(distances: List[uint16, max_length=256]) -``` - -- `distances`: a list of distances for which the node is requesting ENR records for. - - Each distance **MUST** be within the inclusive range `[0, 256]` - - Each distance in the list **MUST** be unique. - -##### Nodes (0x03) - -Response message to FindNodes(0x02). - -``` -selector = 0x03 -nodes = Container(total: uint8, enrs: List[ByteList, max_length=32]) -``` - -- `total`: The total number of `Nodes` response messages being sent. -- `enrs`: List of byte strings, each of which is an RLP encoded ENR record. - - Individual ENR records **MUST** correspond to one of the requested distances. - - It is invalid to return multiple ENR records for the same `node_id`. - - The ENR record of the requesting node **SHOULD** be filtered out of the list. - - -##### Find Content (0x04) - -Request message to get the `content` with `content_key`, **or**, in case the recipient does not have the data, a list of ENR records of nodes that are closest to the requested content. - -``` -selector = 0x04 -find_content = Container(content_key: ByteList) -``` - -- `content_key`: The key for the content being requested. The encoding of `content_key` is specified per the network. - -##### Content (0x05) - -Response message to Find Content (0x04). - -This message can contain either a uTP connection ID, a list of ENRs or the -requested content. - -``` -selector = 0x05 -content = Union[connection_id: Bytes2, content: ByteList, enrs: List[ByteList, 32]] -``` - -- `connection_id`: Connection ID to set up a uTP stream to transmit the requested data. - - Connection ID values **SHOULD** be randomly generated. -- `content`: byte string of the requested content. - - This field **MUST** be used when the requested data can fit in this single response. -- `enrs`: List of byte strings, each of which is an RLP encoded ENR record. - - The list of ENR records **MUST** be closest nodes to the requested content that the responding node has stored. - - The set of derived `node_id` values from the ENR records **MUST** be unique. - - The ENR record of the requesting & responding node **SHOULD** be filtered out of the list. - -If the node does not hold the requested content, and the node does not know of any nodes with eligible ENR values, then the node **MUST** return `enrs` as an empty list. - -Upon *sending* this message with a `connection_id`, the sending node **SHOULD** *listen* for an incoming uTP stream with the generated `connection_id`. - -Upon *receiving* this message with a `connection_id`, the receiving node **SHOULD** *initiate* a uTP stream with the received `connection_id`. - -###### `content` Union Definition - -The `Union` defined in the `content` field of the `Content (0x05)` message is defined as below: - -**`connection_id`** - -``` -selector = 0x00 -ssz-type = Bytes2 -``` - -**`content`** - -``` -selector = 0x01 -ssz-type = ByteList -``` - -**`enrs`** - -``` -selector = 0x02 -ssz-type = List[ByteList, 32] -``` - -##### Offer (0x06) - -Request message to offer a set of `content_keys` that this node has `content` available for. - -``` -selector = 0x06 -offer = Container(content_keys: List[ByteList, max_length=64]) -``` - -- `content_keys`: A list of encoded `content_key` entries. The encoding of each `content_key` is specified per the network. - -##### Accept (0x07) - -Response message to Offer (0x06). - -Signals interest in receiving the offered data from the corresponding Offer message. - -``` -selector = 0x07 -accept = Container(connection_id: Bytes2, content_keys: BitList[max_length=64]] -``` - -- `connection_id`: Connection ID to set up a uTP stream to transmit the requested data. - - ConnectionID values **SHOULD** be randomly generated. -- `content_keys`: Signals which content keys are desired. - - A bit-list corresponding to the offered keys with the bits in the positions of the desired keys set to `1`. - -Upon *sending* this message, the requesting node **SHOULD** *listen* for an incoming uTP stream with the generated `connection_id`. - -Upon *receiving* this message, the serving node **SHOULD** *initiate* a uTP stream with the received `connection_id`. - -###### Content Encoding - -Up to 64 content items can be sent over the uTP stream after an `Offer` request and `Accept` response. - -In order to be able to discern these different content items, a variable length unsigned integer (variant) MUST be prefixed to each content item. -The variant MUST hold the size, in bytes, of the consecutive content item. - -The variant encoding used is Unsigned LEB128. -The maximum size allowed for this application is limited to `uint32`. - -The content item itself MUST be encoded as is defined for each specific network and content type. - -The encoded data of n encoded content items to be send over the stream can be formalized as: - -```py -# n encoded content items to be send over the stream, with n <= 64 -encoded_content_list = [content_0, content_1, ..., content_n] - -# encoded data to be send over the stream -encoded_data = variant(len(content_0)) + content_0 + variant(len(content_1)) + content_1 + ... + variant(len(content_n)) + content_n -``` - -#### Distance Function - -Each sub protocol must specify a distance function for computing the distance -between either two nodes in the network or a node and a piece of content. - -##### XOR Distance Function - -The XOR `distance` function is defined as: - -``` -distance(a: uint256, b: uint256) = a XOR b -``` - -Similarly, we define a `logdistance` function identically to the Discovery v5 network. - -``` -logdistance(a: uint256, b: uint256) = log2(distance(a, b)) -``` - -### Routing Table - -Most networks that use the Portal Wire Protocol will form an independent DHT which requires individual nodes to maintain a routing table. - -#### Standard Routing Table - -We define the "standard" routing table as follows: - -We adapt the node state from the Discovery v5 protocol. Assume identical definitions for the replication parameter `k` and a node's k-bucket table. Also assume that the routing table follows the structure and evolution described in section 2.4 of the Kademlia paper. - -Nodes keep information about other nodes in a routing table of k-buckets. This routing table is specific to a sub protocol and is distinct from the node's underlying Discovery v5 routing table or the routing table of any other sub protocols. - -A node should regularly refresh the information it keeps about its neighbors. We follow section 4.1 of the Kademlia paper to improve efficiency of these refreshes. A node delays `Ping` checks until it has a useful message to send to its neighbor. - -When a node discovers some previously unknown node, and the corresponding k-bucket is full, the newly discovered node is put into a replacement cache sorted by time last seen. If a node in the k-bucket fails a liveness check, and the replacement cache for that bucket is non-empty, then that node is replaced by the most recently seen node in the replacement cache. - -Consider a node in some k-bucket to be "stale" if it fails to respond to β messages in a row, where β is a system parameter. β may be a function of the number of previous successful liveness checks or of the age of the neighbor. If the k-bucket is not full, and the corresponding replacement cache is empty, then stale nodes should only be flagged and not removed. This ensures that a node who goes offline temporarily does not void its k-buckets. - -### Node State - -Most networks that use the Portal Wire Protocol will track some additional state about nodes in the network. - -#### Base Node State - -Nodes in the network are expected to maintain a database of information with the following information: - -``` -node-entry := (node-id, ip, port) -node-id := uint256 -ip := IPv4 or IPv6 address -port := UDP port number -``` - -#### Protocol Specific Node State - -Sub protocols may define additional node state information which should be tracked in the node state database. This information will typically be transmitted in the `Ping.custom_data` and `Pong.custom_data` fields. - - -### Algorithms - -Here we define a collection of generic algorithms which can be applied to a sub-protocol implementing the wire protocol. - - -#### Lookup - -The term lookup refers to the lookup algorithm described in section 2.3 of the Kademlia paper. - -A node lookup is the execution of the algorithm to find the `k` closest nodes to some `node-id`. - -A content lookup is the execution of the algorithm to find the content with `content-id` or the `k` closest nodes to `content-id`. - -A `FindNode` request is used for a node lookup, and a `FindContent` request for a content lookup. - -#### Joining the Network - -We follow the join procedure described in the Kademlia paper. - -In order to join the network, a node `u` must know some node `v` who is already participating in the network. Node `u` inserts `v` into the appropriate k-bucket and then sends a `FindNode` request to `v` in order to discover more nodes in the network. Then, node `u` refreshes all k-buckets with distances further than its closest neighbor. To refresh a bucket, a node selects a random node ID in the bucket's range and performs a `FindNode` request with a distance that maps to that ID. - -#### Finding Nodes - -A node's routing table is initially populated by the `FindNode` messages that the node sends when it joins the network. - -Following the join phase, a node's k-buckets are generally kept fresh by network traffic. When a node learns of a new contact (through node lookups), it attempts to insert the contact into the appropriate k-bucket. A node keeps track of the last node lookup it performed for each k-bucket, and it will regularly refresh any k-buckets with no recent lookups. - -#### Finding Content - -To find a piece of content for `content-id`, a node performs a content lookup via `FindContent`. - -#### Storing Content - -The concept of content storage is only applicable to sub-protocols that implement persistent storage of data. - -Content will get stored by a node when: - -- the node receives the content through the `Offer` - `Accept` message flow and the content falls within the node's radius -- the node requests content through the `FindContent` - `Content` message flow and the content falls within the node's radius - -The network cannot make guarantees about the storage of particular content. A lazy node may ignore all `Offer` messages. A malicious node may send `Accept` messages and ignore the data transmissions. The `Offer` - `Accept` mechanism is in place to require that nodes explicitly accept some data before another node attempts to transmit that data. The mechanism prevents the unnecessary consumption of bandwidth in the presence of lazy nodes. However, it does not defend against malicious nodes who accept offers for data with no intent to store it. - -#### Neighborhood Gossip - -We use the term *neighborhood gossip* to refer to the process through which content is disseminated to all of the DHT nodes *near* the location in the DHT where the content is located. - -The process works as follows: - -- A DHT node is offered and receives a piece of content that it is interested in. -- This DHT node checks their routing table for `k` nearby DHT nodes that should also be interested in the content. Those `k` nodes **SHOULD** not include the node that originally provided aforementioned content. -- If the DHT node finds `n` or more DHT nodes interested it selects `n` of these nodes and offers the content to them. -- If the DHT node finds less than `n` DHT nodes interested, it launches a node lookup with target `content-id` and it -offers the content to maximum `n` of the newly discovered nodes. - -The process above should quickly saturate the area of the DHT where the content is located and naturally terminate as more nodes become aware of the content. - -#### POKE Mechanism - -When a node in the network is doing a content lookup, it will practically perform a recursive find using the `FindContent` and `Content` messages. -During the course of this recursive find, it may encounter nodes along the search path which do not have the content but for which the `content-id` does fall within their announced radius. These are nodes that should be interested in storing this content unless their radius was recently changed. - -If the node doing the lookup successfully retrieves the content from another node, it should send an `Offer` message for that content to those interested nodes. This mechanism is designed to help spread content to nodes that may not yet be aware of it. +Specification of the _Portal Wire Protocol_ can be found in [`/portal-wire-protocol.md`](https://github.com/ethereum/portal-network-specs/blob/88f9e345f75b82e176840a9d82682809c9239176/portal-wire-protocol.md). ## Rationale Reducing the amount of duplicate code for primitive DHT functions, to enable cleaner and quicker development of sub-protocols over Discv5 -TBD +TBD ## Security Considerations -Needs discussion. +Needs discussion. ## Copyright diff --git a/assets/eip-7718/bep_0029-rst_post.pdf b/assets/eip-7718/bep_0029-rst_post.pdf deleted file mode 100644 index ac047e9a1e11e6ab7908043649941a0002278081..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174109 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 %kVBz8Bc_-Q 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 From 945eeabe222f0be7b4ff4ba017814f651cbfe7f1 Mon Sep 17 00:00:00 2001 From: Kolby Moroz Liebl <31669092+KolbyML@users.noreply.github.com> Date: Wed, 31 Jul 2024 14:25:33 -0600 Subject: [PATCH 8/8] 7718: update spec link --- EIPS/eip-7718.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EIPS/eip-7718.md b/EIPS/eip-7718.md index da478acc369332..d33ae3a8b9a6fb 100644 --- a/EIPS/eip-7718.md +++ b/EIPS/eip-7718.md @@ -24,7 +24,7 @@ When building new DHT sub-protocols on Discv5, new sub-protocols often share the ## Specification -Specification of the _Portal Wire Protocol_ can be found in [`/portal-wire-protocol.md`](https://github.com/ethereum/portal-network-specs/blob/88f9e345f75b82e176840a9d82682809c9239176/portal-wire-protocol.md). +Specification of the _Portal Wire Protocol_ are on [/ethereum/portal-network-specs](https://github.com/ethereum/portal-network-specs/blob/4ce803e90a24becc9f76e7c18dc188ccf84e9f8e/portal-wire-protocol.md). ## Rationale