我已经花了几个小时试图了解执行价格。
我理解中间价的概念,因为它是两对鞋之间的储备比率。
根据Uniswap sdk文档,执行价格是发送/接收资产的比率。我很难理解计算是如何进行的。此外,Uniswap对的交换似乎是基于执行价格而非中间价格。为什么在交易中使用执行价而不是中间价?
在Uniswap等自动化做市商中,您将收到的代币数量取决于您将以非线性方式发送的代币数量:您从池中移除的流动性越多,最终收到的代币就越少。
如果你不考虑费用,对X和Y的储备必须在每次交换中满足以下不变量:
Xold Yold = Xnew Ynew
因此,通过将ΔX发送到池,您将根据公式接收ΔY:
ΔY = (Y ΔX)/(X + ΔX)
执行价格定义为ΔY/ΔX,即
Execution price = Y/(X+ΔX)
请注意,中间价(定义为Y/X(近似于执行价格,ΔX近似于0。这就是为什么Uniswap指出;表示理论上可以用无穷小量(ε(的一个代币换取另一个代币的价格;。然而,在实践中,您将支付执行价格,因为您还需要为从池中移除流动性支付费用。
自动化做市商使用Constant Function Market Makers
公式。根据这个公式,数量的乘积总是恒定的。假设最初您有4000个A和4000个B代币。金额的乘积
// 16.000.000 will always be constant
4000 X 4000 = 16.000.000
假设一个用户带来了1000个A代币。现在,代币A的总金额将为5000。我们必须决定要向用户转移多少令牌B。
代币的乘积必须始终为16.000.000。我们有5000个代币A,池中应该保留多少代币B
16.000.000 / 5000 = 3.200
3.200令牌B应保留在池中。因此我们必须向用户转移4000-3200=800令牌B。