Skip to content

Commit 9ec13a0

Browse files
authored
caps/eth.md: eth/67 - removal of GetNodeData (#208)
This defines protocol version eth/67, applying the changes proposed by EIP-4938.
1 parent 64a8007 commit 9ec13a0

File tree

1 file changed

+18
-29
lines changed

1 file changed

+18
-29
lines changed

caps/eth.md

Lines changed: 18 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Ethereum Wire Protocol (ETH)
22

33
'eth' is a protocol on the [RLPx] transport that facilitates exchange of Ethereum
4-
blockchain information between peers. The current protocol version is **eth/66**. See end
4+
blockchain information between peers. The current protocol version is **eth/67**. See end
55
of document for a list of changes in past protocol versions.
66

77
### Basic Operation
@@ -44,16 +44,15 @@ concurrently.
4444

4545
### State Synchronization (a.k.a. "fast sync")
4646

47-
Protocol versions eth/63 and later also allow synchronizing transaction execution results
48-
(i.e. state tree and receipts). This may be faster than re-executing all historical
49-
transactions but comes at the expense of some security.
47+
Protocol versions eth/63 through eth/66 also allowed synchronizing the state tree. Since
48+
protocol version eth/67, the Ethereum state tree can no longer be retrieved using the eth
49+
protocol, and state downloads are provided by the auxiliary [snap protocol] instead.
5050

5151
State synchronization typically proceeds by downloading the chain of block headers,
5252
verifying their validity. Block bodies are requested as in the Chain Synchronization
53-
section but block transactions aren't executed, only their 'data validity' is verified.
54-
The client picks a block near the head of the chain and downloads merkle tree nodes and
55-
contract code incrementally by requesting the root node, its children, grandchildren, ...
56-
using [GetNodeData] until the entire tree is synchronized.
53+
section but transactions aren't executed, only their 'data validity' is verified. The
54+
client picks a block near the head of the chain (the 'pivot block') and downloads the
55+
state of that block.
5756

5857
### Block Propagation
5958

@@ -424,25 +423,6 @@ request.
424423
A peer may respond with an empty list iff none of the hashes match transactions in its
425424
pool.
426425

427-
### GetNodeData (0x0d)
428-
429-
`[request-id: P, [hash₁: B_32, hash₂: B_32, ...]]`
430-
431-
Require peer to return a [NodeData] message containing state tree nodes or contract code
432-
matching the requested hashes.
433-
434-
### NodeData (0x0e)
435-
436-
`[request-id: P, [value₁: B, value₂: B, ...]]`
437-
438-
Provide a set of state tree nodes or contract code blobs which correspond to previously
439-
requested hashes from [GetNodeData]. Does not need to contain all; best effort is fine.
440-
This message may be an empty list if the peer doesn't know about any of the previously
441-
requested hashes. The number of items that can be requested in a single message may be
442-
subject to implementation-defined limits.
443-
444-
The recommended soft limit for NodeData responses is 2 MiB.
445-
446426
### GetReceipts (0x0f)
447427

448428
`[request-id: P, [blockhash₁: B_32, blockhash₂: B_32, ...]]`
@@ -463,6 +443,15 @@ The recommended soft limit for Receipts responses is 2 MiB.
463443

464444
## Change Log
465445

446+
### eth/67 ([EIP-4938], March 2022)
447+
448+
Version 67 removed the GetNodeData and NodeData messages.
449+
450+
- GetNodeData (0x0d)
451+
`[request_id: P, [hash_0: B_32, hash_1: B_32, ...]]`
452+
- NodeData (0x0e)
453+
`[request_id: P, [value_0: B, value_1: B, ...]]`
454+
466455
### eth/66 ([EIP-2481], April 2021)
467456

468457
Version 66 added the `request-id` element in messages [GetBlockHeaders], [BlockHeaders],
@@ -532,6 +521,7 @@ Version numbers below 60 were used during the Ethereum PoC development phase.
532521

533522
[block propagation]: #block-propagation
534523
[state synchronization]: #state-synchronization-aka-fast-sync
524+
[snap protocol]: ./snap.md
535525
[Status]: #status-0x00
536526
[NewBlockHashes]: #newblockhashes-0x01
537527
[Transactions]: #transactions-0x02
@@ -543,8 +533,6 @@ Version numbers below 60 were used during the Ethereum PoC development phase.
543533
[NewPooledTransactionHashes]: #newpooledtransactionhashes-0x08
544534
[GetPooledTransactions]: #getpooledtransactions-0x09
545535
[PooledTransactions]: #pooledtransactions-0x0a
546-
[GetNodeData]: #getnodedata-0x0d
547-
[NodeData]: #nodedata-0x0e
548536
[GetReceipts]: #getreceipts-0x0f
549537
[Receipts]: #receipts-0x10
550538
[RLPx]: ../rlpx.md
@@ -557,5 +545,6 @@ Version numbers below 60 were used during the Ethereum PoC development phase.
557545
[EIP-2481]: https://eips.ethereum.org/EIPS/eip-2481
558546
[EIP-2718]: https://eips.ethereum.org/EIPS/eip-2718
559547
[EIP-2976]: https://eips.ethereum.org/EIPS/eip-2976
548+
[EIP-4938]: https://eips.ethereum.org/EIPS/eip-4938
560549
[London hard fork]: https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/london.md
561550
[Yellow Paper]: https://ethereum.github.io/yellowpaper/paper.pdf

0 commit comments

Comments
 (0)