EIP-8148 · Proposed for Hegotá

Custom sweep threshold for validators

Set how much ETH stays in your validator. Let rewards add to your stake up to that amount. Receive the excess automatically.

Interactive diagram of a custom validator sweep threshold. As the pointer moves, the red line and label show a new threshold while the pale line marks the current value. Click to set it, or focus the diagram and use the arrow keys. If the selected threshold is below the balance, the diagram first makes a partial withdrawal and then applies the new threshold. Rewards stay in the validator below the threshold and move to the withdrawal address above it.
Why this proposal matters ↗
The problem EIP-8148 addresses
Follow the Hegotá roadmap ↗
Proposals under consideration
Explore the client changes ↗
Beacon-chain specification
Review the system contract ↗
Execution-layer implementation
The problem

Reward withdrawals are too rigid

Ethereum gives stakers two fixed options: receive rewards above 32 ETH, or let them compound up to 2,048 ETH.

0x01

32 ETH

Rewards arrive automatically

A 0x01 validator keeps 32 ETH staked. Ethereum sends rewards above 32 ETH to its withdrawal address: the account that receives ETH from the validator.

Those rewards do not increase the stake. To stake them with 0x01 validators, you must collect another 32 ETH for a new validator.

0x02 · Up to

2,048 ETH

Rewards increase the stake

A 0x02 validator keeps its rewards. They increase its stake, so Ethereum calculates more rewards. This is compounding.

Automatic withdrawals start above 2,048 ETH. Below that level, you must send a partial withdrawal request to use your rewards.

Manual withdrawals add work and delay

Each partial withdrawal starts with a request from the withdrawal address. The transaction has a gas cost and a request fee. The exit queue can add a delay before the rewards become available.

  1. Request
  2. Gas + request fee
  3. Exit queue

Read the EIP motivation

Who needs automatic rewards?

Stakers use rewards for operating costs or as income. They may also want those rewards to increase their stake.

Solo stakers

Solo stakers run validators with their own ETH. Rewards can cover hardware, electricity, or other expenses.

Non-custodial staking clients

A service runs the validator, but the client controls its withdrawal address. This is a non-custodial staking service.

Even a large operator can serve many clients with less than 2,048 ETH each. It cannot send withdrawal requests for them. Each client must send their own requests.

Operators in staking pools

In some pools, operators supply a bond: ETH that can cover penalties. The pool supplies the rest of the stake. A full 2,048 ETH validator can require more bond than a home staker can supply.

A barrier to consolidation

Stakers who need automatic rewards can keep separate 32 ETH validators. Consolidation into fewer 0x02 validators would replace those withdrawals with manual requests below 2,048 ETH.

P2P.org reports that some clients keep separate 32 ETH validators to receive automatic rewards. EIP-8148 would let these clients consolidate and keep automatic withdrawals at a threshold they set.

Hear P2P.org explain the withdrawal barrier

This proposal changes withdrawals from the validator balance. It does not change transaction fee or MEV payments from the execution layer.

The solution

Compounding with a threshold you set

EIP-8148 lets each 0x02 validator use its own sweep threshold. This is the balance above which Ethereum sends automatic withdrawals.

How rewards move

Below the threshold, rewards stay in the validator and increase its stake. Above it, Ethereum sends the excess balance to the withdrawal address through the automatic withdrawal sweep.

The sweep sends the excess in each cycle. You receive it automatically, without a transaction or fee.

Ethereum uses the effective balance to calculate rewards and voting weight. It updates in steps and is capped by the threshold. It must be at or above the threshold before automatic withdrawals start.

Set the threshold

Select a value from 32 to 2,048 ETH, in steps of 1 ETH. There are two ways to set it.

For a new validator
The initial deposit can include the threshold in the 0x02 withdrawal credentials. Deposit software encodes this value.
For a registered validator
The withdrawal address sends a request to the system contract. Each request sets the threshold for one validator and has a gas cost and a request fee.

Only the withdrawal address can change the threshold. This keeps control with the staker, including when someone else operates the validator.

The new threshold must be at or above the validator balance when the network processes the request.

Keep the stake you choose

Set the threshold to the amount you want to keep staked. The sweep sends rewards above that threshold to your withdrawal address.

The sweep sends further rewards in later cycles. The interval between withdrawals depends on the sweep cycle.

For example

You deposit 128 ETH into a new 0x02 validator with a 128 ETH sweep threshold. The validator keeps 128 ETH staked. The sweep sends the rewards to your withdrawal address.

For a balance of 128.2 ETH, the next sweep works as follows:

Stays in the validator
128 ETH
Goes to the withdrawal address
0.2 ETH

Adjust the stake later

Before you add stake, make sure the threshold is high enough. If you increase it, wait for the network to accept the change. Then add ETH or transfer stake from another validator through consolidation. The sweep uses the total balance, so it can also withdraw deposits above the threshold.

To set a threshold below the current balance, first make a partial withdrawal. After it completes, set the new threshold. This preserves the normal withdrawal queue.

How to confirm a threshold change

The default stays at 2,048 ETH

Custom thresholds are optional. At activation, registered 0x02 validators keep the 2,048 ETH default. Rewards still compound below it, and the sweep automatically withdraws the excess above it.

The change is backward compatible for stakers. If you do nothing, validators with 0x00, 0x01, or 0x02 credentials keep their existing withdrawal behavior.

For protocol details, start with the EIP specification, then see how clients validate a threshold change, calculate sweep withdrawals, and update effective balance.

Effect on the network

More stakers can consolidate

EIP-7251 lets operators move stake into fewer 0x02 validators. EIP-8148 lets them keep automatic reward withdrawals at a balance they select.

Fewer validators for the same stake

256 ETH, either way

Today · 0x01

8 × 32 ETH

32 ETH threshold per validator

With EIP-8148 · 0x02

1 × 256 ETH

256 ETH custom threshold

The same 256 ETH stays staked. The sweep sends rewards automatically in both cases.

Custom thresholds let more stakers consolidate, so fewer validators send votes for the network to process. Proposals for faster finality also use a smaller validator set. The same flexibility lets staking pools design smaller 0x02 validators with automatic reward withdrawals. Each pool sets its own bond requirements.

For operator context, read about validator consolidation, then watch the discussions about smaller staking setups and operator bond requirements.

For client developers

Built on mechanisms clients already use

EIP-8148 adds a system contract, a request type, and a threshold for each validator. Requests and withdrawals use mechanisms clients already implement.

Execution layer

Already in use

EIP-7002 defines the queue and fee model. EIP-7685 defines how execution clients send requests to consensus clients.

New in EIP-8148

  • Add a system contract that accepts a validator public key and the new threshold.
  • Add a threshold request type for transfer to consensus clients.

Consensus layer

Already in use

Clients already run the withdrawal sweep and update effective balances.

New in EIP-8148

  • Store thresholds in a separate list in the beacon state. Keep the Validator container unchanged.
  • Process the new requests. Validate the withdrawal address, validator status, and threshold.
  • Use each validator’s threshold in the current sweep and effective balance updates.
  • Initialize defaults at the fork and on a switch to 0x02. Read custom thresholds from new validator deposits.

Implementing EIP-8148 in a client? Start with the protocol specification, follow the beacon-chain changes, and review the system contract implementation.

Status ·

Progress toward Hegotá

EIP-8148 is proposed for Hegotá. The specification, system contract, and Prysm proof of concept are available for review.

EIP-8148 proposal
Published · Draft
Hegotá proposal
Proposed for Inclusion
Consensus specification
Published in consensus-specs
System contract implementation
PR #54 available for review
Client implementations
Prysm proof of conceptOther clients pending
System contract audit
Pending
Devnets
Pending

Next steps: other client implementations, devnets, the system contract audit, and a decision on Hegotá inclusion.

Questions

Operation, fees, and compatibility

The basics

Why not use manual withdrawals?

Manual withdrawals let you select an amount each time. Each request has a gas cost, a request fee, and a possible queue delay.

A custom threshold lets the sweep send the excess balance automatically. You do not need a new request for each withdrawal.

Do I have to set a custom threshold?

No. Custom thresholds are optional. At activation, registered 0x02 validators keep the 2,048 ETH default. The withdrawal rules for 0x00 and 0x01 validators stay the same.

Can I use this with one 0x01 validator?

You can use a custom threshold after switching to 0x02 under EIP-7251, without creating a second validator. The switch starts with the 2,048 ETH threshold.

After activation of EIP-8148, the withdrawal address can send a request for a custom threshold.

See how the consensus specification applies the default threshold during the switch.
Can I make a partial withdrawal below the threshold?

The partial withdrawal mechanism stays available with the same eligibility rules, fees, and queue delay. A custom threshold does not change the exit rules.

Operation

What can prevent a threshold change?

The validator must have 0x02 credentials and must not have started its exit. The request must come from its withdrawal address.

The threshold must be from 32 to 2,048 ETH, in steps of 1 ETH. It must be at or above the validator balance when the consensus layer processes the request. Rewards can increase that balance before processing.

If the consensus layer rejects the request, the threshold stays the same. There is no fee refund.

How much does a threshold change cost?

Each request has a gas cost and a request fee. The minimum request fee is 1 wei.

The fee mechanism has a target of two requests per block across the network. The fee increases with excess demand. Earlier demand can keep the fee above its minimum.

With a threshold in the initial deposit, you do not send a threshold request.

Can a multisig or contract send the request?

A multisig or contract can send the request if it is the withdrawal address. The contract must have a function that sends the request to the system contract. The consensus layer compares the caller address with the withdrawal address. The consensus layer rejects a request from a different address.

Does one request set thresholds for more than one validator?

Each request contains one validator public key. A contract withdrawal address can send more than one request in one transaction. Each request has a fee.

The system contract sends up to 16 requests per block to the consensus layer. A long queue can increase the time before processing. Network demand can increase the request fee.

How do I read the threshold?

Read the validator’s entry in validator_sweep_thresholds in the beacon state. Make sure that it contains the value you set.

The transaction receipt shows the result of the contract call. The beacon state shows the threshold after request processing.

Client implementation

Which deposits can set a threshold?

The fork sets defaults for registered validators. It does not read a threshold from their credentials.

For a new validator, the first deposit contains the credentials. A zero threshold or a value outside 32–2,048 ETH gives the 2,048 ETH default. Top-up deposits do not replace these credentials or change the threshold.

Why are thresholds outside the Validator container?

The list keeps thresholds outside the Validator container. It uses the validator index, as the balance list does.

Each threshold is a uint64 value in Gwei: eight bytes before list and database overhead. The withdrawal sweep and effective balance updates read this value.

Read why EIP-8148 keeps threshold data outside the Validator container, or inspect the corresponding BeaconState field.
Why does the maximum effective balance stay at 2,048 ETH?

Custom thresholds and a higher maximum effective balance have different effects. A higher maximum lets each validator hold more stake. A custom threshold sets the balance for automatic withdrawals below that maximum.

The authors keep these changes in different proposals to limit the scope of EIP-8148. They explain the trade-off in the proposal discussion.

Operators and the Ethereum community

Voices of support

Node operators are backing EIP-8148 for a practical reason: consolidate validators and keep rewards accessible. See validator signals, operator use cases, Hegotá priorities, and feedback on the design.

Validator signals

View on EVA Hub
ETH in support
49,330
of participating stake in support
100%

9 signals · 9 yes · 0 no · 0 abstain

49,330 ETH represented

Checked · Methodology

Hegotá priorities

For EIP-8148

Rocket Pool

Langers · Core team

The Rocket Pool core team support this EIP.

We still have a lot of design work to confirm but we believe this EIP will support our migration to 0x02 validators.

Blockdaemon

Node operator

Blockdaemon supports EIP-8148 and would like to see it considered for Hegotá.

We run Ethereum validators for a large number of institutional clients, and a configurable sweep threshold is one of the most frequently requested features we hear from them. The reason is nearly always the same. Institutions need rewards to arrive as a predictable, automatic stream.

Kukis Global

Andrew · Node operator

For node operators and staking protocols, a configurable per-validator sweep threshold is what makes consolidation under EIP-7251 practical: rewards keep arriving on the sweep as they do for 0x01 validators today, with no permanent triggered-withdrawal pipeline to build and run.

P2P.org

Amir · Node operator

The net effect today is that the network does not get the consolidation. Stake that would happily run at 512 or 1024 ETH per validator stays at 32, because reward delivery matters more to the client than validator count does.

Launchnodes

Yash · Node operator

We think operators and stakers should have the flexibility to determine how much ETH they want to maintain within a consolidated validator.

A configurable sweep threshold provides exactly that flexibility. Operators could benefit from consolidation while selecting a threshold that better reflects their operational, liquidity and risk requirements, rather than having 2048 ETH as the only automatic sweep point.

teee

Node operator · Solo staker

Being able to choose a lower sweep threshold would make 0x02 much more workable for CSM operators. You could compound into more effective-balance increments, but still have rewards sweep automatically at a level that makes sense for you instead of only at 2,048 ETH.

If CSM could work this way, I’d be comfortable running more validators through it. I think that would help bring more stake to independent operators and improve decentralisation.

CelticWarrior

Solo staker

Those operators that do consolidate to 0x02 at some number less than the 2048 ETH threshold are now trapped by the unpredictable timing of withdrawal cashflow that 0x02 demands. The best solution to mitigate this problem is EIP 8148 to make the sweep threshold configurable.

Anders Elowsson

Ethereum Foundation researcher

Nice, this EIP checks out with respect to the concerns outlined in EIP-8068 as far as I can tell. It restricts the sweep withdrawal threshold to the EB (whole ETH at the moment), so no new gaming vectors there.

EIP-8148 is Proposed for Inclusion in Hegotá. The final scope is still under discussion.

Support the proposal

Support EIP-8148 for Hegotá

Help client teams review the proposal for Hegotá. Rank it, describe how your validators would use it, or comment on the specification.

Client teams and community

Rank the proposal

Compare EIP-8148 with the other Hegotá proposals. Explain your ranking on Forkcast.

Rank on Forkcast
Validators

Give validator feedback

Describe how your validators would use custom thresholds. EthVA weights feedback by stake.

Give feedback on EthVA
Researchers and protocol teams

Comment on the specification

Add a use case, question, or implementation concern to the Ethereum Magicians thread. Give the reasons for each change.

Comment on Magicians