@@ -123,6 +123,38 @@ of it (either because it was previously sent or because it was informed from thi
123
123
originally). This is usually achieved by remembering a set of transaction hashes recently
124
124
relayed by the peer.
125
125
126
+ ### Blob Transaction
127
+
128
+ Blob transaction carries one or more large objects called blobs, in addition to the normal
129
+ transaction payload. The transaction also includes metadata that allows peers to verify
130
+ blob fragments (cells) they exchange over the network.
131
+
132
+ - ` cell ` : Cell is a fragment of a blob, computed by splitting the blob and applying
133
+ the erasure-code defined in EIP-7594. In an extended blob, a cell can be identified by its index.
134
+
135
+ - Commitment: Commitment is a cryptographic value bound to a blob. It is used in inclusion
136
+ verification to ensure that any given cell is part of the original blob.
137
+
138
+ - Proof: Proof is a cell-specific data used during the inclusion verification of associated cell.
139
+
140
+ - Versioned hash (` vhash ` ): Versioned hash is the identifier for a blob, which is calculated
141
+ taking the hash of the blob's commitment, prefixed with a version byte. Peers can specify
142
+ which blob's cells they want to request.
143
+
144
+ Note that cells are not sent with the transaction itself but are exchanged separately between peers.
145
+
146
+ ### Cell Exchange
147
+
148
+ When a new cell is added to a peer's pool, it should be announced to the network using
149
+ the [ CellAvailability] message. All peers that receive the message can request
150
+ the cell whose index is specified in the message using the [ GetCells] message.
151
+ Clients can selectively store cells according to their local parameters.
152
+
153
+ A node should never announce availability to a peer that it can infer to already
154
+ have the associated cell. This can be achieved by remembering set of versioned hashes
155
+ and cell indices announced by each peer.
156
+
157
+
126
158
### Transaction Encoding and Validity
127
159
128
160
Transaction objects exchanged by peers have one of two encodings. In definitions across
@@ -513,44 +545,36 @@ received updates.
513
545
514
546
### CellAvailability (0x12)
515
547
516
- ` [request-id: P, [vhash₁: B_32, vhash₂: B_32, ...], custodyids: B ] `
548
+ ` [[vhash₁: B_32, vhash₂: B_32, ...], cells: B_16 ] `
517
549
518
550
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 .
551
+ The list of ` vhash ` values represents the commitment hashes of payloads for which cells are available.
552
+ The ` cells ` element is a bitmap marking the indices of cells in the transaction payload
553
+ stored by the sending peer. For each cell stored by the peer the corresponding bit is set .
522
554
523
- ### GetCellAndProofs (0x13)
555
+ ### GetCells (0x13)
524
556
525
- ` [request-id: P, [vhash₁: B_32, vhash₂: B_32, ...], requestids : B] `
557
+ ` [request-id: P, [vhash₁: B_32, vhash₂: B_32, ...], cells : B] `
526
558
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.
559
+ This message requests the peer to return cells of the given vhashes.
560
+ The ` cells ` element, a bitmap, specifies indices of the requested cells.
530
561
531
- ### CellAndProofs (0x14)
562
+ ### Cells (0x14)
532
563
533
- ` [request-id: P, [[vhash₁: B_32, [cellAndProof ₁: B, cellAndProof ₂: B, ...]], [vhash₂: B_32, [cellAndProof ₁: B, cellAndProof ₂: B, ...]], ...]] `
564
+ ` [request-id: P, [[vhash₁: B_32, [index ₁: P, cell₁: B], [index ₂: P, cell₂: B, ...]], [vhash₂: B_32, [index ₁: P, cell₁: B], [index₂: P, cell ₂: B, ...]], ...]] `
534
565
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.
566
+ This is the response to [ GetCells] .
567
+ Each element must match the vhash and cells specified in the request.
539
568
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.
569
+ from other peers.
546
570
547
571
## Change Log
548
572
549
573
### eth/70 ()
550
574
551
575
Version 70 added the [ CellAvailability] message to exchange custody information
552
576
which represents cell IDs sending peer has stored. New message types,
553
- [ GetCellAndProofs ] and [ CellAndProofs ] were introduced to support cell-level messaging.
577
+ [ GetCells ] and [ Cells ] were introduced to support cell-level messaging.
554
578
555
579
### eth/69 ([ EIP-7642] , April 2025)
556
580
@@ -666,8 +690,8 @@ Version numbers below 60 were used during the Ethereum PoC development phase.
666
690
[ Receipts ] : #receipts-0x10
667
691
[ BlockRangeUpdate ] : #blockrangeupdate-0x11
668
692
[ CellAvailability ] : #cellavailability-0x12
669
- [ GetCellAndProofs ] : #getcellandproofs -0x13
670
- [ CellAndProofs ] : #cellandproofs -0x14
693
+ [ GetCells ] : #getcells -0x13
694
+ [ Cells ] : #cells -0x14
671
695
[ RLPx ] : ../rlpx.md
672
696
[ EIP-155 ] : https://eips.ethereum.org/EIPS/eip-155
673
697
[ EIP-1559 ] : https://eips.ethereum.org/EIPS/eip-1559
0 commit comments