Exchange API

setup

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

Parameter

Description

token_addr

Ethereum address of an ERC20 Token

addLiquidity

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

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
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()

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
Smart Contract
// Default function in Vyper replaces the "fallback" function in Solidity
@payable
__default__():
Web3
web3.eth.sendTransaction({value: ethAmount})

Parameter

Type

Description

msg.value

uint256

Amount of ETH sold

ethToTokenSwapInput

Smart Contract
Web3
Smart Contract
@payable
ethToTokenSwapInput(
min_tokens: uint256,
deadline: uint256
): uint256
Web3
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
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})

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
Smart Contract
@payable
ethToTokenSwapOutput(
tokens_bought: uint256,
deadline: uint256
): uint256
Web3
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
Smart Contract
@payable
ethToTokenTransferOutput(
tokens_bought: uint256,
deadline: uint256,
recipient: address
): uint256
Web3
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
Smart Contract
tokenToEthSwapInput(
tokens_sold: uint256,
min_eth: uint256,
deadline: uint256
): uint256
Web3
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
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()

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
Smart Contract
tokenToEthSwapOutput(
eth_bought: uint256,
max_tokens: uint256,
deadline: uint256
): uint256
Web3
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
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()

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
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()

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
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()

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
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()

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
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()

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
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()

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
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()

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
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()

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
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()

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
Smart Contract
@constant
getEthToTokenInputPrice(eth_sold: uint256): uint256
Web3
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
Smart Contract
@constant
getEthToTokenOutputPrice(tokens_bought: uint256): uint256
Web3
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
Smart Contract
@constant
getTokenToEthInputPrice(tokens_sold: uint256): uint256
Web3
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
Smart Contract
@constant
getTokenToEthOutputPrice(eth_bought: uint256): uint256
Web3
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
Smart Contract
@constant
tokenAddress(): address
Web3
exchangeContract.methods.tokenAddress().call()

Returns

address

Address of ERC20 token sold on exchange

factoryAddress

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

Returns

address

Address of factory that created exchange

name

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

Returns

bytes32

Name of liquidity token

symbol

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

Returns

bytes32

Symbol of liquidity token

decimals

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

Returns

uint256

Decimals of liquidity token

balanceOf

Smart Contract
Web3
Smart Contract
@constant
balanceOf(_owner: address): uint256
Web3
exchangeContract.methods.balanceOf(_owner).call()

Parameter

Type

Description

_owner

address

Ethereum address

Returns

uint256

Liquidity token balance of address

transfer

Smart Contract
Web3
Smart Contract
transfer(
_to: address,
_value : uint256
): bool
Web3
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
Smart Contract
transferFrom(
_from: address,
_to: address,
_value : uint256
): bool
Web3
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
Smart Contract
approve(
_spender: address,
_value: uint256
): bool
Web3
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
Smart Contract
allowance(
_owner: address,
_spender: address
): uint256
Web3
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