Skip to main content
netspecsEthereum networking

4.2.8.Attestation batching

Stage
Future
Validity
Future proposal; no activation claim.
Sources
2 pinned sources

EIP-8243 is a Draft proposal with no fork activation. It changes the attestation subnet payload from one SingleAttestation to an SSZ union that can carry a source-side batch. It does not change the on-chain Attestation container or state transition.

Wire union

SingleAttestation remains:

SingleAttestation:
  committee_index: CommitteeIndex
  attester_index: ValidatorIndex
  data: AttestationData
  signature: BLSSignature

The proposal defines:

BatchSealPreimage:
  slot: Slot
  committee_index: CommitteeIndex
  batcher: ValidatorIndex

BatcherPreimage:
  slot: Slot
  committee_index: CommitteeIndex
  aggregation_bits: Bitlist[MAX_VALIDATORS_PER_COMMITTEE]

BatchAttestation:
  committee_index: CommitteeIndex
  aggregation_bits: Bitlist[MAX_VALIDATORS_PER_COMMITTEE]
  data: AttestationData
  signature: BLSSignature
  batcher: ValidatorIndex
  batch_seal: BLSSignature
  batcher_signature: BLSSignature

WireAttestation = Union[SingleAttestation, BatchAttestation]. Selector 0x00 encodes a single and selector 0x01 encodes a batch, followed by the selected SSZ value. The aggregate attestation signature remains under DOMAIN_BEACON_ATTESTER; batch_seal uses DOMAIN_BATCH_ATTESTER = 0x0B000000, and batcher_signature uses DOMAIN_BATCHER = 0x0B0000FF.

Validation

A single follows the existing committee, subnet, timing, and signature checks. A batch requires at least two aggregation bits, every set bit to name a committee member, and the batcher to be one of those members. The receiver verifies the aggregate attestation signature, the aggregate seal over BatchSealPreimage, and the batcher's composition signature over BatcherPreimage. An unknown selector, malformed SSZ, wrong subnet, invalid signature, or invalid committee member is REJECT.

The batch seal does not bind the aggregation bitfield, so members can pre-sign consent for a slot and batcher. The batcher's signature binds the final composition. Both fields are gossip-only and are discarded before on-chain aggregation.

Deduplication and fallback

For each (slot, committee_index, hash_tree_root(data)), a node tracks seen_attesters and seen_batchers. It ignores a single whose validator is already seen, a batch whose batcher is already seen, or a batch whose entire set of members is already seen. A valid message is accepted only when it adds at least one previously unseen vote. A batch with one bit is invalid as a batch; the validator can send a normal single instead.

This rule bounds accepted messages by committee participation and permits a single leaked vote without suppressing a larger batch. It does not add a slashing condition. A redundant or overlapping batch that fails only the local seen test is ignored without a peer penalty.

Activation status

The proposal does not define an activation fork, network deployment, or client support requirement. A fork specification that adopts it would select the selector-prefixed union for the attestation topic. Until such a specification exists, current attestation networking remains the rule on attestation networking.