Dex
The contract is responsible for launching new exchange pairs and serves as the automatic market maker engine. The contract manages pools for FA1.2/FA1.2, FA2/FA2 and FA2/FA1.2 tokens. The only instance of the pool for the same pair exists.
The contract fully implements the entrypoints of the FA2 standard according to TZIP-12. The other exchange-specific entrypoints are described in the doc.
Code
State-Changing Functions
AddPair
Setup the new exchange or relaunch the exchange after all the liquidity was drained. amount_a_in
and amount_b_in
of tokens must be approved. Initial liquidity should be non-zero. All the storage parameters are reset to default values. The sender receives shares equal to a minimum of amount_a_in
and amount_b_in
. Tokens types must be provided in ascending order.
Parameter | Type | Description |
---|---|---|
token_a_type | tokens_type | The type of the first token |
token_b_type | tokens_type | The type of the second token |
token_a_in | nat | Amount of the first token to be invested |
token_b_in | nat | Amount of the second token to be invested |
Swap
Swaps the token to another token. a_to_b
type is used to exchange token_a
to token_b
. b_to_a
performs the opposite swap from token_b_address
to token_a_address
. The token_a
and token_b
are the corresponding tokens of pair_id
pool. The amount_in
of the token will be charged from the user. If the received amount is smaller than min_amount_out
then the transaction is reverted. Tokens types must be provided in ascending order. Deadlines should be in the future.
Parameter | Type | Description |
---|---|---|
swaps | list of swap_slice_type | Swaps to perform; each swap consist of |
amount_in | nat | Amount of the token to swap |
min_amount_out | nat | The minimal amount of the token to receive |
receiver | address | Receiver's address |
deadline | timestamp | Time until the operation is valid |
Invest
Adds more liquidity to the exchange. token_a_in
and token_b_in
must be approved. Initial liquidity should be non-zero. The sender spends token_a_in
and token_b_in
at most otherwise, the transaction fails. Tokens types must be provided in ascending order. Deadlines should be in the future.
Parameter | Type | Description |
---|---|---|
pair_id | nat | Pair identifier |
shares | nat | Amount of LP tokens to mint |
token_a_in | nat | Max amount of the first token to invest |
token_b_in | nat | Max amount of the second token to invest |
deadline | timestamp | Time until the operation is valid |
Divest
Burns shares
and sends tokens to the owner; operation is reverted if the amount of appropriate divested tokens is smaller than min_token_a_out
or min_token_b_out
. Tokens types must be provided in ascending order. Deadlines should be in the future.
Parameter | Type | Description |
---|---|---|
pair_id | nat | Pair identifier |
min_token_a_out | nat | Minimal amount of the first token to receive |
min_token_b_out | nat | Minimal amount of the second token to receive |
shares | nat | The amount of the shares to burn |
deadline | timestamp | Time until the operation is valid |
Close
Is used after all the exchange calls to prevent reentrancy. It can only be called by the exchange itself.
Read-Only Functions
Get_reserves
Returns the amount of tokens reserves. No arguments are needed.
Last updated