Skip to main content
Decentralized, non-custodial liquid restaking protocol. Stake ETH to receive eETH (rebasing), or wrap it as weETH (non-rebasing) for DeFi composability. Natively restaked via EigenLayer.

What it offers

  • deposit: Stake ETH and receive eETH
  • wrap: Wrap eETH into weETH (non-rebasing)
  • unwrap: Unwrap weETH back to eETH

Notes

  • Liquid restaking protocol
  • eETH rebases like stETH. Use weETH for DeFi (Aave, Pendle, etc.)
  • deposit() is payable - send ETH as msg.value
  • Approve eETH to weETH contract before wrapping
  • Natively restaked on EigenLayer for additional AVS yield

Its names in a program

On Ethereum, Etherfi is a namespace: its contracts need no import.

Deployments

ABI

EETHABI

import EETHABI from "./protocols/etherfi/EETHABI.json"; Speaks for: eETH.
  • balanceOf(address account) view returns (uint256)
  • approve(address spender, uint256 amount) returns (bool)

LiquidityPoolABI

import LiquidityPoolABI from "./protocols/etherfi/LiquidityPoolABI.json"; Speaks for: liquidityPool.
  • deposit() payable returns (uint256)

WeETHABI

import WeETHABI from "./protocols/etherfi/WeETHABI.json"; Speaks for: weETH.
  • wrap(uint256 _eETHAmount) returns (uint256)
  • unwrap(uint256 _weETHAmount) returns (uint256)
  • getEETHByWeETH(uint256 _weETHAmount) view returns (uint256)
  • getWeETHByeETH(uint256 _eETHAmount) view returns (uint256)
  • balanceOf(address account) view returns (uint256)

Next steps