šŸŸ Add new dex

This page describes creation of new DEX pool.

These contract methods are called only by admin of that contract.

Creation of pool consist of some parameters for seeting up DEX config.

a_constant

Constant A used for manipulating with swap function. As larger the value of A, as more the function tends to be constant sum invariant. This constant is stored inside the contact as Astorage=Aāˆ—nnāˆ’1A_{storage} = A * n^{n-1} where 2ā‰¤nā‰¤42 \le n \le 4 - number of DEX underlying tokens. You could read more about this constant at Curve whitepaper and an explanation of Curve formulas.

An explanation of Curve formulas

input_tokens

This param is a set of FA12/FA2 tokens that would be traded on DEX. Set type in Tezos contract is the sorted list of unique values, so you must keep in mind that for setting up tokens_info and when calling DEX.

tokens_info

Token Info contains initial data for Token information type - pool underlying token info.

add_pool

Token info setting

When you want to initialise pool, you should setup initial reserves, rate and precision_multiplier in correct way:

Let 4 TBC = 2 TXZ = 1 TEH (from example)

Then calculate LCMLCM of these ratios =4= 4

Token info for TBC

precision_multiplier - 10decimalLPāˆ’decimalTBC10^{decimal_{LP} - decimal_{TBC}}

rate - 10decimalLPāˆ—10decimalLPāˆ’decimalTBCāˆ—(ratioTBC/LCM)10^{decimal_{LP}} * 10^{decimal_{LP} - decimal_{TBC}} * (ratio_{TBC}/LCM)

reserves - Nāˆ—10decimalTBCāˆ—ratioTBCN * 10^{decimal_{TBC}} * ratio_{TBC}

Token info for TXZ

precision_multiplier - 10decimalLPāˆ’decimalTXZ10^{decimal_{LP} - decimal_{TXZ}}

rate - 10decimalLPāˆ—10decimalLPāˆ’decimalTXZāˆ—(ratioTXZ/LCM)10^{decimal_{LP}} * 10^{decimal_{LP} - decimal_{TXZ}} * (ratio_{TXZ}/LCM)

reserves - Nāˆ—10decimalTXZāˆ—ratioTXZN * 10^{decimal_{TXZ}} * ratio_{TXZ}

Token info for TEH

precision_multiplier - 10decimalLPāˆ’decimalTEH10^{decimal_{LP} - decimal_{TEH}}

rate - 10decimalLPāˆ—10decimalLPāˆ’decimalTEHāˆ—(ratioTEH/LCM)10^{decimal_{LP}} * 10^{decimal_{LP} - decimal_{TEH}} * (ratio_{TEH}/LCM)

reserves - Nāˆ—10decimalTEHāˆ—ratioTEHN * 10^{decimal_{TEH}} * ratio_{TEH}

Then you should receive LPT=10decimalLPāˆ—LCMāˆ—tokensCountLPT = 10^{decimal_{LP}} * LCM * tokensCount LP tokens.

Details of how to calculate values are in this table. (You can copy and play with this sheet)

Stable exchange with switching of amount of tokens

Last updated