Skip to content

Commit ebec514

Browse files
committed
Add distributed blob publishing section to Fulu p2p interface spec.
# Conflicts: # specs/deneb/p2p-interface.md
1 parent ff99bc0 commit ebec514

File tree

2 files changed

+20
-10
lines changed

2 files changed

+20
-10
lines changed

specs/deneb/p2p-interface.md

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,15 @@ Per `context = compute_fork_digest(fork_version, genesis_validators_root)`:
203203
|--------------------------------|---------------------|
204204
| `DENEB_FORK_VERSION` and later | `deneb.BlobSidecar` |
205205

206+
###### Blob retrieval via local execution layer client
207+
208+
In addition to `BlobSidecarsByRoot` requests, recent blobs MAY be retrieved by querying the Execution Layer (i.e. via `engine_getBlobsV1`).
209+
Implementers are encouraged to leverage this method to increase the likelihood of incorporating and attesting to the last block when its proposer is not able to publish blobs on time.
210+
211+
When clients use the local execution layer to retrieve blobs, they MUST behave as if the corresponding `blob_sidecar` had been received via gossip. In particular they MUST:
212+
* publish the corresponding `blob_sidecar` on the `blob_sidecar_{subnet_id}` subnet.
213+
* update gossip rule related data structures (i.e. update the anti-equivocation cache).
214+
206215
##### Attestation subnets
207216

208217
###### `beacon_attestation_{subnet_id}`
@@ -413,16 +422,6 @@ Per `context = compute_fork_digest(fork_version, genesis_validators_root)`:
413422
|--------------------------------|---------------------|
414423
| `DENEB_FORK_VERSION` and later | `deneb.BlobSidecar` |
415424

416-
###### Blob retrieval via local execution layer client
417-
418-
In addition to `BlobSidecarsByRoot` requests, recent blobs MAY be retrieved by querying the Execution Layer (i.e. via `engine_getBlobsV1`).
419-
Implementers are encouraged to leverage this method to increase the likelihood of incorporating and attesting to the last block when its proposer is not able to publish blobs on time.
420-
421-
When clients use the local execution layer to retrieve blobs, they MUST behave as if the corresponding `blob_sidecar` had been received via gossip. In particular they MUST:
422-
423-
* publish the corresponding `blob_sidecar` on the `blob_sidecar_{subnet_id}` subnet.
424-
* update gossip rule related data structures (i.e. update the anti-equivocation cache).
425-
426425
## Design decision rationale
427426

428427
### Why are blobs relayed as a sidecar, separate from beacon blocks?

specs/fulu/p2p-interface.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
- [Blob subnets](#blob-subnets)
2828
- [Deprecated `blob_sidecar_{subnet_id}`](#deprecated-blob_sidecar_subnet_id)
2929
- [`data_column_sidecar_{subnet_id}`](#data_column_sidecar_subnet_id)
30+
- [Distributed Blob Publishing using blobs retreived from local execution layer client](#distributed-blob-publishing-using-blobs-retreived-from-local-execution-layer-client)
3031
- [The Req/Resp domain](#the-reqresp-domain)
3132
- [Messages](#messages)
3233
- [DataColumnSidecarsByRange v1](#datacolumnsidecarsbyrange-v1)
@@ -204,6 +205,16 @@ The following validations MUST pass before forwarding the `sidecar: DataColumnSi
204205

205206
*Note:* In the `verify_data_column_sidecar_inclusion_proof(sidecar)` check, for all the sidecars of the same block, it verifies against the same set of `kzg_commitments` of the given beacon block. Client can choose to cache the result of the arguments tuple `(sidecar.kzg_commitments, sidecar.kzg_commitments_inclusion_proof, sidecar.signed_block_header)`.
206207

208+
###### Distributed Blob Publishing using blobs retreived from local execution layer client
209+
210+
Similar to the Deneb specification, recent blobs MAY be retrieved by querying the Execution Layer via `engine_getBlobsV2`. Clients will be able to convert the EL blob response into data columns to satisfy block availability requirements.
211+
212+
Implementers are encouraged to leverage this method to increase the likelihood of incorporating and attesting to the last block when its proposer is not able to publish data columns on time.
213+
214+
When clients use the local execution layer to retrieve blob and compute data columns, they MUST behave as if the imported `data_column_sidecar` had been received via gossip. Note that this only applies to the data columns gossip topics they are subscribed to - specifically, the node’s assigned custody columns. In particular, clients MUST:
215+
* publish the corresponding `data_column_sidecar` on the `data_column_sidecar_{subnet_id}` subnet.
216+
* update gossip rule related data structures (i.e. update the anti-equivocation cache).
217+
207218
### The Req/Resp domain
208219

209220
#### Messages

0 commit comments

Comments
 (0)