--- eip: 8015 title: Remove `deposit` and `eth1data` fields description: Remove legacy `deposits` and `eth1_data` fields from `BeaconBlockBody` after EIP-6110 finalization author: Terence (@terencechain) discussions-to: https://ethereum-magicians.org/t/eip-8015-remove-legacy-deposit-and-eth1data-fields/25401 status: Stagnant type: Standards Track category: Core created: 2025-08-22 requires: 6110, 7732 --- ## Abstract This EIP removes the legacy `deposits` and `eth1_data` fields from the `BeaconBlockBody` structure after [EIP-6110](./eip-6110.md) 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. ## Motivation 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: - **Simplified validation**: Removes deprecated validation logic and code paths - **Improved maintainability**: Eliminates technical debt from the transition period ## Specification 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](https://www.rfc-editor.org/rfc/rfc2119) and [RFC 8174](https://www.rfc-editor.org/rfc/rfc8174). ### Consensus Layer #### Activation Conditions This EIP SHALL only be activated when both of the following conditions are met: 1. EIP-6110 has been fully finalized: `state.eth1_deposit_index == state.deposit_requests_start_index` 2. EIP-7732 is in effect #### BeaconBlockBody Modifications 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: ```python 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] ``` #### Validation Changes **Block processing modifications:** 1. Remove `process_eth1_data()` function calls from block processing 2. Remove `process_deposits()` function calls from block processing 3. Remove eth1_data voting validation logic 4. Remove legacy deposit validation logic **State transition modifications:** 1. Remove eth1_data related fields from state transition functions 2. Remove legacy deposit processing from `process_operations()` #### BeaconState Cleanup 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. ## Rationale ### Timing of Removal The fields are removed after EIP-6110 finalization to ensure: - All pending deposits from the legacy system have been processed - No validator can be affected by the removal - The transition is complete and irreversible - State consistency is maintained across all honest nodes ### Dependency on EIP-7732 This EIP requires EIP-7732 because: - EIP-7732 already modified the `BeaconBlockBody` structure significantly - It provides the architectural foundation for simplified block bodies - The timing aligns with the broader consensus layer improvements ## Backwards Compatibility ## Security Considerations The removal of legacy fields poses minimal security risk because: - The fields are already unused after EIP-6110 finalization - All deposits are processed through the new EIP-6110 mechanism ## Copyright Copyright and related rights waived via [CC0](../LICENSE.md).