公式
This page shows the formulas used in mimo protocol.
Last updated
This page shows the formulas used in mimo protocol.
Last updated
在每笔交易中,用户可以用一定数量的特定代币对一定数量的另一种代币进行交易兑换,价格由公式进行定义。MIMO没有使用传统的交易委托账本和待执行机制。
mimo 使用的公式是基于自动做市(AMM)的 DEX 广泛采用的著名公式,例如 uniswap。
假设这是源代币, 是目标代币。在 mimo 中,, 可以是 IOTX 或任何 XRC20 令牌。 设,分别为当前流动性池中的 X-token、Y-token。
基于著名的 AMM 方程
公式中的 是一个常数。
和 的乘积在交易前后保持不变。详情请参考vbuterin的帖子。
Let's further define , are how many X-tokens you want to pay, and how many Y-tokens you will get, respectively.
We'd like to know, the price based on or. IfgetInputPrice
denotes how many Y-Tokens (i.e. ) can be bought by selling a given ,
在代码中表示为:
在代码中表示为:
where /
in above equations denotes divToInteger
, which means divide with rounding to floor of the results.
上方等式中的 /
表示 divToInteger
,意为除以四舍五入到结果。
或
在代码中表示为:
请注意,价格影响始终介于 -1
和 0
之间。
如果两个代币之间没有直接交易对,比如在 V1 中我们只支持 IOTX/XRC20交易对,交易者需要使用一个代币,例如 IOTX,作为两个代币之间交易的桥梁。
在这种情况下,价格影响公式将是
在代码中表示为:
当中,
让我们进一步定义 , ,分别是您想要支付的X-token的数量,以及您将获得的Y-token的数量。
我们需要知道,价格是基于或的。如果用getInputPrice
表示通过出售给定的可以购买的Y-token的数量(即 ),则:
如果getOutputPrice
表示购买 Y-tokens需要的X-token的数量 ,则:
在AMM中,兑换汇率会在每次交易后发生变化,也会在 , 和 池中的流动性发生变化后变化。因此,价格影响因素是交易者们在交易前希望知道的。
有两种支持计算价格影响的方法。它可以基于 或。一种是基于输入值,一种是基于输出值。