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
55of 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
5151State synchronization typically proceeds by downloading the chain of block headers,
5252verifying 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.
424423A peer may respond with an empty list iff none of the hashes match transactions in its
425424pool.
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
468457Version 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 
@@ -557,5 +547,6 @@ Version numbers below 60 were used during the Ethereum PoC development phase.
557547[ EIP-2481 ] : https://eips.ethereum.org/EIPS/eip-2481 
558548[ EIP-2718 ] : https://eips.ethereum.org/EIPS/eip-2718 
559549[ EIP-2976 ] : https://eips.ethereum.org/EIPS/eip-2976 
550+ [ EIP-4938 ] : https://eips.ethereum.org/EIPS/eip-4938 
560551[ London hard fork ] : https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/london.md 
561552[ Yellow Paper ] : https://ethereum.github.io/yellowpaper/paper.pdf 
0 commit comments