> For the complete documentation index, see [llms.txt](https://docs.frax.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.frax.finance/zh/guides/uniswap-v3.md).

# 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$$ 边界，然后重新调整可用于下一个刻度的流动性。
