ether.fi's Liquid Staking Protocol Contracts
Solidity contracts behind ether.fi's liquid staking on Ethereum mainnet. Users deposit ETH
into the LiquidityPool and receive eETH, a rebasing token, or its non-rebasing wrapper weETH.
The protocol runs validators whose withdrawal credentials point at EigenLayer EigenPods.
Docs · Audits · Deployed addresses · weETH cross-chain
Contracts
| Module | Path | Contracts |
|--------|------|-----------|
| Core | src/core | LiquidityPool, EETH, WeETH |
| Staking | src/staking | StakingManager, EtherFiNodesManager, EtherFiNode, AuctionManager, NodeOperatorManager |
| Restaking | src/restaking | EtherFiRestaker, RestakingRewardsRouter |
| Deposits | src/deposits | DepositAdapter, Liquifier, LiquidRefer |
| Withdrawals | src/withdrawals | WithdrawRequestNFT, PriorityWithdrawalQueue, EtherFiRedemptionManager, WeETHWithdrawAdapter |
| Oracle | src/oracle | EtherFiOracle, EtherFiAdmin |
| Rewards | src/rewards | EtherFiRewardsRouter, CumulativeMerkleRewardsDistributor |
| Governance | src/governance | RoleRegistry, EtherFiTimelock, Blacklister, RevokeAdmin, rate limiting |
| Helpers | src/helpers | AddressProvider, EtherFiViewer |
src/archive holds retired contracts kept for storage-layout reference.
Contract addresses live in the ether.fi docs under Deployed Contracts.
Architecture
- Every contract sits behind a UUPS proxy. Upgrades go through the upgrade timelock; parameter
RoleRegistryowns all role checks. Contracts ask it before running privileged functions.- Each
EtherFiNodeowns one EigenPod.EtherFiNodesManageris the entry point for pod
EtherFiOraclereports rewards and validator state.EtherFiAdminapplies those reports to
LiquidityPool rebase and finalizes withdrawal requests.
EtherFiRedemptionManagerhandles instant redemptions under a bucket rate limiter.
WithdrawRequestNFT and PriorityWithdrawalQueue handle queued withdrawals.
Getting started
Requirements: Foundry (CI pins v1.5.1) and a mainnet RPC URL for fork tests.
git clone https://github.com/etherfi-protocol/smart-contracts.git
cd smart-contracts
git submodule update --init --recursive
forge build
The build uses Solidity 0.8.27 with 1500 optimizer runs.
Tests
export MAINNET_RPC_URL=<your_rpc_url>
forge test # all tests
forge test --match-test <name> # one test
forge test --match-path "test/invariant/*" # invariant suite
forge test --match-path "test/fork-tests/*" --fork-url $MAINNET_RPC_URL
| Directory | Contents |
|-----------|----------|
| test/*.t.sol | Unit tests per contract |
| test/invariant | Stateful invariant fuzzing |
| test/integration-tests | Cross-contract flows on a mainnet fork |
| test/fork-tests | Upgrade and migration checks against live state |
| test/behaviour-tests | Validator lifecycle on a mainnet fork |
Fork tests run against the latest block, so assert deltas against the live state you read at setup instead of assuming zero balances.
Formal verification
Certora specs live in certora/specs with run configs in certora/config:
certoraRun certora/config/LiquidityPoolPeg.conf
Configs cover LiquidityPool peg and share accounting, EtherFiOracle, and RoleRegistry
authority.
Repository layout
| Path | Purpose |
|------|---------|
| src/ | Protocol contracts |
| test/ | Foundry tests |
| certora/ | Formal verification specs and configs |
| script/ | Deploy, upgrade, and operations scripts (Solidity and Python) |
| operations/, proposals/ | Gnosis Safe and timelock transaction batches |
| deployment/, release/ | Deployment artifacts and release records |
| audits/ | Audit reports |
Security
Certora, Zellic, Nethermind, Halborn, Omniscia, Decurity, Solidified, Paladin, CertiK, and
Hats Finance have audited these contracts. Reports sit in audits/; the most
recent is the Certora 26Q2 Security Upgrade review (June 2026).
CI runs the Forge test suite and a storage-layout check on pull requests into master, which
catches upgrades that would shift proxy storage.
Report vulnerabilities through the ether.fi bug bounty program. Do not open public issues for security bugs.
📄 License
ether.fi is open-source and licensed under the MIT License.
Built with ❤️ by the ether.fi team