This EIP removes the legacy deposits
and eth1_data
fields from the BeaconBlockBody
structure after EIP-6110 has been fully finalized. These fields become obsolete once all validators have transitioned to the new in-protocol deposit processing mechanism introduced in EIP-6110.
EIP-6110 introduced in-protocol deposit processing by moving validator deposits to the execution layer as part of the EIP-7685 request framework. This change eliminated the need for the consensus layer's proposer voting mechanism for deposits. However, during the transition period, both the legacy deposit mechanism (using deposits
and eth1_data
fields) and the new mechanism coexist to ensure smooth migration.
Once EIP-6110 has been fully finalized and the transition period is complete (when state.eth1_deposit_index == state.deposit_requests_start_index
), the legacy deposit fields become permanently unused and can be safely removed. This cleanup provides several benefits:
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 and RFC 8174.
This EIP SHALL only be activated when both of the following conditions are met:
state.eth1_deposit_index == state.deposit_requests_start_index
The BeaconBlockBody
container is modified to remove the following fields:
Removed fields:
- deposits: List[Deposit, MAX_DEPOSITS]
- eth1_data: Eth1Data
The updated BeaconBlockBody
structure becomes:
class BeaconBlockBody(Container):
randao_reveal: BLSSignature
graffiti: Bytes32
proposer_slashings: List[ProposerSlashing, MAX_PROPOSER_SLASHINGS]
attester_slashings: List[AttesterSlashing, MAX_ATTESTER_SLASHINGS_ELECTRA]
attestations: List[Attestation, MAX_ATTESTATIONS_ELECTRA]
voluntary_exits: List[SignedVoluntaryExit, MAX_VOLUNTARY_EXITS]
sync_aggregate: SyncAggregate
bls_to_execution_changes: List[SignedBLSToExecutionChange, MAX_BLS_TO_EXECUTION_CHANGES]
# From EIP-7732
signed_execution_payload_header: SignedExecutionPayloadHeader
payload_attestations: List[PayloadAttestation, MAX_PAYLOAD_ATTESTATIONS]
Block processing modifications:
process_eth1_data()
function calls from block processingprocess_deposits()
function calls from block processing State transition modifications:
process_operations()
The following fields become unused after activation and MAY be removed in future updates:
eth1_data: Eth1Data
eth1_data_votes: List[Eth1Data, EPOCHS_PER_ETH1_VOTING_PERIOD * SLOTS_PER_EPOCH]
eth1_deposit_index: uint64
Note: These fields are kept for historical state root verification but are no longer actively used.
The fields are removed after EIP-6110 finalization to ensure:
This EIP requires EIP-7732 because:
BeaconBlockBody
structure significantlyThe removal of legacy fields poses minimal security risk because:
Copyright and related rights waived via CC0.