On the Ethereum consensus layer, there are a number of entities called 'validators' that perform a number of duties to progress and secure the block chain. The validator entity is a cryptographic key that is then given an index on chain, and anything that key performs can be signed to prove that it originated from that entity.
One validator is chosen to produce a consensus block every 12 seconds and that includes an execution layer block body that contains the transactions and operations that happen on Ethereum L1, as well as data availability via blobs.
To provide security on the chain, each of these validator entities 'stake' a balance of ETH, against which they can earn rewards, or even get penalties based on what they do on the network.
Each validator has a balance. They don't become active until they reach at least 32.0 ETH. Their balance can exceed 32 ETH, but only 32 ETH will be considered for rewards or penalties(phase0 -> deneb).
This first 32 ETH of a validators balance is their effective balance, and any more than that is not providing security to the chain. This is often referred to as excess balance.
For example, a validator with 33 ETH is said to have an effective balance of 32 ETH, and an excess balance of 1 ETH.
This changes in Electra, where a compounding validator can now have 2048.0ETH effective balance.
A validators balance is the amount of balance that a validator has.
The balance of a validator controls its activation, and potentially exit from the chain.
The first 32.0 ETH of any validator balance is considered it's effective balance, and provides security to the chain. In Electra, compounding validators can have up to 2048 ETH effective balance.
A validators balance above the maximum effective balance is considered excess balance.
Excess balance does not provide security to the chain. For this reason, it can be moved without rate limiting off of the validator balance and back to a withdrawal address, in a process called a 'withdrawal sweep'.
A validator from phase0 until deneb inclusive is able to have a maximum of 32 ETH staked to provide security to the block chain. If that validator balance exceeds 32 ETH, that's ok, but only 32 ETH is considered when looking at rewards or votes for how the chain should progress (via attestation duties).
This maximum effective balance that can be staked has been 32 ETH since phase 0 (the start of the consensus layer), and the main change to date has been that balances in excess of 32 ETH can be recovered to an execution layer address.
At phase 0 -> Bellatrix, balance was locked forever on the consensus layer, and Capella introduced the concept of being able to recover your funds, either the excess of 32 ETH, or when you exit, getting that initial balance back to your execution address that you control.
To incentivise validators to ensure they're active, they can be penalised small amounts for duties they fail to perform, and also earn rewards for duties that they successfully perform. There are also penalties that are more severe for the case where a validator performs conflicting duties, and these are called slashing. A slashing is different from a normal penalty because if you perform it once, you are no longer able to perform duties as a validator and will be exited from the network.
One proposer every slot is chosen every slot to be the proposer of a block - this can be either produced locally, or could be using a builder or relay.
Every epoch, each validator votes for how the chain should proceed via an attestation duty. These are aggregated and included permanently on chain where possible. If the vote doesn't make it into a block, then a penalty is applied, but the penalty is small to try to ensure validators can 'catch up' once online again.
The first byte of a validators withdrawal credentials can be used to differentiate validator capabilities. Initially, we had BLS validators, then fairly early in the piece we added execution credentials as an option for withdrawal addresses.
As a summary of where we're at…
Prefix | Maximum Effective Balance | meaning |
---|---|---|
0x00 |
32.0 ETH | BLS withdrawal credentials, balance is not movable, but you can change from BLS to execution credentials via a 'bls to execution' operation. |
0x01 |
32.0 ETH | Execution address withdrawal credentials. Balance in excess of 32.0 ETH will be periodically transferred to the execution address via a background 'sweep' process. |
0x02 |
2048.0ETH | Execution address withdrawal credentials. Excess balance still moves via 'sweep' process. Known as a 'compounding validator'. |
From phase 0, a function was introduced to control activation of validators, and their exits, to ensure only a certain rate of these validator entities can be activated ('turned on' as a validator) or exited ('turned off' as a validator).
The rate of activation has security implications, because it adjusts the amount of financial security provided by the amount of 'active balance' of the set of validators, so it's important that this is controlled so that we don't lose all security in a short time.
The function basically ensures that the rate per epoch is minimum 4, and increases as validator count increases. This means that there's no upper bound to the number of validators that may enter per epoch, although over time the exits would start reducing the rate because the count of validators changes downwards, which affects the active validator count.
At a count of 1 million active validators, it basically means we're seeing a limit of 15 validators per epoch for activation, and a limit of 15 for exits.
From deneb, because the rate of activation was continually increasing, we limited the activations to introduce a ceiling of 8. The count still increases, but the maximum ensures that activations are limited between 4 - 8 per epoch (depending on active validator count).
Exits remained unchanged from Phase0, so at a million validators this would be roughly 15 validators per epoch.
Compounding validators bring into play the possibility to increase your effective balance (and capacity to earn rewards) without starting a new validator or using staking pools. All you'll need to do is change your validator to compounding, and you'll be able to deposit extra ETH onto that validator.
Further to this, you don't need to exit that key to get a portion of its balance. You can draw it back to as low as 32 ETH, and the validator will remain active on its reduced balance.
Expressed reasons for this have included
Please note that partial withdrawals are subject to a queue, and will take a period of time to recover, as they are part of the security of the chain.