|
1 | 1 | # Ethereum Wire Protocol (ETH)
|
2 | 2 |
|
3 | 3 | 'eth' is a protocol on the [RLPx] transport that facilitates exchange of Ethereum
|
4 |
| -blockchain information between peers. The current protocol version is **eth/69**. See end |
| 4 | +blockchain information between peers. The current protocol version is **eth/70**. See end |
5 | 5 | of document for a list of changes in past protocol versions.
|
6 | 6 |
|
7 | 7 | ### Basic Operation
|
@@ -361,11 +361,13 @@ of the sending node.
|
361 | 361 |
|
362 | 362 | ### Transactions (0x02)
|
363 | 363 |
|
364 |
| -`[tx₁, tx₂, ...]` |
| 364 | +`[[tx₁, tx₂, ...], custodyids: B]` |
365 | 365 |
|
366 | 366 | Specify transactions that the peer should make sure is included on its transaction queue.
|
367 | 367 | The items in the list are transactions in the format described in the main Ethereum
|
368 |
| -specification. Transactions messages must contain at least one (new) transaction, empty |
| 368 | +specification. The custodyids element is a bitmap representing which cell IDs in transaction |
| 369 | +payloads are stored by the sending peer, with each stored cell’s index marked as 1. |
| 370 | +Transactions messages must contain at least one (new) transaction, empty |
369 | 371 | Transactions messages are discouraged and may lead to disconnection.
|
370 | 372 |
|
371 | 373 | Nodes must not resend the same transaction to a peer in the same session and must not
|
@@ -509,8 +511,47 @@ received updates.
|
509 | 511 | At the same time, client implementations must take care to not disconnect all syncing
|
510 | 512 | peers purely on the basis of their BlockRangeUpdate.
|
511 | 513 |
|
| 514 | +### CellAvailability (0x12) |
| 515 | + |
| 516 | +`[request-id: P, [vhash₁: B_32, vhash₂: B_32, ...], custodyids: B]` |
| 517 | + |
| 518 | +This message announces the cell availability of transaction payloads. |
| 519 | +The list of vhash values represents the commitment hashes of payloads for which cells are available. |
| 520 | +The custodyid element is a bitmap marking the IDs of cells in the transaction payload |
| 521 | +stored by the sending peer, with each stored cell’s index set to 1. |
| 522 | + |
| 523 | +### GetCellAndProofs (0x13) |
| 524 | + |
| 525 | +`[request-id: P, [vhash₁: B_32, vhash₂: B_32, ...], requestids: B]` |
| 526 | + |
| 527 | +This message request peer to return cells and proofs of the given versioned hash |
| 528 | +of the payload commitment. |
| 529 | +The requestids element is a bitmap representing IDs of cells required. |
| 530 | + |
| 531 | +### CellAndProofs (0x14) |
| 532 | + |
| 533 | +`[request-id: P, [[vhash₁: B_32, [cellAndProof₁: B, cellAndProof₂: B, ...]], [vhash₂: B_32, [cellAndProof₁: B, cellAndProof₂: B, ...]], ...]]` |
| 534 | + |
| 535 | +This is a response to GetCellAndProofs, which provides the requested cells and their proofs. |
| 536 | +Each list element contains the versioned hash of the payload commitment that includes |
| 537 | +the cell, the cell itself, and a proof to verify the cell’s inclusion. |
| 538 | +Each element must match the vhash specified in the request. |
| 539 | +The sender can skip any cells that are not available, so the requester can fetch them |
| 540 | +from other peers. |
| 541 | + |
| 542 | +The cellAndProof element contains the cell data along with the proof needed to verify |
| 543 | +that it belongs to the original payload. |
| 544 | +While its structure can vary depending on the verification method, |
| 545 | +it should allow the recipient to infer which cell IDs were skipped. |
| 546 | + |
512 | 547 | ## Change Log
|
513 | 548 |
|
| 549 | +### eth/70 () |
| 550 | + |
| 551 | +Version 70 added the [CellAvailability] message to exchange custody information |
| 552 | +which represents cell IDs sending peer has stored. New message types, |
| 553 | +[GetCellAndProofs] and [CellAndProofs] were introduced to support cell-level messaging. |
| 554 | + |
514 | 555 | ### eth/69 ([EIP-7642], April 2025)
|
515 | 556 |
|
516 | 557 | Version 69 changed the [Status] message to include information about the available block
|
@@ -624,6 +665,9 @@ Version numbers below 60 were used during the Ethereum PoC development phase.
|
624 | 665 | [GetReceipts]: #getreceipts-0x0f
|
625 | 666 | [Receipts]: #receipts-0x10
|
626 | 667 | [BlockRangeUpdate]: #blockrangeupdate-0x11
|
| 668 | +[CellAvailability]: #cellavailability-0x12 |
| 669 | +[GetCellAndProofs]: #getcellandproofs-0x13 |
| 670 | +[CellAndProofs]: #cellandproofs-0x14 |
627 | 671 | [RLPx]: ../rlpx.md
|
628 | 672 | [EIP-155]: https://eips.ethereum.org/EIPS/eip-155
|
629 | 673 | [EIP-1559]: https://eips.ethereum.org/EIPS/eip-1559
|
|
0 commit comments