diff --git a/specs/electra/p2p-interface.md b/specs/electra/p2p-interface.md index ebdcaaa831..a6efd40c99 100644 --- a/specs/electra/p2p-interface.md +++ b/specs/electra/p2p-interface.md @@ -16,6 +16,10 @@ The specification of these changes continues in the same format as the network s - [Global topics](#global-topics) - [`beacon_aggregate_and_proof`](#beacon_aggregate_and_proof) - [`beacon_attestation_{subnet_id}`](#beacon_attestation_subnet_id) +- [The Req/Resp domain](#the-reqresp-domain) + - [Messages](#messages) + - [BeaconBlocksByRange v3](#beaconblocksbyrange-v3) + - [BlobSidecarsByRange v2](#blobsidecarsbyrange-v2) @@ -57,3 +61,56 @@ The following convenience variables are re-defined The following validations are added: * [REJECT] `len(committee_indices) == 1`, where `committee_indices = get_committee_indices(attestation)`. * [REJECT] `attestation.data.index == 0` + +## The Req/Resp domain + +### Messages + +#### BeaconBlocksByRange v3 + +**Protocol ID:** `/eth2/beacon_chain/req/beacon_blocks_by_range/3/` + +Request Content: +``` +( + block_root: Root + start_slot: Slot + count: uint64 +) +``` + +Response Content: +``` +( + List[SignedBeaconBlock, MAX_REQUEST_BLOCKS] +) +``` + +Extends behaviour of BeaconBlocksByRange v2 as defined in [the altair p2p spec](../altair/p2p-interface.md). + +Requests beacon blocks in the slot range `[start_slot, start_slot + count)`, leading up to `block_root`. If the block with `block_root` is unknown the responder MUST respond with `3: ResourceUnavailable`. If the slot of the block with `block_root` is less than `start_slot + count` the responder MUST respond with `1: InvalidRequest`. + +#### BlobSidecarsByRange v2 + +**Protocol ID:** `/eth2/beacon_chain/req/blob_sidecars_by_range/2/` + +Request Content: +``` +( + block_root: Root + start_slot: Slot + count: uint64 +) +``` + +Response Content: +``` +( + List[BlobSidecar, MAX_REQUEST_BLOB_SIDECARS] +) +``` + +Extends behaviour of BlobSidecarByRange v2 as defined in [the deneb p2p spec](../deneb/p2p-interface.md). + +Requests blob sidecars in the slot range `[start_slot, start_slot + count)`, leading up to `block_root`. If the block with `block_root` is unknown the responder MUST respond with `3: ResourceUnavailable`. If the slot of the block with `block_root` is less than `start_slot + count` the responder MUST respond with `1: InvalidRequest`. +