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