Uniswap 交易逻辑解析
May 21, 2022
Uniswap 交易逻辑解析
X * Y = K
这是 uniswap
的核心公式,我们在执行交易之前,需要得出市场价格,在uniswap
中,使用该公式去计算价格,而不是明确标价,它看起来比较抽象,下面通过例子解释该公式的运行逻辑。
以下逻辑均不考虑gas
费和手续费。
- X = ETH
- Y = 任意其他 Token
- K = 恒定乘积
我们需要再交易时,去保持 k 的不变或者变大,这意味着,如果你减少了 X,就必须增加 Y。
现在假池里面有 10 个 ETH、10000 个 DAI,我们想要出售 1 个 ETH 去获得 DAI。
先计算 K 的值
k = eth * dai;
k = 10 * 10000;
k = 100000;
得出 k 的值是 100000,接下来我们进行出售动作,出售既代表将我钱包中的 eth 转到 uniswap 合约地址上,所以我的钱包中的 eth - 1,而 uniswap + 1。
eth = 10 + 1;
k = 100000;
y = k / eth;
y = 9090.90909;
价格 = 原来的y - y;
价格 = 10000 - 9090.90909;
价格 = 909.09091;
通过这个公式,我们得出:出售 1 个 eth 最多获取 909.09091 个 DAI,为什么是这个值呢?
因为我们需要保持公式中的 k 值不变,那么,当 eth+1 的时候,为了维持公式中的 k 不变,我们需要去计算 y 的值是多少,然后保持 k 值的不变的情况下,我们可以获取任意个 DAI。
也就是旧 y - 新 y = 可获取的最大值