For the complete documentation index, see llms.txt. This page is also available as Markdown.

How To

You can interact directly with smart contract via Etherscan even when ether.fi's web page or dapp is down.

Withdrawals

Standard Withdrawal with Delays

this is the standard queued withdrawal without fee and without rate limit:

  1. Unwrap weETH to eETH: If you hold weETH, you need to unwrap to eETH. Use weETH.unwrap. Note that you need eETH.approve with spender = weETH contract.

  2. Initiate withdrawal: You can use LiquidityPool.requestWithdraw, then you will receive the WithdrawRequestNFT which is ERC721 NFT representing your queued withdrawal.

  3. Check the status of the withdrawal: use WithdrawRequestNFT.isFinalized(nftTokenId). You can preview the exact ETH you will receive with WithdrawRequestNFT.getClaimableAmount(nftTokenId). Once a request is finalized, its payout is locked in: later rebases no longer change the amount.

Instant Withdrawal without Delay

this is the instant redemption with a small exit fee and a rate limit. The fee and the rate limit are set per token (eETH / weETH), and the instant withdrawal is only allowed when the buffer liquidity is above the low watermark (a percentage of eETH TVL). Both the fee and the watermark are hard-capped at 5% in code; read the live values onchain as below.

  1. (optional) Check the fee and low watermark: use EtherFiRedemptionManager.tokenToRedemptionInfo(token) with token = the eETH or weETH address. It returns the rate-limit bucket plus exitFeeInBps and lowWatermarkInBpsOfTvl for that token.

  2. Check if redeemable: use EtherFiRedemptionManager.canRedeem(amount, token) where amount is the ETH amount of the eETH/weETH being redeemed. You can also check the available buffer with getInstantLiquidityAmount(token).

  3. Redeem: Use either redeemEEth(amount, receiver, outputToken) or redeemWeEth(amount, receiver, outputToken). outputToken selects what you receive: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE for ETH, or the stETH address for stETH. Note that you need eETH.approve or weETH.approve with spender = EtherFiRedemptionManager contract.

Last updated