setup
| Parameter | Description | 
|---|---|
| token_addr | Ethereum address of an ERC20 Token | 
Smart Contract
# Can only be called by factory contract during createExchange()
setup(token_addr: address):
Web3
// Can only be called by factory contract during createExchange()
exchangeContract.methods.setup((token: String)).send()
addLiquidity
| 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 | 
Smart Contract
@payable
addLiquidity(
    min_liquidity: uint256,
    max_tokens: uint256,
    deadline: uint256
): uint256
Web3
exchangeContract.methods.addLiquidity(min_liquidity, max_tokens, deadline).send({ value: ethValue })
removeLiquidity
| 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. | 
Smart Contract
removeLiquidity(
    amount: uint256;
    min_eth: uint256,
    min_tokens: uint256,
    deadline: uint256
): (uint256, uint256)
Web3
exchangeContract.methods.removeLiquidity(amount, min_eth, min_tokens, deadline).send()
default
| Parameter | Type | Description | 
|---|---|---|
| msg.value | uint256 | Amount of ETH sold | 
Smart Contract
# Default function in Vyper replaces the "fallback" function in Solidity
@payable
__default__():
Web3
web3.eth.sendTransaction({ value: ethAmount })
ethToTokenSwapInput
| 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 | 
Smart Contract
@payable
ethToTokenSwapInput(
    min_tokens: uint256,
    deadline: uint256
): uint256
Web3
exchangeContract.methods.ethToTokenSwapInput(min_liquidity, max_tokens, deadline).send({ value: ethValue })
ethToTokenTransferInput
| 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 | 
Smart Contract
@payable
ethToTokenTransferInput(
    min_tokens: uint256,
    deadline: uint256,
    recipient: address
): uint256
Web3
exchangeContract.methods
  .ethToTokenTransferInput(min_liquidity, max_tokens, deadline, recipient)
  .send({ value: ethValue })
ethToTokenSwapOutput
| 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 | 
Smart Contract
@payable
ethToTokenSwapOutput(
    tokens_bought: uint256,
    deadline: uint256
): uint256
Web3
exchangeContract.methods.ethToTokenSwapOutput(tokens_bought, deadline).send({ value: ethValue })
ethToTokenTransferOutput
| 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 | 
Smart Contract
@payable
ethToTokenTransferOutput(
    tokens_bought: uint256,
    deadline: uint256,
    recipient: address
): uint256
Web3
exchangeContract.methods
  .ethToTokenTransferOutput(tokens_bought, deadline, (recipient: String))
  .send({ value: ethValue })
tokenToEthSwapInput
| 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 | 
Smart Contract
tokenToEthSwapInput(
    tokens_sold: uint256,
    min_eth: uint256,
    deadline: uint256
): uint256
Web3
exchangeContract.methods.tokenToEthSwapInput(tokens_sold, min_eth, deadline).send()
tokenToEthTransferInput
| 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 | 
Smart Contract
tokenToEthTransferInput(
    tokens_sold: uint256,
    min_eth: uint256,
    deadline: uint256,
    recipient: address
): uint256
Web3
exchangeContract.methods.tokenToEthTransferInput(tokens_sold, min_eth, deadline, recipient).send()
tokenToEthSwapOutput
| 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 | 
Smart Contract
tokenToEthSwapOutput(
    eth_bought: uint256,
    max_tokens: uint256,
    deadline: uint256
): uint256
Web3
exchangeContract.methods.tokenToEthSwapOutput(eth_bought, max_tokens, (deadline: Integer)).send()
tokenToEthTransferOutput
| 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 | 
Smart Contract
tokenToEthTransferOutput(
    eth_bought: uint256,
    max_tokens: uint256,
    deadline: uint256,
    recipient: address
): uint256
Web3
exchangeContract.methods
  .tokenToEthTransferOutput(eth_bought, max_tokens, (deadline: Integer), (recipient: String))
  .send()
tokenToTokenSwapInput
| 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 | 
Smart Contract
tokenToTokenSwapInput(
    tokens_sold: uint256,
    min_tokens_bought: uint256,
    min_eth_bought: uint256,
    deadline: uint256,
    token_addr: address
): uint256
Web3
exchangeContract.methods
  .tokenToTokenSwapInput(tokens_sold, min_tokens_bought, min_eth_bought, deadline, token_addr)
  .send()
tokenToTokenTransferInput
| 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 | 
Smart Contract
tokenToTokenTransferInput(
    tokens_sold: uint256,
    min_tokens_bought: uint256,
    min_eth_bought: uint256,
    deadline: uint256,
    recipient: address
    token_addr: address
): uint256
Web3
exchangeContract.methods
  .tokenToTokenTransferInput(tokens_sold, min_tokens_bought, min_eth_bought, deadline, recipient, token_addr)
  .send()
tokenToTokenSwapOutput
| 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 | 
Smart Contract
tokenToTokenSwapOutput(
    tokens_bought: uint256,
    max_tokens_sold: uint256,
    max_eth_sold: uint256,
    deadline: uint256,
    token_addr: address
): uint256
Web3
exchangeContract.methods
  .tokenToTokenSwapOutput(tokens_bought, max_tokens_sold, max_eth_sold, deadline, token_addr)
  .send()
tokenToTokenTransferOutput
| 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 | 
Smart Contract
tokenToTokenTransferOutput(
    tokens_bought: uint256,
    max_tokens_sold: uint256,
    max_eth_sold: uint256,
    deadline: uint256,
    recipient: address,
    token_addr: address
): uint256
Web3
exchangeContract.methods
  .tokenToTokenTransferOutput(tokens_bought, max_tokens_sold, max_eth_sold, deadline, recipient, token_addr)
  .send()
tokenToExchangeSwapInput
| 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 | 
Smart Contract
tokenToTokenSwapInput(
    tokens_sold: uint256,
    min_tokens_bought: uint256,
    min_eth_bought: uint256,
    deadline: uint256,
    exchange_addr: address
): uint256
Web3
exchangeContract.methods
  .tokenToTokenSwapInput(tokens_sold, min_tokens_bought, min_eth_bought, deadline, exchange_addr)
  .send()
tokenToExchangeTransferInput
| 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 | 
Smart Contract
tokenToExchangeTransferInput(
    tokens_sold: uint256,
    min_tokens_bought: uint256,
    min_eth_bought: uint256,
    deadline: uint256,
    recipient: address
    exchange_addr: address
): uint256
Web3
exchangeContract.methods
  .tokenToExchangeTransferInput(tokens_sold, min_tokens_bought, min_eth_bought, deadline, recipient, exchange_addr)
  .send()
tokenToExchangeSwapOutput
| 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 | 
Smart Contract
tokenToExchangeSwapOutput(
    tokens_bought: uint256,
    max_tokens_sold: uint256,
    max_eth_sold: uint256,
    deadline: uint256,
    exchange_addr: address
): uint256
Web3
exchangeContract.methods
  .tokenToExchangeSwapOutput(tokens_bought, max_tokens_sold, max_eth_sold, deadline, exchange_addr)
  .send()
tokenToExchangeTransferOutput
| 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 | 
Smart Contract
tokenToExchangeTransferOutput(
    tokens_bought: uint256,
    max_tokens_sold: uint256,
    max_eth_sold: uint256,
    deadline: uint256,
    recipient: address,
    exchange_addr: address
): uint256
Web3
exchangeContract.methods
  .tokenToExchangeTransferOutput(tokens_bought, max_tokens_sold, max_eth_sold, deadline, recipient, exchange_addr)
  .send()
getEthToTokenInputPrice
| Parameter | Type | Description | 
|---|---|---|
| eth_sold | uint256 | Amount of ETH sold | 
| Returns | |
|---|---|
| uint256 | Amount of ERC20 tokens that can be bought | 
Smart Contract
@constant
getEthToTokenInputPrice(eth_sold: uint256): uint256
Web3
exchangeContract.methods.getEthToTokenInputPrice(eth_sold).call()
getEthToTokenOutputPrice
| Parameter | Type | Description | 
|---|---|---|
| tokens_bought | uint256 | Amount of ERC20 tokens bought | 
| Returns | |
|---|---|
| uint256 | Amount of ETH that must be sold | 
Smart Contract
@constant
getEthToTokenOutputPrice(tokens_bought: uint256): uint256
Web3
exchangeContract.methods.getEthToTokenOutputPrice(tokens_bought).call()
getTokenToEthInputPrice
| Parameter | Type | Description | 
|---|---|---|
| tokens_sold | uint256 | Amount of ERC20 tokens sold | 
| Returns | |
|---|---|
| uint256 | Amount of ETH that can be bought | 
Smart Contract
@constant
getTokenToEthInputPrice(tokens_sold: uint256): uint256
Web3
exchangeContract.methods.getTokenToEthInputPrice(tokens_sold).call()
getTokenToEthOutputPrice
| Parameter | Type | Description | 
|---|---|---|
| eth_bought | uint256 | Amount of ETH bought | 
| Returns | |
|---|---|
| uint256 | Amount of ERC20 tokens that must be sold | 
Smart Contract
@constant
getTokenToEthOutputPrice(eth_bought: uint256): uint256
Web3
exchangeContract.methods.getTokenToEthOutputPrice(eth_bought).call()
tokenAddress
| Returns | |
|---|---|
| address | Address of ERC20 token sold on exchange | 
Smart Contract
@constant
tokenAddress(): address
Web3
exchangeContract.methods.tokenAddress().call()
factoryAddress
| Returns | |
|---|---|
| address | Address of factory that created exchange | 
Smart Contract
@constant
factoryAddress(): address
Web3
exchangeContract.methods.factoryAddress().call()
name
| Returns | |
|---|---|
| bytes32 | Name of liquidity token | 
Smart Contract
# all exchange contracts have the same name
@constant
name(): bytes32 // Uniswap V1
Web3
exchangeContract.methods.tokenAddress().call()
symbol
| Returns | |
|---|---|
| bytes32 | Symbol of liquidity token | 
Smart Contract
# all exchange contracts have the same symbol
@constant
symbol(): bytes32 // UNI-V1
Web3
exchangeContract.methods.tokenAddress().call()
decimals
| Returns | |
|---|---|
| uint256 | Decimals of liquidity token | 
Smart Contract
# all exchange contracts have the same decimals
@constant
decimals(): uint256 // 18
Web3
exchangeContract.methods.decimals().call()
balanceOf
| Parameter | Type | Description | 
|---|---|---|
| _owner | address | Ethereum address | 
| Returns | |
|---|---|
| uint256 | Liquidity token balance of address | 
Smart Contract
@constant
balanceOf(_owner: address): uint256
Web3
exchangeContract.methods.balanceOf(_owner).call()
transfer
| Parameter | Type | Description | 
|---|---|---|
| _to | address | Recipient address | 
| _value | uint256 | Amount transferred | 
| Returns | |
|---|---|
| bool | True if successful. Reverts or false on failure | 
Smart Contract
transfer(
    _to: address,
    _value : uint256
): bool
Web3
exchangeContract.methods.transfer(_to, _value).send()
transferFrom
| 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 | 
Smart Contract
transferFrom(
    _from: address,
    _to: address,
    _value : uint256
): bool
Web3
exchangeContract.methods.transferFrom(_from, _to, _value).send()
approve
| Parameter | Type | Description | 
|---|---|---|
| _spender | address | Address of approved spender | 
| _value | uint256 | Spender allowance | 
| Returns | |
|---|---|
| bool | True if successful. Reverts or false on failure | 
Smart Contract
approve(
    _spender: address,
    _value: uint256
): bool
Web3
exchangeContract.methods.approve(_spender, _value).send()
allowance
| Parameter | Type | Description | 
|---|---|---|
| _owner | address | Address of liquidity token owner | 
| _spender | uint256 | Address of approved spender | 
| Returns | |
|---|---|
| uint256 | Spender allowance | 
Smart Contract
allowance(
    _owner: address,
    _spender: address
): uint256
Web3
exchangeContract.methods.allowance(_owner, _spender).call()