ETH staking mechanics
ETH Liquid Staking lets the user stake their funds through the corresponding smart contracts on the Ethereum network, accumulate rewards, and receive their stake and rewards when unstaking.
The following section explains staking requirements, fees, rewards, validators, smart contracts and function calls to interact with these smart contracts.
Requirements
The requirements when staking are:
-
Minimum value to stake (minimumStake) — no min value, any amount.
-
Stake change interval — no stake change interval, any amount.
-
Maximum value to stake — unlimited, at the user’s discretion.
Fees
Ankr takes a 10% technical service fee from the staking reward.
The user must also count in the gas price for outgoing transactions.
Rewards
User's ankrETH grows steadily in value to ETH over time, but never changes in number. The formula can be described as total share supply / (total stake amount + rewards)
.
Validators receive rewards when Ethereum has their unstaking functionality released in their 2.0 version.
You can get the current APY from the JSON returned by https://api.staking.ankr.com/v1alpha/metrics (opens in a new tab) (the apy
param).
Validators
Ankr has roughly 1700 validators on Ethereum (opens in a new tab).
Trustless ratio
Read Trustless ratio to understand how we made our Ethereum Liquid Staking ratio transparent.
Smart contracts
Smart contracts involved in ETH Liquid Staking are:
- ethereumPool (opens in a new tab) — contract with the staking logic, also accumulates stakes and distributes them across the validators.
- ankrETH (opens in a new tab) — contract that implements the ERC-20-like token ankrETH. ankrETH doesn't grow in number, but grows in value.
- mev_balance (opens in a new tab) (0x90B0c836a19A74195d45Fad2d2D3895a7a3eab08) — receives all MEV & tips.
- withdrawalPool (opens in a new tab) (0x67428dE0680494E448F1A19d33C2022a51719348) — withdrawal address for Ankr validators; receives all unstakes and attestation rewards.
Smart contract code can be viewed by following the links and selecting the Contract tab.
Staking workflow
The workflow is both user and Ankr-driven. The user part is Step 1, the Ankr part is Steps 2–4.
-
The user calls the function
GlobalPool::stake()
on the Ethereum network. The function is payable, so the user needs to specify the amount to stake. The amount must meet theminimumStake
requirement. -
If the transaction is successful, ankrETH is automatically minted to the user’s address. Also, a
GlobalPool::StakeConfirmed(stakerAddressIndexed, amountMinted)
event is emitted. The event can later be found using thestakerAddressIndexed
parameter. -
The user can later look up their ankrETH balance in the
ankrETH
contract. -
When 32 ETH is accumulated in
GlobalPool
, Ankr creates a new validator and transfers the 32 ETH to it.