Exchange API

setup

Smart Contract
Web3
// 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

Smart Contract
Web3
@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

Smart Contract
Web3
removeLiquidity(
amount: uint256;
min_eth: uint256,
min_tokens: uint256,
deadline: uint256
): (uint256, uint256)
exchangeContract.methods.removeLiquidity(amount, min_eth, max_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

Smart Contract
Web3
// 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

Smart Contract
Web3
@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

Smart Contract
Web3
@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

Smart Contract
Web3
@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

Smart Contract
Web3
@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

Smart Contract
Web3
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

Smart Contract
Web3
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

Smart Contract
Web3
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

Smart Contract
Web3
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

Smart Contract
Web3
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

Smart Contract
Web3
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

Smart Contract
Web3
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

Smart Contract
Web3
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

Smart Contract
Web3
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

Smart Contract
Web3
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

Smart Contract
Web3
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

Smart Contract
Web3
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

Smart Contract
Web3
@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

Smart Contract
Web3
@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

Smart Contract
Web3
@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

Smart Contract
Web3
@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

Smart Contract
Web3
@constant
tokenAddress(): address
exchangeContract.methods.tokenAddress().call()

Returns

address

Address of ERC20 token sold on exchange

factoryAddress

Smart Contract
Web3
@constant
factoryAddress(): address
exchangeContract.methods.factoryAddress().call()

Returns

address

Address of factory that created exchange

name

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

Returns

bytes32

Name of liquidity token

symbol

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

Returns

bytes32

Symbol of liquidity token

decimals

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

Returns

uint256

Decimals of liquidity token

balanceOf

Smart Contract
Web3
@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

Smart Contract
Web3
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

Smart Contract
Web3
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

Smart Contract
Web3
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

Smart Contract
Web3
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