织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 比特币 > 比特币资讯

精读Uniswap V3技术白皮书,我们发现了什么?(3)

时间:2021-04-08 15:22来源:未知 作者:admin 点击:
5Tick内的SWAP 假设有一个很小的量的y,需要swap为x。通过6.13的公式,可以计算出因为y的变化导致的价格变化。 再利用6.15的公式可以算出换取的x的量。 u

5Tick内的SWAP

假设有一个很小的量的y,需要swap为x。通过6.13的公式,可以计算出因为y的变化导致的价格变化。

再利用6.15的公式可以算出换取的x的量。

uniswap V3针对同样的交易对设置了不同的交易费:0.05%,0.3%以及1% (还可以添加其他费率)。如果是从Y换取X,则在换取之前先扣除手续费再进行上述的交换。

在同一交易池中只支持一种费率。也就是说,在一个交易池中支持不同的价格区间,但是都是同样的费率。如果需要添加同样交易对的不同交易费的交易池,必须创建新的交易池。

接下来,深入讲解一下 添加/删除流动性以及交易费用的计算逻辑。

6添加/删除流动性

V3的添加/删除流动性是当前价格情况下在某个区间添加或者删除流动性。所有的流动性添加/删除流动性采用如下的公式:

注意,价格变化并不是指区间的大小,而是在某个区间上提供流动性,相对当前价格,“需要相应资金变化”对应的价格变化。

分为三种情况,想要添加的流动性区间和当前价格的关系。

当前价格处于流动性价格区间 (il <= ic < iu)

因为价格在区间范围内,如果价格滑动到il,则需要提供y资金。如果价格滑动到iu,则需要提供相应的x资金。所以,对于delta_Y来说的,价格变化为sqrt(P) - sqrt(p(il));对于delta_X来说,价格变化为1/sqrt(P) - 1/sqrt(p(iu))。

当前价格低于流动性价格区间

因为当前价格远低于il,即使从当前价格向iu滑动,也只需要x的资金,不需要y的资金。所以,在这种情况下,delta_Y = 0。因为从il滑向iu需要整个区间的x的资金,对于delta_X来说,价格变化为1/sqrt(il) - 1/sqrt(p(iu))。

当前价格高于流动性价格区间

和第一种情况类似,不重复分析了。

7Swap交易费用

uniswap最复杂的逻辑是计算交易费用并分配。在添加和删除流动性之前需要将相应的交易费用提取。

Tick上的总流动性

在某个Tick上可以存在多个区间。在计算交易费用时,需要平摊这些费用给所有在这个Tick上多个区间的总的流动性。在每个区间的边界的Tick上记录下delta_L(所有以这个Tick为边界的区间的流动性总和)。

存在一个全局状态:liquidity,保存当前价格对应Tick的流动性总和。当价格波动,穿过某个Tick时,会进行流动性的增加或者减少(取决于价格波动方向)。举例来说,价格从左到右穿过区间,当穿过区间的第一个Tick时,流动性需要增加,穿出最后一个Tick时,流动性需要减少,中间的Tick都没有流动性的增加和减少(delta_L为0)。 (责任编辑:admin)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容