Skip to content

数式

このページでは、mimoプロトコルで使用される数式について説明します。

概要

各取引において、トレーダーは特定のトークンの一定量を別のトークンの一定量と交換し、価格は数式によって定義されます。オーダーブックや約定待ちはありません。

mimoが使用する数式は、UniswapなどのAMMベースのDEXで広く採用されている有名な**xy=kx \cdot y = k**です。

数式 xy=kx \cdot y = k

XXを送金トークン、YYを受取トークンと仮定します。mimoでは、XXYYはIOTXまたはXRC20トークンのいずれかになります。現在の流動性プール内のXトークン、Yトークンをそれぞれxx、**yy**とします。

有名なAMM方程式に基づき:

xy=kx \cdot y = k

ここで**kk**は定数です。

xxyyの積は取引前後で同じままです。詳細は、Vitalik Buterinの投稿を参照してください。

入力に基づく価格決定

dxdx、**dydy**をさらに定義します。それぞれ支払いたいXトークンの数、受け取れるYトークンの数です。

getInputPrice

getInputPriceが、特定のdxdxを売ることで購入できるYトークン(つまりdydy)の数を表す場合:

getInputPrice(x,y,dx)=y997dx1000x+997dxgetInputPrice(x, y, dx) = \frac{y \cdot 997 \cdot dx}{1000 \cdot x + 997 \cdot dx}

getOutputPrice

getOutputPriceが、dydy個のYトークンを購入するために必要なXトークンの数を表す場合:

getOutputPrice(x,y,dy)=1000xdy(ydy)997+1getOutputPrice(x, y, dy) = \frac{1000 \cdot x \cdot dy}{(y - dy) \cdot 997} + 1

ここで、上記の式の/divToIntegerを表し、切り捨て除算を意味します。

価格への影響

AMMでは、価格は各取引後に変化します。価格への影響は、トレーダーが取引前に知りたい情報です。

価格への影響を計算する方法は2つあります。x,y,dxx, y, dxに基づくか、x,y,dyx, y, dyに基づくかです。1つは入力に基づき、もう1つは出力に基づきます。

入力に基づく(dxdx

PriceImpact(x,y,dx)=(1000x)2(1000x+997dx)21PriceImpact(x, y, dx) = \frac{(1000 \cdot x)^2}{(1000 \cdot x + 997 \cdot dx)^2} - 1

出力に基づく(dydy

PriceImpact(x,y,dy)=(ydy)2y21PriceImpact(x, y, dy) = \frac{(y - dy)^2}{y^2} - 1

注意

価格への影響は常に-1から0の間です。

クロストレードの価格への影響

2つのトークン間に直接的な取引ペアがない場合、V1のようにIOTX/トークンペアのみをサポートしている場合、トレーダーはIOTXなどの1つのトークンをブリッジとして使用して、2つのトークン間で取引する必要があります。

この場合、価格への影響は次のようになります:

PriceImpactcross=PI1PI2+PI1+PI2PriceImpact_{cross} = PI_1 \cdot PI_2 + PI_1 + PI_2

ここで:

  • **PI1PI_1**は最初の取引ペア(xxからIOTXなど)の価格への影響
  • **PI2PI_2**は2番目の取引ペア(IOTXからyyなど)の価格への影響

MITライセンスでリリースされています。