Pods Yield
  • Pods Yield
    • Introduction to Pods Yield
  • stETHvv
    • What is stETHvv?
    • Description
    • System Actors
    • How stETHvv Works
      • User Flow
    • stETHvv Timeline
    • Fees
    • 📃Whitepaper
  • security
    • 🛡️Security Overview
    • 🛡️Audits
    • 🐛Bug Bounty Program (BBP)
    • 🔐Access Control
  • Risks
    • Introduction
    • Market Risks
    • Smart Contract Risks
  • Developers
    • Smart Contracts Overview
      • ConfigurationManager
      • EthAdapter
      • STETHVault
      • BaseVault
    • Contracts Addresses
    • Integration guide
      • How to deposit
      • How to withdraw
      • How to read Vault info
  • Connect
    • Brand Assets
  • Appendix
    • FAQ
    • Glossary of Terms
  • 3rd party integrations
    • 3rd party integrations list
  • Additional Resources
    • pods.finance
    • app.pods.finance
    • Pods' other products
    • Github
    • Blog
    • Discord
    • Twitter
Powered by GitBook
On this page
  • Public State Variables
  • pool
  • ETH_INDEX
  • STETH_INDEX
  • ETH_ADDRESS
  • STETH_ADDRESS
  • View Methods
  • convertToSTETH
  • convertToETH
  • Write Methods
  • deposit
  • redeem
  • redeemWithPermit
  • withdraw
  • withdrawWithPermit
  1. Developers
  2. Smart Contracts Overview

EthAdapter

PreviousConfigurationManagerNextSTETHVault

Last updated 2 years ago

The EthAdapter is responsible for accepting deposits and withdrawals in ETH, instead of accepting the staked ETH directly. It uses Curve as a trading venue under the hood.

src:

Public State Variables

pool

function pool() external view returns (address

Curve's pool for the ETH <> stETH token pair.

ETH_INDEX

function ETH_INDEX() external view returns (int128)

ETH token index in the Curve pool. It is constant 0.

STETH_INDEX

function ETH_INDEX() external view returns (int128)

StETH token index in the Curve pool. It is constant 1.

ETH_ADDRESS

function ETH_ADDRESS() external view returns (address)

ETH token address representation. It is constant 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE

STETH_ADDRESS

function STETH_ADDRESS() external view returns (address)

StETH token address representation. It is constant 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84

View Methods

convertToSTETH

function convertToSTETH(uint256 ethAmount) external view returns (uint256)

Convert ethAmount ETH to stETH using Curve pool and returns the resulting amount of stETH.

Parameters

Name
Type
Description

ethAmount

uint256

Amount of ETH to convert

Returns

Name
Type
Description

_0

uint256

Amount of stETH receiveid in exchange

convertToETH

function convertToETH(uint256 stETHAmount) external view returns (uint256)

Convert stethAmount stETH to ETH using Curve pool and returns the resulting amount of ETH.

Parameters

Name
Type
Description

stETHAmount

uint256

Amount of ETH to convert

Returns

Name
Type
Description

_0

uint256

Amount of ETH receiveid in exchange

Write Methods

deposit

function deposit(contract IVault vault, address receiver, uint256 minOutput) external payable returns (uint256)

Deposit msg.value of ETH, convert to stETH and deposit into vault

Parameters

Name
Type
Description

vault

contract IVault

Pods' strategy vault that will receive the stETH

receiver

address

Address that will be the owner of the Vault's shares

minOutput

uint256

slippage control. Minimum acceptable amount of stETH

Returns

Name
Type
Description

_0

uint256

uint256 Amount of shares returned by vault ERC4626 contract

redeem

function redeem(contract IVault vault, uint256 shares, address receiver, uint256 minOutput) external nonpayable returns (uint256)

Redeem shares shares, receive stETH, trade stETH for ETH and send to receiver

Parameters

Name
Type
Description

vault

contract IVault

Pods' strategy vault that will receive the shares and payback stETH

shares

uint256

Amount of Vault's shares to redeem

receiver

address

Address that will receive back the ETH withdrawn from the vault

minOutput

uint256

slippage control. Minimum acceptable amount of ETH

Returns

Name
Type
Description

_0

uint256

uint256 Amount of assets received from Vault ERC4626

redeemWithPermit

function redeemWithPermit(contract IVault vault, uint256 shares, address receiver, uint256 minOutput, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external nonpayable returns (uint256 assets)

redeemWithPermit shares shares, receive stETH, trade stETH for ETH and send to receiver

Do not need to approve the shares in advance. The vault tokenized shares supports Permit

Parameters

Name
Type
Description

vault

contract IVault

Pods' strategy vault that will receive the shares and payback stETH

shares

uint256

Amount of Vault's shares to redeem

receiver

address

Address that will receive back the ETH withdrawn from vault

minOutput

uint256

slippage control. Minimum acceptable amount of ETH

deadline

uint256

deadline that this transaction will be valid

v

uint8

recovery id

r

bytes32

ECDSA signature output

s

bytes32

ECDSA signature output

Returns

Name
Type
Description

assets

uint256

Amount of assets received from Vault ERC4626

withdraw

function withdraw(contract IVault vault, uint256 assets, address receiver, uint256 minOutput) external nonpayable returns (uint256 shares)

Withdraw assets assets, receive stETH, trade stETH for ETH and send to receiver

Do not need to approve the shares in advance. The vault tokenized shares supports Permit

Parameters

Name
Type
Description

vault

contract IVault

Pods' strategy vault that will receive the shares and payback stETH

assets

uint256

Amount of assets (stETH) to redeem

receiver

address

Address that will receive back the ETH withdrawn from the Vault

minOutput

uint256

slippage control. Minimum acceptable amount of ETH

Returns

Name
Type
Description

shares

uint256

Amount of shares burned in order to receive assets

withdrawWithPermit

function withdrawWithPermit(contract IVault vault, uint256 assets, address receiver, uint256 minOutput, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external nonpayable returns (uint256 shares)

withdrawWithPermit assets assets, receive stETH, trade stETH for ETH and send to receiver

Do not need to approve the shares in advance. Vault's tokenized shares supports Permit

Parameters

Name
Type
Description

vault

contract IVault

Pods' strategy vault that will receive the shares and payback stETH

assets

uint256

Amount of assets (stETH) to redeem

receiver

address

Address that will receive back the ETH withdrawn from the Vault

minOutput

uint256

slippage control. Minimum acceptable amount of ETH

deadline

uint256

deadline that this transaction will be valid

v

uint8

recovery id

r

bytes32

ECDSA signature output

s

bytes32

ECDSA signature output

Returns

Name
Type
Description

shares

uint256

Amount of shares burned in order to receive assets

https://github.com/pods-finance/yield-contracts/blob/main/contracts/proxy/ETHAdapter.sol
https://github.com/pods-finance/yield-contracts/blob/main/contracts/proxy/ETHAdapter.sol#L23
https://github.com/pods-finance/yield-contracts/blob/main/contracts/proxy/ETHAdapter.sol#L28
https://github.com/pods-finance/yield-contracts/blob/main/contracts/proxy/ETHAdapter.sol#L33
https://github.com/pods-finance/yield-contracts/blob/main/contracts/proxy/ETHAdapter.sol#L38
https://github.com/pods-finance/yield-contracts/blob/main/contracts/proxy/ETHAdapter.sol#L43
https://github.com/pods-finance/yield-contracts/blob/main/contracts/proxy/ETHAdapter.sol#L61
https://github.com/pods-finance/yield-contracts/blob/main/contracts/proxy/ETHAdapter.sol#L70
https://github.com/pods-finance/yield-contracts/blob/main/contracts/proxy/ETHAdapter.sol#L81
https://github.com/pods-finance/yield-contracts/blob/main/contracts/proxy/ETHAdapter.sol#L100
https://github.com/pods-finance/yield-contracts/blob/main/contracts/proxy/ETHAdapter.sol#L124
https://github.com/pods-finance/yield-contracts/blob/main/contracts/proxy/ETHAdapter.sol#L148
https://github.com/pods-finance/yield-contracts/blob/main/contracts/proxy/ETHAdapter.sol#L171