For Developers
Development Details
Ethereum Liquid Staking

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:

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.

  1. 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 the minimumStake requirement.

  2. 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 the stakerAddressIndexed parameter.

  3. The user can later look up their ankrETH balance in the ankrETH contract.

  4. When 32 ETH is accumulated in GlobalPool, Ankr creates a new validator and transfers the 32 ETH to it.