# Uniswap v3

Uniswap v3的AMM算法的关键创新允许做市商在特定价格区间之间部署流动性，支持稳定币对稳定币池子(例如FRAX-USDC)在紧紧锚定的情况下积累极深的流动性。与Uniswap v2相比，Uniswap v3的区间订单集中了流动性，而不是分散在无限的价格范围内。

![Taken from the Uniswap v3 whitepaper](/files/-MhFPP-uCKUJ4QnZR9Gm)

Uniswap v3流动性AMO通过向其他稳定币提供针对FRAX的流动性，使FRAX和抵押品发挥作用。由于AMO能够进入Uni v3上的任何位置并铸造FRAX，因此它允许扩展到Uni v3上的任何其他稳定币以及后续的不稳定抵押品。此外，可以定期调用 `collectFees()` 函数，将AMO利润分配给超额抵押品的市场操作。

UniV3LiquidityAMO (已弃用): [`0x3814307b86b54b1d8e7B2Ac34662De9125F8f4E6`](https://etherscan.io/address/0x3814307b86b54b1d8e7B2Ac34662De9125F8f4E6)

UniV3LiquidityAMO\_V2: [`0xc91Bb4b0696e3b48c0C501B4ce8E7244Fc363A79`](https://etherscan.io/address/0xc91Bb4b0696e3b48c0C501B4ce8E7244Fc363A79)

### AMO **说明**

1. 减少抵押 — 将闲置抵押资产和新铸造的FRAX存入到Uni v3 池子。
2. 市场操作 — 累积Uni v3交易费用和抵押品类型之间的互换。
3. 再抵押 — 从Uni v3池子中取出并燃烧FRAX并返还USDC以增加抵押率。
4. FXS1559 — 在抵押率之上积累每日交易费用。

### **衍生**

![A diagram showing range-order virtualized reserves using the constant-product invariant](/files/-MhFXFIzSENjlb1eBzyo)

所有价格都以一个实体与另一个实体之间的比率存在。通常，我们选择一种货币作为分母中的共享记账单位(例如美元)来比较日常商品和服务的价格。在Uniswap中，价格是由储备数量$$x$$ 与池中储备$$y$$ 的比例来定义的。

Uniswap v3的区间订单机制符合现有的恒定乘积做市公式(CPMM)，通过在特定的价格点或 `tick`“虚拟化”储备。通过指定流动性头寸以哪个位置为界限，就可以创建遵循恒定乘积不变式的区间订单，而不必将流动性分散到特定资产的整个范围$$(0, \infty)$$内。

Uniswap v3中的价格由值`1.0001` 到tick 值 $$i$$。 tick价格的边界可以用代数群 $$G = { g^i \mid i \in \mathbb{Z}, g = 1.0001}$$表示。这种机制允许简单地将整数转换为价格边界，并且方便地将每个价格边界分离为价格的一个基点(0.01%)。

![Defining price in terms of ticks](/files/-MhG9L6TjhMbf5voe_-7)

虚拟储备是通过跟踪每个头寸的流动性和刻度界限来跟踪的。越过一个tick边界，该tick可用的流动性 $$L$$可能会改变，以反映进入和离开各自的价格区间的头寸。在tick边界内，掉期根据虚拟储备改变价格$$\sqrt{P}$$ ，即它就像恒定乘积($$x\*y=k$$)不变量一样。虚拟储备 `x` 和 `y` 可以由流动性和价格计算:

![L: Liquidity; P: Price; x, y: reserves of X and Y](/files/-MhG7A3U3fRzIVsiE4sc)

请注意，实际实现使用价格的平方根，因为它节省了计算tick内交换的平方根操作，从而有助于防止舍入错误。

![Converting price to square root of ticks](/files/-MhI-eASpsUs5P-qWx_5)

流动性可以被认为是CPMM$$x\*y=k$$ 中的一个虚拟 $$k$$，而 $$\Delta Y$$对应于资产的数量$$Y$$ 以及 $$\Delta\sqrt P$$代表了tick内的价格滑点。

![Describing the relationship between liquidity, price, and the amount of one asset swapped](/files/-MhI310r4l25FcgdlRyl)

由于 $$L$$ 针对intra-tick是固定的， $$\Delta X$$ 和 $$\Delta Y$$可以从流动性和平方根的价格计算得出。当跨越一个刻度时，交易滑点必须只滑到 $$\sqrt P$$ 边界，然后重新调整可用于下一个刻度的流动性。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.frax.finance/zh/guides/uniswap-v3.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
