AMM自动化做市商

DeFi领域去中心化交易所DEX能够崛起的一个核心原因是引入了自动做市商(AMM)模式。AMM又称自动化做市商,它是去中心化交易所(DEX)最为关键的技术之一,已被证明是最具影响力的DeFi创新之一,它们能够为一系列不同代币创建和运行可公开获取的链上流动性。
任何市场都可能存在没有足够的有机流动性以支持活跃的交易的状况,做市商本质上就是通过促进这些市场中不会发生的交易来缓解这一问题的代理商。在传统的CEX里许多做市商都是专业的团队或是机构。而AMM(Automated Market Maker),相当于把他们这个角色给真正的去中心化了。
每个用户都可以把自己的代币扔到流动池里,成为一个小的做市商,然后享受交易对手续费分红。且流动池资金是去中心化开源合约控制,AMM交易数据全部上链,不像传统CEX的平台币销毁或是分红,毕竟没有人知道他们手续费真的挣了多少,平台币流通了多少等等。而在AMM这里,一切透明。更重要的是,你的资产依旧在你个人控制的钱包里,而不是进了交易平台,所以资产依旧100%安全,这是传统CEX无论如何不可能实现的。

AMM实现原理

AMM通过数学公式对资产进行定价。资产定价通过定价算法完成,不再使用传统交易平台常用的订单簿。定价公式随不同协议而变化。例如,Uniswap使用的公式为x * y= k,其中x代表流动性资金池中一种代币的数量,y则表示另一种代币的数量。在此公式中,k是一个固定常数,表明池中的流动性总量必须保持不变。
我们假设UNISWAP一个交易池中是ETH-DAI,第一个流动性提供者放进去了a个ETH和b个DAI。这时候这个交易对,对应的初始值是 x=a, y=b;那K的初始值=a*b;
此时ETH的价格就是b/a,DAI的价格=a/b;在K不变的情况下,如果这个交易池有trader T进来,想用w个EHT换DAI。他会以什么样的价格拿到多少DAI呢?
在恒定乘积下,这个运算过程是这样的:
y’=K/(x+w)
其中y’等于此次交易后,交易池中的DAI的个数。由此可知,T得到的DAI的个数=y-y’;这些DAI的价格=w/(y-y’).
所以你发现了吗?在交易者告诉平台自己要兑换的数量之前,他能拿到什么价格是不确定的。这就让UNISWAP的价格获取跟中心化交易所和利用价格预言机的交易所完全区分开了。
还有别忘了,我们假定的前提条件是K不变,那哪些情况下K值是要改变的?答案有二,一是交易费,二是流动性。
交易费
用户每一次的交易,需要交0.3%的手续费。拿上面交易举例,我们为了简化计算忽略了手续费,真实的情况是uniswap平台在计算出y’后会扣除0.3%y’的手续费,完成交易后,这0.3%dy会被添加到流动性池里,此时K值就变成了 xy+x0.3%y’=x*(y+0.3%y).
所以,你发现了吗?K值变大了。反之亦然,减少流动性,会减少K值。换言之,恒定乘积算法的K值并不恒定,每一笔交易都会影响K值。
流动性
流动性是怎么改变K值的呢?当第二个人在一个交易对中按照比例增加了ETH和DAI的数量,X和Y就同时增加了,很显然,K的值就是增加的;如果第一个人取走自己的交易对,K值就减少,非常简单。

滑点

滑点是指成交价与下单时的预期价不同,通常是由于从下单到成交时的价格变动造成的。当我们在dex上交易的时候可以手动设置滑点。当交易价格超过我们可以接受的滑点范围时交易会失败。
怎样才能避免滑点
1.我们无法完全避免滑点,但可以减少滑点带来的风险,将损失降到最低。首先,只在具有良好流动性和完善基础设施的平台上进行交易。最好的办法是选择高交易量、高流动性的钱币。
2.可以选择更容易成交的小额交易,而不是一下子下一笔大单。如果你下的单超过了现有的流动性下DEX是无法撮合交易的。如果把大单分解成几个小单,就更有可能成交,不会有流动性不足的情况。

无偿损失

在DEFI协议中我们可以组LP来为流动池提供流动性,以收取挖矿收益或者手续费收益。例如UNISWAP中的0.3%的手续费会按LP比例来分配收益。因提供流动性需要将两种代币质押到LP池子,如果两个代币的价格发生波动,根据恒定乘积公式 X*Y=K,质押的代币数量会发生变化,按U本位计价在比价波动前后,会承担额外的损失,这部分额外损失就是我们常说的无常损失。

以ETH/USDT这个交易对为例,在ETH价格为$500时,我们可以提供这样的资金:
ETH: 20枚
USDT: $10,000
总值: $20,000 这是池中的所有的资金。
x*x*eth单价=20000
如果ETH的外部价格上涨到$550,就会有投机者来这里买入便宜的ETH,并把价格推高到$550。
按 x * y = k 的Uniswap自动做市商公式:
20 * 10,000 = 200,000 (ETH=$500)
19.07 * 10488 = 200,000(ETH=$550)
投机者可以用$488来买走0.93ETH,从而把价格推高到跟市场一致。而他的成本是:ETH=$524.7,有一定的套利空间。
在新的状态下(ETH=$550),对于LP来说
ETH:19.07枚
USDT:$10488
总值:$20976
但是,如果我们这一对ETH/USDT资金没有来放入流动性池,情况是:
总值:$21000
因此,因为ETH上涨,我们损失了$24。这就是无常损失。
如果ETH价格跌到了$400,情况会怎么样呢?
按 x * y = k 的Uniswap自动做市商公式:
20 * 10,000 = 200,000 (ETH=$500)
22.36 * 8944 = 200,000(ETH=$400)
在新的状态下(ETH=$400),对于LP来说
ETH:22.36枚
USDT:$8944
总值:$17888
但是,如果我们这一对ETH/USDT资金没有来放入流动性池,情况是:
总值:$18000
因此,因为ETH下跌,我们损失了$112。也就是说,价格下跌,我们也会遭遇无常损失。唯有价格不动,LP才不会有无常损失。

当我们把一对ETH/USDT存入流动性池子中,变化是:
● 当ETH价格上涨时,系统实际上帮我们自动卖出ETH。
● 当ETH价格下跌时,系统实际上帮我们自动买入ETH。
因此,我们的第一选择是做稳定币池的LP,因为它们之间价格几乎没有波动,其次是做ETH/BTC的LP,因为二者之间往往是同向的,比整体市场波动小。
总的来说,流动性提供者承受了无常损失,提供了流动性服务,并因无常损失而获得了相应的回报