YEARN
v2
v2
  • Introduction to Yearn
  • FAQ
  • DeFi Glossary
  • How-To Guides
    • How to Add a Custom Token to MetaMask
    • How To Make a YIP
    • How to Mint yUSD
    • How To Participate in a yVault
    • How to Understand CRV Vote Locking
    • How To Understand yVault ROI
    • How To Withdraw from yEarn and yVaults
  • YFI and yTokens
  • yUSD
  • Products
    • yVaults
      • V2 yVaults
        • Strategies and yVaults available
      • V1 yVaults
    • Earn
    • Zap
    • yInsure
    • yGift
  • R&D
    • yBorrow
    • yLiquidate
    • ySwap
    • yTrade
    • Delegated Funding DAO Vaults
    • StableCredit
  • Developers
    • Naming Conventions
    • Deployed Contracts Registry
    • Code Repositories
    • Integration Guide
    • yVaults Documentation
      • Vaults Overview
      • Vault Interfaces
    • Misc Resources
      • YIP Boilerplate
      • Admin Access Policy
      • Smart Contract API
        • APR
        • iToken
        • Zap
      • Smart Contract Integration
        • 1split
        • aave
        • apr
        • aprmap
        • aprmapwithpool
        • aprwithpool
        • compound
        • curvefi
        • dydx
        • fulcrum
        • imanage
        • interface
        • itoken
        • uniswap
        • uniswapapr
        • uniswaproi
        • ybtc
        • ybusd
        • ycrv
        • ydai
        • ysusd
        • ytusd
        • yusdc
        • yusdt
        • zap
  • Additional Resources
    • Team
    • Github
    • Medium
    • Gov Forum
    • Discord
    • Telegram
    • Reddit
  • Contributors
    • Contribute
    • Contributor Tools
    • Writing Style Guide
Powered by GitBook
On this page
  • setup
  • addLiquidity
  • removeLiquidity
  • default
  • ethToTokenSwapInput
  • ethToTokenTransferInput
  • ethToTokenSwapOutput
  • ethToTokenTransferOutput
  • tokenToEthSwapInput
  • tokenToEthTransferInput
  • tokenToEthSwapOutput
  • tokenToEthTransferOutput
  • tokenToTokenSwapInput
  • tokenToTokenTransferInput
  • tokenToTokenSwapOutput
  • tokenToTokenTransferOutput
  • tokenToExchangeSwapInput
  • tokenToExchangeTransferInput
  • tokenToExchangeSwapOutput
  • tokenToExchangeTransferOutput
  • getEthToTokenInputPrice
  • getEthToTokenOutputPrice
  • getTokenToEthInputPrice
  • getTokenToEthOutputPrice
  • tokenAddress
  • factoryAddress
  • name
  • symbol
  • decimals
  • balanceOf
  • transfer
  • transferFrom
  • approve
  • allowance

Was this helpful?

  1. Developers
  2. Misc Resources
  3. Smart Contract API

iToken

setup

// Can only be called by factory contract during createExchange()
setup(token_addr: address):
// Can only be called by factory contract during createExchange()
exchangeContract.methods.setup((token: String)).send();

Parameter

Description

token_addr

Ethereum address of an ERC20 Token

addLiquidity

@payable
addLiquidity(
    min_liquidity: uint256,
    max_tokens: uint256,
    deadline: uint256
): uint256
exchangeContract.methods
  .addLiquidity(min_liquidity, max_tokens, deadline)
  .send({ value: ethValue });

Parameter

Type

Description

msg.value

uint256

Amount of ETH added

min_liquidity

uint256

Minimum minted liquidity

max_tokens

uint256

Maximum ERC20 tokens added

deadline

uint256

Transaction deadline

Returns

uint256

Amount of liquidity tokens minted

removeLiquidity

removeLiquidity(
    amount: uint256;
    min_eth: uint256,
    min_tokens: uint256,
    deadline: uint256
): (uint256, uint256)
exchangeContract.methods
  .removeLiquidity(amount, min_eth, min_tokens, deadline)
  .send();

Parameter

Type

Description

amount

uint256

Amount of liquidity burned

min_eth

uint256

Minimum ETH removed

min_tokens

uint256

Minimum ERC20 tokens removed

deadline

uint256

Transaction deadline

Returns

uint256

Amount of ETH removed

uint256

Amount of ERC20 tokens removed.

default

// Default function in Vyper replaces the "fallback" function in Solidity
@payable
__default__():
web3.eth.sendTransaction({ value: ethAmount });

Parameter

Type

Description

msg.value

uint256

Amount of ETH sold

ethToTokenSwapInput

@payable
ethToTokenSwapInput(
    min_tokens: uint256,
    deadline: uint256
): uint256
exchangeContract.methods
  .ethToTokenSwapInput(min_liquidity, max_tokens, deadline)
  .send({ value: ethValue });

Parameter

Type

Description

msg.value

uint256

Amount of ETH sold

min_tokens

uint256

Minimum ERC20 tokens bought

deadline

uint256

Transaction deadline

Returns

uint256

Amount of ERC20 tokens bought

ethToTokenTransferInput

@payable
ethToTokenTransferInput(
    min_tokens: uint256,
    deadline: uint256,
    recipient: address
): uint256
exchangeContract.methods
  .ethToTokenTransferInput(min_liquidity, max_tokens, deadline, recipient)
  .send({ value: ethValue });

Parameter

Type

Description

msg.value

uint256

Amount of ETH sold

min_tokens

uint256

Minimum ERC20 tokens bought

deadline

uint256

Transaction deadline

recipient

address

Address that receives ERC20 tokens

Returns

uint256

Amount of ERC20 tokens bought

ethToTokenSwapOutput

@payable
ethToTokenSwapOutput(
    tokens_bought: uint256,
    deadline: uint256
): uint256
exchangeContract.methods
  .ethToTokenSwapOutput(tokens_bought, deadline)
  .send({ value: ethValue });

Parameter

Type

Description

msg.value

uint256

Maximum ETH sold

tokens_bought

uint256

Amount of ERC20 tokens bought

deadline

uint256

Transaction deadline

Returns

uint256

Amount of ETH sold

ethToTokenTransferOutput

@payable
ethToTokenTransferOutput(
    tokens_bought: uint256,
    deadline: uint256,
    recipient: address
): uint256
exchangeContract.methods
  .ethToTokenTransferOutput(tokens_bought, deadline, (recipient: String))
  .send({ value: ethValue });

Parameter

Type

Description

msg.value

uint256

Maximum ETH sold

tokens_bought

uint256

Amount of ERC20 tokens bought

deadline

uint256

Transaction deadline

recipient

address

Address that receives ERC20 tokens

Returns

uint256

Amount of ETH sold

tokenToEthSwapInput

tokenToEthSwapInput(
    tokens_sold: uint256,
    min_eth: uint256,
    deadline: uint256
): uint256
exchangeContract.methods
  .tokenToEthSwapInput(tokens_sold, min_eth, deadline)
  .send();

Parameter

Type

Description

tokens_sold

uint256

Amount of ERC20 tokens sold

min_eth

uint256

Minimum ETH bought

deadline

uint256

Transaction deadline

Returns

uint256

Amount of ETH bought

tokenToEthTransferInput

tokenToEthTransferInput(
    tokens_sold: uint256,
    min_eth: uint256,
    deadline: uint256,
    recipient: address
): uint256
exchangeContract.methods
  .tokenToEthTransferInput(tokens_sold, min_eth, deadline, recipient)
  .send();

Parameter

Type

Description

tokens_sold

uint256

Amount of ERC20 tokens sold

min_eth

uint256

Minimum ETH bought

deadline

uint256

Transaction deadline

recipient

address

Address that receives ETH

Returns

uint256

Amount of ETH bought

tokenToEthSwapOutput

tokenToEthSwapOutput(
    eth_bought: uint256,
    max_tokens: uint256,
    deadline: uint256
): uint256
exchangeContract.methods
  .tokenToEthSwapOutput(eth_bought, max_tokens, (deadline: Integer))
  .send();

Parameter

Type

Description

eth_bought

uint256

Amount of ETH bought

max_tokens

uint256

Maximum ERC20 tokens sold

deadline

uint256

Transaction deadline

Returns

uint256

Amount of ERC20 tokens sold

tokenToEthTransferOutput

tokenToEthTransferOutput(
    eth_bought: uint256,
    max_tokens: uint256,
    deadline: uint256,
    recipient: address
): uint256
exchangeContract.methods
  .tokenToEthTransferOutput(
    eth_bought,
    max_tokens,
    (deadline: Integer),
    (recipient: String)
  )
  .send();

Parameter

Type

Description

eth_bought

uint256

Amount of ETH bought

max_tokens

uint256

Maximum ERC20 tokens sold

deadline

uint256

Transaction deadline

recipient

address

Address that receives ETH

Returns

uint256

Amount of ERC20 tokens sold

tokenToTokenSwapInput

tokenToTokenSwapInput(
    tokens_sold: uint256,
    min_tokens_bought: uint256,
    min_eth_bought: uint256,
    deadline: uint256,
    token_addr: address
): uint256
exchangeContract.methods
  .tokenToTokenSwapInput(
    tokens_sold,
    min_tokens_bought,
    min_eth_bought,
    deadline,
    token_addr
  )
  .send();

Parameter

Type

Description

tokens_sold

uint256

Amount of input ERC20 tokens sold

min_tokens_bought

uint256

Minimum output ERC20 tokens bought

min_eth_bought

uint256

Minimum ETH bought as intermediary

deadline

uint256

Transaction deadline

token_addr

address

Address of output ERC20 token

Returns

uint256

Amount of output ERC20 tokens bought

tokenToTokenTransferInput

tokenToTokenTransferInput(
    tokens_sold: uint256,
    min_tokens_bought: uint256,
    min_eth_bought: uint256,
    deadline: uint256,
    recipient: address
    token_addr: address
): uint256
exchangeContract.methods
  .tokenToTokenTransferInput(
    tokens_sold,
    min_tokens_bought,
    min_eth_bought,
    deadline,
    recipient,
    token_addr
  )
  .send();

Parameter

Type

Description

tokens_sold

uint256

Amount of input ERC20 tokens sold

min_tokens_bought

uint256

Minimum output ERC20 tokens bought

min_eth_bought

uint256

Minimum ETH bought as intermediary

deadline

uint256

Transaction deadline

recipient

address

Address that receives output ERC20 tokens

token_addr

address

Address of output ERC20 token

Returns

uint256

Amount of output ERC20 tokens bought

tokenToTokenSwapOutput

tokenToTokenSwapOutput(
    tokens_bought: uint256,
    max_tokens_sold: uint256,
    max_eth_sold: uint256,
    deadline: uint256,
    token_addr: address
): uint256
exchangeContract.methods
  .tokenToTokenSwapOutput(
    tokens_bought,
    max_tokens_sold,
    max_eth_sold,
    deadline,
    token_addr
  )
  .send();

Parameter

Type

Description

tokens_bought

uint256

Amount of output ERC20 tokens bought

max_tokens_sold

uint256

Maximum input ERC20 tokens bought

max_eth_sold

uint256

Maximum ETH bought as intermediary

deadline

uint256

Transaction deadline

token_addr

address

Address of output ERC20 token

Returns

uint256

Amount of input ERC20 tokens sold

tokenToTokenTransferOutput

tokenToTokenTransferOutput(
    tokens_bought: uint256,
    max_tokens_sold: uint256,
    max_eth_sold: uint256,
    deadline: uint256,
    recipient: address,
    token_addr: address
): uint256
exchangeContract.methods
  .tokenToTokenTransferOutput(
    tokens_bought,
    max_tokens_sold,
    max_eth_sold,
    deadline,
    recipient,
    token_addr
  )
  .send();

Parameter

Type

Description

tokens_bought

uint256

Amount of output ERC20 tokens bought

max_tokens_sold

uint256

Maximum input ERC20 tokens bought

max_eth_sold

uint256

Maximum ETH bought as intermediary

deadline

uint256

Transaction deadline

recipient

address

Address that receives output ERC20 tokens

token_addr

address

Address of output ERC20 token

Returns

uint256

Amount of input ERC20 tokens sold

tokenToExchangeSwapInput

tokenToTokenSwapInput(
    tokens_sold: uint256,
    min_tokens_bought: uint256,
    min_eth_bought: uint256,
    deadline: uint256,
    exchange_addr: address
): uint256
exchangeContract.methods
  .tokenToTokenSwapInput(
    tokens_sold,
    min_tokens_bought,
    min_eth_bought,
    deadline,
    exchange_addr
  )
  .send();

Parameter

Type

Description

tokens_sold

uint256

Amount of input ERC20 tokens sold

min_tokens_bought

uint256

Minimum output ERC20 tokens bought

min_eth_bought

uint256

Minimum ETH bought as intermediary

deadline

uint256

Transaction deadline

exchange_addr

address

Address of output ERC20 token exchange

Returns

uint256

Amount of output ERC20 tokens bought

tokenToExchangeTransferInput

tokenToExchangeTransferInput(
    tokens_sold: uint256,
    min_tokens_bought: uint256,
    min_eth_bought: uint256,
    deadline: uint256,
    recipient: address
    exchange_addr: address
): uint256
exchangeContract.methods
  .tokenToExchangeTransferInput(
    tokens_sold,
    min_tokens_bought,
    min_eth_bought,
    deadline,
    recipient,
    exchange_addr
  )
  .send();

Parameter

Type

Description

tokens_sold

uint256

Amount of input ERC20 tokens sold

min_tokens_bought

uint256

Minimum output ERC20 tokens bought

min_eth_bought

uint256

Minimum ETH bought as intermediary

deadline

uint256

Transaction deadline

recipient

address

Address that receives output ERC20 tokens

exchange_addr

address

Address of output ERC20 token exchange

Returns

uint256

Amount of output ERC20 tokens bought

tokenToExchangeSwapOutput

tokenToExchangeSwapOutput(
    tokens_bought: uint256,
    max_tokens_sold: uint256,
    max_eth_sold: uint256,
    deadline: uint256,
    exchange_addr: address
): uint256
exchangeContract.methods
  .tokenToExchangeSwapOutput(
    tokens_bought,
    max_tokens_sold,
    max_eth_sold,
    deadline,
    exchange_addr
  )
  .send();

Parameter

Type

Description

tokens_bought

uint256

Amount of output ERC20 tokens bought

max_tokens_sold

uint256

Maximum input ERC20 tokens bought

max_eth_sold

uint256

Maximum ETH bought as intermediary

deadline

uint256

Transaction deadline

exchange_addr

address

Address of output ERC20 token exchange

Returns

uint256

Amount of input ERC20 tokens sold

tokenToExchangeTransferOutput

tokenToExchangeTransferOutput(
    tokens_bought: uint256,
    max_tokens_sold: uint256,
    max_eth_sold: uint256,
    deadline: uint256,
    recipient: address,
    exchange_addr: address
): uint256
exchangeContract.methods
  .tokenToExchangeTransferOutput(
    tokens_bought,
    max_tokens_sold,
    max_eth_sold,
    deadline,
    recipient,
    exchange_addr
  )
  .send();

Parameter

Type

Description

tokens_bought

uint256

Amount of output ERC20 tokens bought

max_tokens_sold

uint256

Maximum input ERC20 tokens bought

max_eth_sold

uint256

Maximum ETH bought as intermediary

deadline

uint256

Transaction deadline

recipient

address

Address that receives output ERC20 tokens

exchange_addr

address

Address of output ERC20 token exchange

Returns

uint256

Amount of input ERC20 tokens sold

getEthToTokenInputPrice

@constant
getEthToTokenInputPrice(eth_sold: uint256): uint256
exchangeContract.methods.getEthToTokenInputPrice(eth_sold).call();

Parameter

Type

Description

eth_sold

uint256

Amount of ETH sold

Returns

uint256

Amount of ERC20 tokens that can be bought

getEthToTokenOutputPrice

@constant
getEthToTokenOutputPrice(tokens_bought: uint256): uint256
exchangeContract.methods.getEthToTokenOutputPrice(tokens_bought).call();

Parameter

Type

Description

tokens_bought

uint256

Amount of ERC20 tokens bought

Returns

uint256

Amount of ETH that must be sold

getTokenToEthInputPrice

@constant
getTokenToEthInputPrice(tokens_sold: uint256): uint256
exchangeContract.methods.getTokenToEthInputPrice(tokens_sold).call();

Parameter

Type

Description

tokens_sold

uint256

Amount of ERC20 tokens sold

Returns

uint256

Amount of ETH that can be bought

getTokenToEthOutputPrice

@constant
getTokenToEthOutputPrice(eth_bought: uint256): uint256
exchangeContract.methods.getTokenToEthOutputPrice(eth_bought).call();

Parameter

Type

Description

eth_bought

uint256

Amount of ETH bought

Returns

uint256

Amount of ERC20 tokens that must be sold

tokenAddress

@constant
tokenAddress(): address
exchangeContract.methods.tokenAddress().call();

Returns

address

Address of ERC20 token sold on exchange

factoryAddress

@constant
factoryAddress(): address
exchangeContract.methods.factoryAddress().call();

Returns

address

Address of factory that created exchange

name

// all exchange contracts have the same name
@constant
name(): bytes32 // Uniswap V1
exchangeContract.methods.tokenAddress().call();

Returns

bytes32

Name of liquidity token

symbol

// all exchange contracts have the same symbol
@constant
symbol(): bytes32 // UNI-V1
exchangeContract.methods.tokenAddress().call();

Returns

bytes32

Symbol of liquidity token

decimals

// all exchange contracts have the same decimals
@constant
decimals(): uint256 // 18
exchangeContract.methods.decimals().call();

Returns

uint256

Decimals of liquidity token

balanceOf

@constant
balanceOf(_owner: address): uint256
exchangeContract.methods.balanceOf(_owner).call();

Parameter

Type

Description

_owner

address

Ethereum address

Returns

uint256

Liquidity token balance of address

transfer

transfer(
    _to: address,
    _value : uint256
): bool
exchangeContract.methods.transfer(_to, _value).send();

Parameter

Type

Description

_to

address

Recipient address

_value

uint256

Amount transferred

Returns

bool

True if successful. Reverts or false on failure

transferFrom

transferFrom(
    _from: address,
    _to: address,
    _value : uint256
): bool
exchangeContract.methods.transferFrom(_from, _to, _value).send();

Parameter

Type

Description

_from

address

Sender address

_to

address

Recipient address

_value

uint256

Amount transferred

Returns

bool

True if successful. Reverts or false on failure

approve

approve(
    _spender: address,
    _value: uint256
): bool
exchangeContract.methods.approve(_spender, _value).send();

Parameter

Type

Description

_spender

address

Address of approved spender

_value

uint256

Spender allowance

Returns

bool

True if successful. Reverts or false on failure

allowance

allowance(
    _owner: address,
    _spender: address
): uint256
exchangeContract.methods.allowance(_owner, _spender).call();

Parameter

Type

Description

_owner

address

Address of liquidity token owner

_spender

uint256

Address of approved spender

Returns

uint256

Spender allowance

PreviousAPRNextZap

Last updated 4 years ago

Was this helpful?