导语

本文为 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)交流。