Skip to content
Draft
Changes from 1 commit
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
e0bfa16
add: add eth70 spec
healthykim Aug 14, 2025
5ba0075
fix: omit proof messaging
healthykim Aug 15, 2025
556cc66
add: add a link to peerDAS
healthykim Aug 15, 2025
4f29887
fix: restore Transactions msg spec
healthykim Aug 15, 2025
75753f0
fix: rename ids to index
healthykim Aug 15, 2025
e558fa1
fix: specify the length of cells
healthykim Aug 15, 2025
ce56fc7
fix: integrate bitmap to hash announcement
healthykim Aug 19, 2025
1d36625
fix: change cells message
healthykim Aug 20, 2025
efe662b
chore: fix typo
healthykim Aug 20, 2025
9a8ff92
add: add explanation about bitmap granularity
healthykim Aug 20, 2025
0896be2
add: add constraint in Cells message
healthykim Aug 20, 2025
6caf1bc
add: modify intro
healthykim Aug 20, 2025
bb37e52
add: add behaviour
healthykim Aug 26, 2025
6021b98
add detailed explanation of the Cells message
healthykim Aug 26, 2025
a902ea9
clarify meaning of cells field
healthykim Aug 26, 2025
c2a1f03
clarify meaning of cells field
healthykim Aug 26, 2025
744324f
fix typo
healthykim Aug 26, 2025
eab5207
fix typo
healthykim Aug 26, 2025
9e049e7
polish intro
healthykim Aug 26, 2025
bda330c
add more information about custody set
healthykim Aug 26, 2025
cafd6d3
edit intro
healthykim Aug 26, 2025
24be46e
modify intro
healthykim Aug 29, 2025
7d162ef
clarify cell index vs. tx better
cskiraly Aug 31, 2025
390d9bc
fix typo
cskiraly Aug 31, 2025
5e476bb
improve explanation
cskiraly Aug 31, 2025
4161bd1
edit the number of cell indices set under pull behavior
healthykim Aug 31, 2025
46fffe3
clarify scope of cells field
healthykim Aug 31, 2025
c064077
fix the incorrect restriction on the number of cells that can be requ…
healthykim Aug 31, 2025
4cc7746
add parameter table and references to parameters
healthykim Sep 1, 2025
6d926b1
clarify load balancing requirements
healthykim Sep 1, 2025
2b12215
clarify the difference between p and MIN_P
healthykim Sep 1, 2025
bd2207a
fix typo
healthykim Sep 1, 2025
edb32f5
move peer disconnection to getcells from cells
healthykim Sep 1, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
add: add eth70 spec
  • Loading branch information
healthykim committed Aug 14, 2025
commit e0bfa16f45014aaa51259bf794242b5a15306f1e
50 changes: 47 additions & 3 deletions caps/eth.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Ethereum Wire Protocol (ETH)

'eth' is a protocol on the [RLPx] transport that facilitates exchange of Ethereum
blockchain information between peers. The current protocol version is **eth/69**. See end
blockchain information between peers. The current protocol version is **eth/70**. See end

Choose a reason for hiding this comment

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

There are already eth/70 proposals in progress, so the number will be different
We can update at the end in the doc, but maybe remove from title to avoid confusion

Copy link
Author

Choose a reason for hiding this comment

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

I removed all eth/70 numbering in this PR and on doc so that we can add it back at the end.

of document for a list of changes in past protocol versions.

### Basic Operation
Expand Down Expand Up @@ -361,11 +361,13 @@ of the sending node.

### Transactions (0x02)

`[tx₁, tx₂, ...]`
`[[tx₁, tx₂, ...], custodyids: B]`

Specify transactions that the peer should make sure is included on its transaction queue.
The items in the list are transactions in the format described in the main Ethereum
specification. Transactions messages must contain at least one (new) transaction, empty
specification. The custodyids element is a bitmap representing which cell IDs in transaction
payloads are stored by the sending peer, with each stored cell’s index marked as 1.
Transactions messages must contain at least one (new) transaction, empty
Transactions messages are discouraged and may lead to disconnection.

Nodes must not resend the same transaction to a peer in the same session and must not
Expand Down Expand Up @@ -509,8 +511,47 @@ received updates.
At the same time, client implementations must take care to not disconnect all syncing
peers purely on the basis of their BlockRangeUpdate.

### CellAvailability (0x12)

`[request-id: P, [vhash₁: B_32, vhash₂: B_32, ...], custodyids: B]`

This message announces the cell availability of transaction payloads.
The list of vhash values represents the commitment hashes of payloads for which cells are available.
The custodyid element is a bitmap marking the IDs of cells in the transaction payload
stored by the sending peer, with each stored cell’s index set to 1.

### GetCellAndProofs (0x13)

`[request-id: P, [vhash₁: B_32, vhash₂: B_32, ...], requestids: B]`

This message request peer to return cells and proofs of the given versioned hash
of the payload commitment.
The requestids element is a bitmap representing IDs of cells required.

### CellAndProofs (0x14)

`[request-id: P, [[vhash₁: B_32, [cellAndProof₁: B, cellAndProof₂: B, ...]], [vhash₂: B_32, [cellAndProof₁: B, cellAndProof₂: B, ...]], ...]]`

This is a response to GetCellAndProofs, which provides the requested cells and their proofs.
Each list element contains the versioned hash of the payload commitment that includes
the cell, the cell itself, and a proof to verify the cell’s inclusion.
Each element must match the vhash specified in the request.
The sender can skip any cells that are not available, so the requester can fetch them
from other peers.

The cellAndProof element contains the cell data along with the proof needed to verify
that it belongs to the original payload.
While its structure can vary depending on the verification method,
it should allow the recipient to infer which cell IDs were skipped.

## Change Log

### eth/70 ()

Version 70 added the [CellAvailability] message to exchange custody information
which represents cell IDs sending peer has stored. New message types,
[GetCellAndProofs] and [CellAndProofs] were introduced to support cell-level messaging.

### eth/69 ([EIP-7642], April 2025)

Version 69 changed the [Status] message to include information about the available block
Expand Down Expand Up @@ -624,6 +665,9 @@ Version numbers below 60 were used during the Ethereum PoC development phase.
[GetReceipts]: #getreceipts-0x0f
[Receipts]: #receipts-0x10
[BlockRangeUpdate]: #blockrangeupdate-0x11
[CellAvailability]: #cellavailability-0x12
[GetCellAndProofs]: #getcellandproofs-0x13
[CellAndProofs]: #cellandproofs-0x14
[RLPx]: ../rlpx.md
[EIP-155]: https://eips.ethereum.org/EIPS/eip-155
[EIP-1559]: https://eips.ethereum.org/EIPS/eip-1559
Expand Down