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.