EIP-8025 -- Networking¶
This document contains the networking specification for EIP-8025.
Table of contents¶
- Table of contents
- Constants
- Containers
- The gossip domain: gossipsub
- Topics and messages
- The Req/Resp domain
- Messages
Constants¶
Note: There are MAX_EXECUTION_PROOFS_PER_PAYLOAD (from
beacon-chain.md) execution proof subnets to provide 1-to-1
mapping with proof systems. Each proof system gets its own dedicated subnet.
Containers¶
Note: Execution proofs are broadcast directly as SignedExecutionProof
containers. No additional message wrapper is needed.
The gossip domain: gossipsub¶
Topics and messages¶
Global topics¶
execution_proof_{subnet_id}¶
Execution proof subnets are used to propagate execution proofs for specific proof systems.
The execution proof subnet for a given proof_id is:
The following validations MUST pass before forwarding the
signed_execution_proof on the network:
- [IGNORE] The proof is the first valid proof received for the tuple
  (signed_execution_proof.message.zk_proof.public_inputs.block_hash, subnet_id).
- [REJECT] The signed_execution_proof.message.validator_indexis within the known validator registry.
- [REJECT] The signed_execution_proof.signatureis valid with respect to the validator's public key.
- [REJECT] The signed_execution_proof.message.zk_proof.proof_datais non-empty.
- [REJECT] The proof system ID matches the subnet:
  signed_execution_proof.message.zk_proof.proof_type == subnet_id.
- [REJECT] The execution proof is valid as verified by
  verify_execution_proof()with the appropriate parent and block hashes from the execution layer.
The Req/Resp domain¶
Messages¶
ExecutionProofsByHash¶
Protocol ID: /eth2/beacon/req/execution_proofs_by_hash/1/
The <context-bytes> field is calculated as
context = compute_fork_digest(fork_version, genesis_validators_root).
Request Content:
Response Content:
Requests execution proofs for the given execution payload block_hash. The
response MUST contain all available proofs for the requested block hash, up to
MAX_EXECUTION_PROOFS_PER_PAYLOAD.
The following validations MUST pass:
- [REJECT] The block_hashis a 32-byte value.
The response MUST contain:
- All available execution proofs for the requested block hash.
- The response MUST NOT contain more than MAX_EXECUTION_PROOFS_PER_PAYLOADproofs.