2024年11月17日:一文读懂CFMM(恒定函数做市商)的演变


在传统金融市场上 ,每种证券都需要一个买方和卖方市场才能有效地进行交易。如今,股票交易的速度和简便性被视为理所当然,尤其是在新引入的Robinhood投资模式下 。在这个新时代 ,做市商扮演着举足轻重的角色,为市场参与者创造了无缝的交易体验。在过去的一年里,做市商这个角色以名为自动化做市商(AMMs)的算法代理的形式移植到加密生态系统中。

AMMs执行的功能与传统做市商相同 ,促进两种数字资产之间的交易 。然而 ,在智能合约里不是由大银行或交易公司来做市,而是通过算法做市。与传统的做市商依靠大量资源提供严格的买卖价差不同,AMMs重新定义了提供流动性的方式 ,并应用数学公式来决定资产交易的价格。

恒定函数做市商

恒定函数做市商(CFMM)是最流行的AMM系列 。当交易者希望将代币A换成代币B时,这种AMM会使用恒定函数作为其定价机制 。在这种情况下,术语 "恒定函数 "指的是资产储备的乘积必须在发生任意交易时都保持不变。

自2017年以来 ,针对不同使用案例的优化,一些DEX已经把这个恒定函数进行了修改。下面将介绍一些最流行的DEX,并详细介绍其采用的恒定函数 。

Uniswap

Uniswap是第一个让使用恒定函数(来交换两种资产)变得流行的DEX。它使用了一种被称为 "恒定乘积AMM "的AMM变体 ,它强制要求两种资产储备量的乘积必须始终保持不变。

在这个等式中,x和y代表流动性池中两种资产的单位数量 。举例说明,假设ETH/DAI池包含100 ETH(x的值)和10,000 DAI(y的值)。在这个例子中 ,Uniswap将这两个数量相乘,得到k的值为1,000,000。现在的目标是保持k值恒定,而不考虑对流动性池的交易量 。做到这一点的唯一方法是 ,x和y的数量反向变化。换句话说 ,当x的数量增加时(交易者将ETH加入池中),y的数量必须减少(交易者将DAI从池中取出)。最终,任何给定交易所的报价都是常量乘积公式和池中代币比例的函数 。

需要注意的是 ,x和y之间的关系不是线性的。用10个ETH兑换1000个DAI不等于用20个ETH兑换2000个DAI。相反,这种关系是渐近式的 。这意味着随着花费的代币数量增加,收到的代币数量会变小 。

恒定乘积函数的特性对AMMs很有用 ,因为它确保了当任何一种资产的价格接近无穷大时,总会有流动性。

Balancer

Balancer的AMM一般化了Uniswap的恒定乘积功能,创造了一个被称为 "恒定平均AMM"的变体。这个AMM的核心是价值函数 ,它强制规定资产池中的资产余额的权重次幂的乘积应始终保持不变 。

在这个公式中,t代表池中的资产的种类数,Bt是资产数量 ,Wt是资产权重。虽然与Uniswap简单易懂的常量乘积函数相比,数学公式看起来要复杂得多,但其实很容易理解。例如 ,假设用户创建了一个Balancer Pool ,其中包含三种资产:100 ETH 、100 BTC和100,000 DAI,每种资产的权重为33.3% 。Balancer对这些数值进行如下处理:

类似于Uniswap,目标是在保持资产权重不变的情况下 ,只改变资产余额,从而保持k不变。在3种资产Balancer Pool的情况下,交易可以发生在三个资产中的任意两个之间。用户可以用ETH交换DAI ,用ETH交换BTC,或者用DAI交换ETH 。通过保持k的值不变,可以在三种资产之间生成一个价值面。

有趣的是 ,这个曲面与Uniswap的常量乘积函数并没有太大区别。另一种思考方式是将图1中的恒积函数,额外增加一个代表池中第三个代币的轴 。通过改变图2的角度,两个函数之间的相似性变得更加明显。

一文读懂CFMM(恒定函数做市商)的演变由于Balancer池被设计成有2到8种资产 ,任意两个代币之间的交易价格报价就比较复杂了。池中的每一对代币都有一个价格,这个价格取决于该特定代币的余额B和权重W 。从形式上看,交易执行的价格是按照代币余额与代币权重的比值来计算的 。

在上面的公式中 ,代币A代表被卖出的代币(进入池子) 而代币B是被买入的代币(离开池子)。如果池子的持有者不改变资产储备 ,很容易看出价格的变化完全基于交易,因为资产权重必须始终保持不变。这种机制与图2所示的恒定面相结合,可以保证买入资产的价格上升 ,而卖出资产的价格下降 。在与Uniswap相同的情况下,套利机会保证了Balancer Pools提供的价格与市场其他部分同步变动。

Curve

Curve是一个交易所流动性池,预期价格稳定的资产之间可以在该池里进行高效交易(如稳定币或封装的比特币(wrapped bitcoin))。Uniswap和Balancer主要是针对波动和价格不稳定的代币的交易 。然而 ,当处理那些想要互相保持稳定的资产之间的交易时,低价格滑点是最重要的。之前迭代的各种AMMs固有曲率就有问题了,因为交易规模越大 ,滑点就越大。

解决价格滑点问题的一个方法是,使用常数和函数作为AMM的内部交易机制 。当使用两种资产进行操作时,恒和(constant sum)做市商强制规定资产数量之和必须保持不变 ,并遵循以下函数:

如图,一个双资产恒和做市商是一条简单的直线。

虽然这个函数的简单性实现了低滑点,但它缺乏恒定产品做市商的关键属性 ,即当任何一种资产从池子中流出时 ,池子总还会有流动性,而另一种资产的数量趋于无穷大。

为了解决这些问题,Curve通过结合恒定总和和恒定乘积函数创造了一种混合AMM:在曲线的平衡点附近创建一条相对平坦的曲线 ,类似于恒定总和函数,以保持价格相对稳定,同时使两端更加倾斜 ,类似于恒定乘积函数,因此在曲线的每个点都有流动性 。在双资产的情况下(x和y),最终的结果是下面的复杂函数。

除了复杂的数学之外 ,请注意两个常数函数是如何嵌入方程中的。左边是常数和,右手边是常数积 。此外,公式中还包含了一些其他的项来达到预期的目的 。在公式中 ,n代表资产数量(在本例中n=2),A是一个 "放大系数 "参数,它决定了函数与常积函数的相似程度。A的值越低 ,Curve的函数就越接近Uniswap的函数。

就像之前的CFMMs一样 ,我们的目标是在x和y之间发生交换时保持k的值不变 。绘制该函数会像这样:

来源:Curve白皮书

从图5中可以看出,Curve的函数在中间表现为恒定加和函数,但随着x和y的值的变大 ,则变为恒定乘积函数。这种形状使曲线中间段的价格保持稳定,同时又能在两端提供流动性。

结论

在过去的几年里,AMMs通过以去中心化的、全球可访问的和非托管的方式汇聚和提供流动性 ,它已经成为DeFi的重要组成部分 。具体而言,Uniswap、Balancer和Curve等CFMMs获得了巨大的增长和应用,交易量超过数十亿美元。

自2017年以来 ,这些去中心化的交易所已经开发了恒定函数的各种变体,以解决特定的交易所问题。随着该领域继续扩大,涵盖各种资产 ,为使交易更高效,交易所必须对底层功能进行大量思考 。虽然这项技术仍处于早期阶段,但它已经带出了新的研究领域 ,更多的AMM设计将会出现 ,最终为所有DeFi用户提供更好的流动性。

猜你喜欢