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#
@payableaddLiquidity(    min_liquidity: uint256,    max_tokens: uint256,    deadline: uint256): uint256Web3#
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#
@payableethToTokenSwapInput(    min_tokens: uint256,    deadline: uint256): uint256Web3#
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#
@payableethToTokenTransferInput(    min_tokens: uint256,    deadline: uint256,    recipient: address): uint256Web3#
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#
@payableethToTokenSwapOutput(    tokens_bought: uint256,    deadline: uint256): uint256Web3#
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#
@payableethToTokenTransferOutput(    tokens_bought: uint256,    deadline: uint256,    recipient: address): uint256Web3#
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): uint256Web3#
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): uint256Web3#
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): uint256Web3#
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): uint256Web3#
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): uint256Web3#
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): uint256Web3#
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): uint256Web3#
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): uint256Web3#
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): uint256Web3#
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): uint256Web3#
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): uint256Web3#
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): uint256Web3#
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#
@constantgetEthToTokenInputPrice(eth_sold: uint256): uint256Web3#
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#
@constantgetEthToTokenOutputPrice(tokens_bought: uint256): uint256Web3#
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#
@constantgetTokenToEthInputPrice(tokens_sold: uint256): uint256Web3#
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#
@constantgetTokenToEthOutputPrice(eth_bought: uint256): uint256Web3#
exchangeContract.methods.getTokenToEthOutputPrice(eth_bought).call();tokenAddress
| Returns | |
|---|---|
| address | Address of ERC20 token sold on exchange | 
Smart Contract#
@constanttokenAddress(): addressWeb3#
exchangeContract.methods.tokenAddress().call();factoryAddress
| Returns | |
|---|---|
| address | Address of factory that created exchange | 
Smart Contract#
@constantfactoryAddress(): addressWeb3#
exchangeContract.methods.factoryAddress().call();name
| Returns | |
|---|---|
| bytes32 | Name of liquidity token | 
Smart Contract#
# all exchange contracts have the same name@constantname(): bytes32 // Uniswap V1Web3#
exchangeContract.methods.tokenAddress().call();symbol
| Returns | |
|---|---|
| bytes32 | Symbol of liquidity token | 
Smart Contract#
# all exchange contracts have the same symbol@constantsymbol(): bytes32 // UNI-V1Web3#
exchangeContract.methods.tokenAddress().call();decimals
| Returns | |
|---|---|
| uint256 | Decimals of liquidity token | 
Smart Contract#
# all exchange contracts have the same decimals@constantdecimals(): uint256 // 18Web3#
exchangeContract.methods.decimals().call();balanceOf
| Parameter | Type | Description | 
|---|---|---|
| _owner | address | Ethereum address | 
| Returns | |
|---|---|
| uint256 | Liquidity token balance of address | 
Smart Contract#
@constantbalanceOf(_owner: address): uint256Web3#
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): boolWeb3#
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): boolWeb3#
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): boolWeb3#
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): uint256Web3#
exchangeContract.methods.allowance(_owner, _spender).call();