如何计算 Uniswap V3 中添加流动性的存款金额

问题描述 投票:0回答:3

在向 Uniswap V3 中的新池添加流动性时,我正在尝试计算任何给定货币对的“存款金额”公式。

以 ETH/USDC 货币对为例

当前价格:2172.05 设置价格范围-20% & +20%

最低价格:1747.7 最高价格:2612.4

以太币:0.394064(854.888 美元) USDC:1000(1000 美元)

ETH美元金额是如何计算的,公式是什么? (Uniswap 是如何让 ETH 达到 854.888 美元的???

ps:我已经看过 Uniswap V3 白皮书 https://uniswap.org/whitepaper-v3.pdf 但需要一步一步的外行解释。干杯!

额外

我一直在阅读以下文章,答案就在下面的公式中: 来源:uniswap-deep-dive-into-v3-technical-white-paper

ethereum solidity uniswap
3个回答
2
投票

这个问题对于SO来说可能有点偏离主题,但我相信无论如何它对人们都是有用的。这是我的答案...

Uniswap 使用预言机价格为您提供了您输入的 ETH 金额的美元价值,只是为了方便起见。它不是本次存款操作的参数。

这里只有3个参数:

  • 资产A金额
  • 资产B金额
  • 价格范围

资产 A(您的实例中的 ETH)与资产 B(您的实例中的 USDC)的比率决定了平衡点。例如,如果您存入 1 以太币和 1000 USDC,则平衡点将为

ETH = 1000 USDC
。最后,您定义一个价格范围来指定您希望存款发挥作用的范围。通过限制存款的价格范围,您可以提高给定范围内的资本(存款)效率。这涉及相当多的数学需要解释,但让我尝试简单地解释一下:基本上,自动化做市商研究这个方程:
a * b = k
。这意味着当
a
趋于无穷大时
b
趋于零,反之亦然。因此,“流动性”均匀地分布在 0 到无穷大之间。相反,当您设定价格范围时,您将流动性“集中”在该范围内,而牺牲了范围外的流动性。从而提高资本效率。


0
投票

在为 Uniswap V3 中的新池添加流动性的同时,我正在尝试 计算任何给定货币对的“存款金额”的公式。

向资金池添加流动性对价格没有影响。这是增加流动性的限制。假设我们有 A 和 B 代币,它们的数量分别为 x 和 y。因为我们想增加流动性,所以我们添加“dx”和“dy”。这些“dx”和“dy”金额不会影响价格。否则,任何增加的流动性都会对池子产生价格影响

给定 dx 计算 dy

如果您想将“dx”数量的 A 代币添加到池中,我们如何计算“dy”数量的 B 代币。在添加流动性之前,我们假设我们有“x”和“y”金额,因此 x 相对于 y 的价格是

x / y

由于添加流动性不会对价格产生影响,所以添加流动性后,价格应该等于

x/y

x / y = (x+dx) / (y+dy)

然后

xy + xdy = xy + ydx   // xy cancels out
x * dy = y * dx

我们正在寻找“dy”

dy = (y * dx) / x
 

类似地,您可以计算给定“dy”的“dx”

从这个方程

x * dy = y * dx

我们也可以得到这个

dx / dy = x / y

充值金额的比例应等于添加流动性前代币金额的比例


-1
投票

完整的解决方案已添加到 Excel 工作表中:

Uniswap 添加流动性代币计算

© www.soinside.com 2019 - 2024. All rights reserved.