热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DeFi之道丨科普:CFMM(恒定函数做市商)的演变

在传统金融市场上,每种证券都需要一个买方和卖方市场才能有效地进行交易。如今,股票交易的速度和简便性被视为理所当然,尤其是在新引入的Robi

在传统金融市场上,每种证券都需要一个买方和卖方市场才能有效地进行交易。如今,股票交易的速度和简便性被视为理所当然,尤其是在新引入的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用户提供更好的流动性。

本公众号所载文章中观点仅代表原作者个人立场,不代表巴比特资讯立场。投资者不应将文中观点、结论为作出投资决策的惟一参考因素,亦不应认为文中观点可以取代自己的判断。在决定投资前,如有需要,投资者务必向专业人士咨询并谨慎决策。


推荐阅读
  • Aptos 生态最全盘点:哪些 DeFi 项目值得关注?
    本文将从Aptos生态挑选头部DeFi项目,详解其运行机制、创新点、完成度等。撰文:Mabrary ... [详细]
  • **【汇编2】区块链的跨链技术
    一,(Vitalik)为R3写的关于跨链互操作的报告来源:以太坊爱好者2017-02-05Vitalik关于跨链的报告下载下载:Chain_Interoperability.pdf ... [详细]
  • 区块链技术的理想值与现实相比,还差的很远
    在人类历史上,从来没有哪项试验性的技术,能在面世之初就获得如此大量的资金追捧和广泛的关注。古语讲天下熙熙,皆为利来,天下攘 ... [详细]
  • 作者|COLINHARPER译者|火火酱责编|徐威龙封图|CSDN下载于视觉中国“通过使用微支付通道网络,借助当今现代台式计算机上可用的计算能力,比特币 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • DAO 与 Network State 之歌 | 共学招募
    本文已进行文化的自我审查,请读者用科学方法阅读原书进行学术研究。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文分享了一位Android开发者多年来对于Android开发所需掌握的技能的笔记,包括架构师基础、高级UI开源框架、Android Framework开发、性能优化、音视频精编源码解析、Flutter学习进阶、微信小程序开发以及百大框架源码解读等方面的知识。文章强调了技术栈和布局的重要性,鼓励开发者做好学习规划和技术布局,以提升自己的竞争力和市场价值。 ... [详细]
  • 谁是更好的选择?
    原文作者:DefiSurfer编译:LlamaC ... [详细]
  • 试图恢复UST锚定的方法不对,危急时刻要与用户频繁交流,维系用户的信任。原文标题:《赵长鹏:关于UST/LU ... [详细]
  • 区块链技术的应用案例展示
    按照行业主流观点,区块链技术应用将经历数字货币(1.0)、合约(2.0)和社会治理(3.0)阶段,当前正逐渐迈入合约阶段。一、区块链1.0:数字货币区块链技术伴随比特币应用而生,比 ... [详细]
  • 【指南】我们可以从去中心化的社区建设中学到什么?
    本文属于老雅痞原创文章,转载规矩不变,给我们打声招呼~转载请微信联系:huangdiezi,更多 ... [详细]
  • 《头号玩家》:区块链+VR构成的明天!
        强烈安利各位朋友去电影院看《头号玩家》,加好友,我自掏腰包送你两张电影票!一、现实世界≠虚拟世界——被黑的哥伦布:   现实中美好的城市可能在虚拟世界变成罪恶的哥伦布贫民窟 ... [详细]
author-avatar
carmen青春-潮人帮
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有