Uniswap V3 与集中利用多个资金池的流动性 如何更好提高资金效率

Uniswap V3 与集中利用多个资金池的流动性 如何更好提高资金效率

## 导语 本文为 QuarkChain 创始人兼 CEO 周期博士为其担任顾问的项目提供的一套提高资金率的原理设计。目的在于分享 DeFi 设计思想并同更多 DeFi 爱好者进行交流,周期博士(qizhou@quarkchain.org)首先从对 Uniswap 的资金利用公式出发,分析了 Uniswap 采用的提高单个交易对资金利用率的方法,然后在这个基础上设计了更多(大于等于三)个币种构建集合资金池的流动性原始方案,并分析了这种方式能够带来的优点如更高的资金利用率,更低的 Gas 和更高的 LP 回报。欢迎就本文的模型设计同周期博士进行交流。 ## Uniswap V2 的简要回顾 Uniswap V2 是最受欢迎和最成功的 DEX,以交易对形式,通过曲线对成对资产进行定价并进行兑换,其原理如下: ![78a7b952bb58bf505a6b3ed328d85454.png](https://img.learnblockchain.cn/attachments/2021/10/bLeaMNYd616fbf0da1fcd.png) 其中 x 和 y 是池中资产的余额。给定 Δx,为了将 Δx 交换为 Δy,Uniswap V2 将执行以下计算 ![1a330bd26c54ae1820dd790fe9a49416.png](https://img.learnblockchain.cn/attachments/2021/10/bHbQdsoa616fbf2883348.png) 这样兑换后仍然满足 xy = k 不变量,价格为 ![7149b326c26b3a8dfd5f1eb2b7c820d2.png](https://img.learnblockchain.cn/attachments/2021/10/FeBiBSPr616fbf33b3df6.png) Uniswap V2 的一个很大的特点是无需授权 -任何人都能够通过提供代币创建一个两种资产的交易对。例如,通过在池中提供 x = 1 ETH 和 y = 3000 USDT,LP 可以创建一个交易对,ETH 最初定价为 3000 USDT/ETH。 尽管 Uniswap V2 获得了广泛采用,但 Uniswap V2 的关键问题是其资金效率低,因为流动性分布在价格 [0, +∞] 上。这意味着如果两种资产的价格集中在一个相对较小的范围内(例如稳定币兑换),池中沉淀大部分资产并没有参与兑换,从而导致高滑点和 LP 较低的手续费收益。 ## 将流动性集中的 Uniswap V3 Uniswap V3 通过一种称为集中流动性的技术改善了低资金效率问题,该技术使用以下曲线: ![78642b02f47d8b262791af608e1dc101.png](https://img.learnblockchain.cn/attachments/2021/10/Gf9F1iSO616fbf4d5b408.png) 其中兑换的实际价格在 [p_a, p_b] 范围,p_a < p_b。如果设置 p_a = 0 和 p_b = +∞,V2 本质上是 V3 的特例。 在提供流动性时,Uniswap V3 会向 LP 询问流动性的价格范围(见下图)。 ![c7c58c6077c74a9fcd01e9cf6bb9d339.png](https://img.learnblockchain.cn/attachments/2021/10/1Ahx4Jsl616fbf65107bb.png) 这允许 LP 将流动性集中在目标价格范围内,从而实现更高的资金效率。以稳定币兑换(USDC/USDT)为例,从下图中,95%的流动性集中在价格区间[0.999, 1.001],实现了比 Uniswap V2 约 2000 倍的资金效率。由于流动性集中,兑换 USDC/USDT 的滑点远低于 V2,因此对于池中提供的相同数量的资产,相比 V2 LP 可以收到更多的手续费奖励。 ![f17e6ee5e1d0d9f6ae9def9d0d3dd8be.png](https://img.learnblockchain.cn/attachments/2021/10/XtyimDk2616fbf7404b6f.png) 由于流动性集中,Uniswap V3 的 TVL 增长非常顺利,3 个月左右达到 2.5B。 ![68b6e9f228a483ead2519079dcbb010f.png](https://img.learnblockchain.cn/attachments/2021/10/gZg25KC2616fbf8bc08fd.png) 集中多资产的流动性 Uniswap V3 只为一对资产提供集中流动性。那么一个自然的问题是:“如果在一个资金池中集合多个资产会怎么样?“ 通过集中更多资产的流动性,我们可以实现更高的资金效率,因为资产可以共享一个池中的流动性而不是各自的流动性。 相比之下,在 V3 中,由于直接兑换的流动性不足,兑换可能会被路由到多个交易对。例如,交换 TUSD -> BUSD 可能会被路由到 TUSD -> USDT -> BUSD,这意味着交易者将支付更多的费用,滑点也随之提高。所以核心问题是 “多资产流动性集中的曲线应该是怎样的?” 遗憾的是,答案并不简单,而是更为复杂。 让我们从从集中流动性能够获益最多的稳定币兑换开始。假设两个稳定币的价格在 [p, 1/p] 之间(例如,p = 0.999),我们可以将 V3 曲线简化为 ![b0fb722fc777b3f674c306e9ecffcf9d.png](https://img.learnblockchain.cn/attachments/2021/10/htQvAYB5616fbfa585950.png) 其中 [p, 1/p] = [p_a, p_b]。简化曲线的好处是它有点对称。首先,让我们先添加第三个稳定币交易对,得到以下等式![b41ab1e896204a379073b8e6b662b338.png](https://img.learnblockchain.cn/attachments/2021/10/IYyxjfg3616fbfbbb0bb3.png) 请注意,三个资产的方程与两个资产方程相比有一些细微变化:等号右边是 L³ 而不是 L² 等号左侧我们使用 p 的立方根,而不是使用 p 的平方根。依靠这个等式,我们有一个关键结果: ![a430478d6d49015d569bd30736042a17.png](https://img.learnblockchain.cn/attachments/2021/10/eCXIyRxP616fbfd0288d3.png) 命题 1. 给定池中任意数量的资产,{x,y,z},通过上图曲线交换任意两个代币的价格会在[p,1/p]的范围内 示例: 三个币种均匀分布的情况 - 3 个稳定币,取小数点后 6 位 - x, y, z = [1000,000e6, 1000,000e6, 1000,000e6],即每个资产在池中各有 1M - p = 0.999,即价格区间为 [0.999, 1.001] 由于三项相等,我们有: L = x / (1 — ∛0.999) = 2998.99977x 请注意,与 xy = k 曲线(其中 L = x)相比,我们的资金效率约为 2000 倍。 用 10,000e6(比如 10k 美元)的 代币 0(T0) 交换 代币 1(T1) 将返回 9999.96e6 T1 @ 0.999996 T0/T1。作为比较,xy=k 曲线将返回 9375e6 T1 @ 0.9375 T0/T1,其滑点要高得多。 极度不平衡的情况 - 3 个稳定币,仍取小数点后 6 位 - x, y, z = [0, 0, 1000,000e6],即每个资产在池中各有 1M - p = 0.999,即价格区间为 [0.999, 1.001] 由于矿池只有一个资产 T2,我们预计 T2 的价格将接近极限价格,即 0.999,那么其余资产的价格(T0/T1)与 T2 的对应价格应为 1.001。 按照曲线,我们可以求解 L = 999.333z。因此,将 10,000e6 T0 交换为 T2 将返回 10009.90e6 T2 @ 1.00099 T0/T2,几乎与极限价格(1/0.999)相同。 当前状态 我们正准备部署一个使用 Solidity 的新稳定币交换算法,它预计有如下几个特点: - 可以高精度定点求解 - n = 3 个资产(可以扩展到更多) - 可调整的价格范围 [p, 1/p] - Uniswap V2 风格的界面(挖矿/烧毁/兑换) - 优化 Gas 成本 一旦算法的实现得到很好的验证,我们将使用它作为下一个 Smoothy.finance (SMTY) 的候选版本——我作为顾问的下一代同一资产稳定币兑换协议项目。 ## 未来发展 在集合资产的集中流动性领域,可以进一步发展几个有趣的话题: - 更多资产{x_0, x_1,...,x_n},曲线看起来像 ![c5e8a05996563e48a1e60c737aed3034.png](https://img.learnblockchain.cn/attachments/2021/10/SIBi2jnq616fbfec723bb.png) - 多个价格区间。例如,假设我们有 p_0 < p_1(例如,p_0 = 0.99,p_1 = 0.999),LP 可以选择其流动性的价格范围之一。因此,该算法将联合求解以下方程以进行兑换。 ![cb91d6c428d2448f651dd7e5c02010c6.png](https://img.learnblockchain.cn/attachments/2021/10/i4AxXsz5616fbff54ee8d.png) - 不同资产的不同价格范围,其中的等式可能看起来像 ![87e29fdf1a07383aab9506688aef515e.png](https://img.learnblockchain.cn/attachments/2021/10/ATa5jXs8616fc00f9459e.png) ## **结束语** 集合资产的流动性是 DEX 中最热门的话题之一,因为它具有以下好处: - 更高的资金效率 - 降低滑点 - 更多 LP 收益 Uniswap V3 是第一个为成对资产提供集中流动性的 DEX。对于稳定币兑换,资金效率可以提升至 2000 倍。 我们也设计出了一个可以集中超过三个资产的流动性池: - 在多种资产之间共享流动性 - 非常适合稳定币兑换 - 可以成为同一资产稳定币互换市场中的竞争性产品(相对于 Curve) - 用 Solidity 编写的智能合约 如有关于这套设计的任何疑问,欢迎同我(qizhou@quarkchain.org)交流。 ![](https://upyun-assets.ethfans.org/uploads/photo/image/3b2920f8380b4754a0e2054ae3635a68.jpg!/scale/21.5)

导语

本文为 QuarkChain 创始人兼 CEO 周期博士为其担任顾问的项目提供的一套提高资金率的原理设计。目的在于分享 DeFi 设计思想并同更多 DeFi 爱好者进行交流,周期博士(qizhou@quarkchain.org)首先从对 Uniswap 的资金利用公式出发,分析了 Uniswap 采用的提高单个交易对资金利用率的方法,然后在这个基础上设计了更多(大于等于三)个币种构建集合资金池的流动性原始方案,并分析了这种方式能够带来的优点如更高的资金利用率,更低的 Gas 和更高的 LP 回报。欢迎就本文的模型设计同周期博士进行交流。

Uniswap V2 的简要回顾

Uniswap V2 是最受欢迎和最成功的 DEX,以交易对形式,通过曲线对成对资产进行定价并进行兑换,其原理如下:

其中 x 和 y 是池中资产的余额。给定 Δx,为了将 Δx 交换为 Δy,Uniswap V2 将执行以下计算

这样兑换后仍然满足 xy = k 不变量,价格为

Uniswap V2 的一个很大的特点是无需授权 -任何人都能够通过提供代币创建一个两种资产的交易对。例如,通过在池中提供 x = 1 ETH 和 y = 3000 USDT,LP 可以创建一个交易对,ETH 最初定价为 3000 USDT/ETH。

尽管 Uniswap V2 获得了广泛采用,但 Uniswap V2 的关键问题是其资金效率低,因为流动性分布在价格 [0, +∞] 上。这意味着如果两种资产的价格集中在一个相对较小的范围内(例如稳定币兑换),池中沉淀大部分资产并没有参与兑换,从而导致高滑点和 LP 较低的手续费收益。

将流动性集中的 Uniswap V3

Uniswap V3 通过一种称为集中流动性的技术改善了低资金效率问题,该技术使用以下曲线:

其中兑换的实际价格在 [p_a, p_b] 范围,p_a < p_b。如果设置 p_a = 0 和 p_b = +∞,V2 本质上是 V3 的特例。

在提供流动性时,Uniswap V3 会向 LP 询问流动性的价格范围(见下图)。

这允许 LP 将流动性集中在目标价格范围内,从而实现更高的资金效率。以稳定币兑换(USDC/USDT)为例,从下图中,95%的流动性集中在价格区间[0.999, 1.001],实现了比 Uniswap V2 约 2000 倍的资金效率。由于流动性集中,兑换 USDC/USDT 的滑点远低于 V2,因此对于池中提供的相同数量的资产,相比 V2 LP 可以收到更多的手续费奖励。

由于流动性集中,Uniswap V3 的 TVL 增长非常顺利,3 个月左右达到 2.5B。

集中多资产的流动性 Uniswap V3 只为一对资产提供集中流动性。那么一个自然的问题是:“如果在一个资金池中集合多个资产会怎么样?“ 通过集中更多资产的流动性,我们可以实现更高的资金效率,因为资产可以共享一个池中的流动性而不是各自的流动性。

相比之下,在 V3 中,由于直接兑换的流动性不足,兑换可能会被路由到多个交易对。例如,交换 TUSD -> BUSD 可能会被路由到 TUSD -> USDT -> BUSD,这意味着交易者将支付更多的费用,滑点也随之提高。所以核心问题是 “多资产流动性集中的曲线应该是怎样的?” 遗憾的是,答案并不简单,而是更为复杂。

让我们从从集中流动性能够获益最多的稳定币兑换开始。假设两个稳定币的价格在 [p, 1/p] 之间(例如,p = 0.999),我们可以将 V3 曲线简化为

其中 [p, 1/p] = [p_a, p_b]。简化曲线的好处是它有点对称。首先,让我们先添加第三个稳定币交易对,得到以下等式

请注意,三个资产的方程与两个资产方程相比有一些细微变化:等号右边是 L³ 而不是 L² 等号左侧我们使用 p 的立方根,而不是使用 p 的平方根。依靠这个等式,我们有一个关键结果:

命题 1. 给定池中任意数量的资产,{x,y,z},通过上图曲线交换任意两个代币的价格会在[p,1/p]的范围内 示例:

三个币种均匀分布的情况

  • 3 个稳定币,取小数点后 6 位
  • x, y, z = [1000,000e6, 1000,000e6, 1000,000e6],即每个资产在池中各有 1M
  • p = 0.999,即价格区间为 [0.999, 1.001]

由于三项相等,我们有:

L = x / (1 — ∛0.999) = 2998.99977x

请注意,与 xy = k 曲线(其中 L = x)相比,我们的资金效率约为 2000 倍。

用 10,000e6(比如 10k 美元)的 代币 0(T0) 交换 代币 1(T1) 将返回 9999.96e6 T1 @ 0.999996 T0/T1。作为比较,xy=k 曲线将返回 9375e6 T1 @ 0.9375 T0/T1,其滑点要高得多。

极度不平衡的情况

  • 3 个稳定币,仍取小数点后 6 位
  • x, y, z = [0, 0, 1000,000e6],即每个资产在池中各有 1M
  • p = 0.999,即价格区间为 [0.999, 1.001]

由于矿池只有一个资产 T2,我们预计 T2 的价格将接近极限价格,即 0.999,那么其余资产的价格(T0/T1)与 T2 的对应价格应为 1.001。

按照曲线,我们可以求解 L = 999.333z。因此,将 10,000e6 T0 交换为 T2 将返回 10009.90e6 T2 @ 1.00099 T0/T2,几乎与极限价格(1/0.999)相同。

当前状态

我们正准备部署一个使用 Solidity 的新稳定币交换算法,它预计有如下几个特点:

  • 可以高精度定点求解
  • n = 3 个资产(可以扩展到更多)
  • 可调整的价格范围 [p, 1/p]
  • Uniswap V2 风格的界面(挖矿/烧毁/兑换)
  • 优化 Gas 成本

一旦算法的实现得到很好的验证,我们将使用它作为下一个 Smoothy.finance (SMTY) 的候选版本——我作为顾问的下一代同一资产稳定币兑换协议项目。

未来发展

在集合资产的集中流动性领域,可以进一步发展几个有趣的话题:

  • 更多资产{x_0, x_1,...,x_n},曲线看起来像

  • 多个价格区间。例如,假设我们有 p_0 < p_1(例如,p_0 = 0.99,p_1 = 0.999),LP 可以选择其流动性的价格范围之一。因此,该算法将联合求解以下方程以进行兑换。

  • 不同资产的不同价格范围,其中的等式可能看起来像

结束语

集合资产的流动性是 DEX 中最热门的话题之一,因为它具有以下好处:

  • 更高的资金效率
  • 降低滑点
  • 更多 LP 收益

Uniswap V3 是第一个为成对资产提供集中流动性的 DEX。对于稳定币兑换,资金效率可以提升至 2000 倍。

我们也设计出了一个可以集中超过三个资产的流动性池:

  • 在多种资产之间共享流动性
  • 非常适合稳定币兑换
  • 可以成为同一资产稳定币互换市场中的竞争性产品(相对于 Curve)
  • 用 Solidity 编写的智能合约

如有关于这套设计的任何疑问,欢迎同我(qizhou@quarkchain.org)交流。

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 2021-10-18 16:47
  • 阅读 ( 313 )
  • 学分 ( 0 )
  • 分类:Uniswap

评论