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.
There are no unstaking requirements, as there is not unstaking on Ethereum until it implement this functionality, which seems to be on April 12, 2023.
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.
The current APY is 4.97%.
Validators
Ankr has roughly 1700 validators on Ethereum (opens in a new tab).
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.
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.