在传统金融市场上,每种证券都需要一个买方和卖方市场才能有效地进行交易。如今,股票交易的速度和简便性被视为理所当然,尤其是在新引入的 Robinhood 投资模式下。在这个新时代,做市商扮演着举足轻重的角色,为市场参与者创造了无缝的交易体验。在过去的一年里,做市商这个角色以名为自动化做市商(AMMs)的算法代理的形式移植到加密生态系统中。
AMMs 执行的功能与传统做市商相同,促进两种数字资产之间的交易。然而,在智能合约里不是由大银行或交易公司来做市,而是通过算法做市。与传统的做市商依靠大量资源提供严格的买卖价差不同,AMMs 重新定义了提供流动性的方式,并应用数学公式来决定资产交易的价格。
1
恒定函数做市商
恒定函数做市商(CFMM)是最流行的 AMM 系列。当交易者希望将代币 A 换成代币 B 时,这种 AMM 会使用恒定函数作为其定价机制。在这种情况下,术语 " 恒定函数 " 指的是资产储备的乘积必须在发生任意交易时都保持不变。
自 2017 年以来,针对不同使用案例的优化,一些 DEX 已经把这个恒定函数进行了修改。下面将介绍一些最流行的 DEX,并详细介绍其采用的恒定函数。
2
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 很有用,因为它确保了当任何一种资产的价格接近无穷大时,总会有流动性。
3
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 的角度,两个函数之间的相似性变得更加明显。
由于 Balancer 池被设计成有 2 到 8 种资产,任意两个代币之间的交易价格报价就比较复杂了。池中的每一对代币都有一个价格,这个价格取决于该特定代币的余额 B 和权重 W。从形式上看,交易执行的价格是按照代币余额与代币权重的比值来计算的。
在上面的公式中,代币 A 代表被卖出的代币(进入池子) 而代币 B 是被买入的代币(离开池子)。如果池子的持有者不改变资产储备,很容易看出价格的变化完全基于交易,因为资产权重必须始终保持不变。这种机制与图 2 所示的恒定面相结合,可以保证买入资产的价格上升,而卖出资产的价格下降。在与 Uniswap 相同的情况下,套利机会保证了 Balancer Pools 提供的价格与市场其他部分同步变动。
4
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 用户提供更好的流动性。
声明:本内容为作者独立观点,不代表 CoinVoice 立场,且不构成投资建议,请谨慎对待,如需报道或加入交流群,请联系微信:VOICE-V。
简介:专业性+洞察力的中文区块链媒体,致力于探索Web 3.0前瞻内容和深度解读。
评论0条