自动化做市商(AMM)概述
自动化做市商(AMM)是一种用于控制去中心化交易平台上加密资产流动性和定价的软件算法。AMM系统在DeFi行业中广泛应用,尤其是在Uniswap、Balancer、Bancor和Curve等去中心化交易所(DEX)上。AMM利用锁定在特殊智能合约中的多种代币的加密资产公共池来创建去中心化市场。
AMM的起源
AMM是一种自主交易机制,大多数DeFi协议都在其上运行。它促进了资本的流动和在可用加密资产市场中执行用户交换。第一个公开讨论实施AMM的开发者是Gnosis项目团队的成员Alan Liu。他的想法由以太坊创始人Vitalik Buterin于2016年在Reddit和2017年7月的个人博客中概述。这一概念构成了Uniswap平台协议的基础,该协议从以太坊基金会获得了其第一笔10万美元的资助。此外,Vitalik Buterin还向Uniswap开发者提供了建议。随后,AMM因Uniswap而广为人知。同时,Bancor Network平台可以被视为最早成功的AMM实现之一,该平台在2017年6月通过ICO筹集了1.4亿美元。
流动性池与AMM的关系
AMM运作所需的关键要素是流动性池——一种以智能合约形式存在的加密资产存储。流动性池通常由两种加密资产组成,形成一个市场——类似于中心化交易所上的交易对。一些池参与者锁定他们的资金以通过交换佣金产生收入。此类用户被称为流动性提供者。另一类是通过协议(此类交易称为“交换”)使用其中一个池进行加密货币交换的去中心化交易所的直接用户。
为了更好地理解流动性池,让我们看看是什么导致了它们的创建。第一个DEX交易所在以太坊上运行,并使用中心化交易所上使用的标准订单簿进行交易。为了使这种交易机制有效,它必须具有极高的交易处理速度。鉴于去中心化交易所上的交易通过区块链确认,此类DEX的实际速度和能力极其有限。AMM为这一问题提供了解决方案。因此,AMM是一种从根本上不同的创建资产市场的方式,它是协议处理买卖订单和用户储备的公式或规则。
流动性池的运作方式
池可以使用两种或更多资产。例如,在Uniswap交易所上,可以创建配对代币的池。Balancer平台允许创建三种或更多代币的池。而Curve协议则设计用于基于具有相似价值的资产的池,如ETH和包装代币WETH或USDC和DAI。这些池的运作由AMM管理。每个这样的AMM-DEX可能会使用自己的公式和规则与流动性池交互。例如,Uniswap协议使用以下公式:x * y = k。在方程中,x和y表示流动性池中可用的代币数量;k是一个称为不变量的常数值。在Curve的情况下,使用公式x * y = k和x + y = k。公式x * y = k也用于SushiSwap和PancakeSwap项目,这是最常见的AMM-DEX类型。
流动性池中的资产定价
当流动性在池中被锁定时,其提供者会收到特殊的LP代币,确认他们在池中的份额。它们可以被视为一种期票,持有它有权获得交易所交易佣金并从池中返还其份额;LP代币是一种可转让的加密资产,可以在公开市场上出售或交换,并投资于第三方DeFi应用程序。通过流动性池交换一种资产为另一种资产的过程称为交换。该过程的本质是向池中添加一种资产,而不是像LP那样添加两种资产。池对交换收取小额佣金,与中心化交易所上的交易佣金相当,即0.1-0.3%。费用根据流动性提供者在池中的份额按比例分配。
示例
让我们为ETH/USDC对创建一个条件性流动性池。在1 ETH等于2000 USDC的价格下,我们需要在智能合约中同时锁定这两种硬币的任何金额,比例为1:2000。在这个价格下,池中可能有100 ETH和200,000 USDC。池中资产的余额由它们的价格决定。当用户决定使用上述池交换10 ETH时,他将以正常交易将其硬币存入智能合约。作为交换,他将获得20,000 USDC(不包括交换费)。交换后,池的余额将为110 ETH和180,000 USDC。因此,ETH在该池中的价格将约为1636 USDC,而不是其他市场中的2000 USDC。这种情况吸引了套利交易者,他们通过向池中添加USDC来利用不平衡,直到价格达到每1 ETH 2000 USDC的市场价格。
AMM的缺点
尽管AMM对交易和DeFi来说是一个突破,但它也有一些明显的缺点。首先,使用AMM进行交换时存在高价格滑点的风险。这反过来又导致了LP的损失风险和普通用户的矿工提取价值(MEV)风险。为了防范此类风险,正在创建其他类型的AMM,例如结合AMM-Balancer和Gnosis协议开发的CowSwap项目。其次,与中心化交易所不同,通过AMM交易时只能放置一种类型的订单。无法使用限价订单或其他类型,例如止损订单。
无常损失是什么?
无常损失(IL)是在使用AMM-DEX持有流动性池中的资产时的临时或未实现损失。IL归因于流动性提供者(LPs),即代币锁定在池中时的价格与持有时的实际价格之间的差异。损失被称为未实现,因为它们在从池中提取流动性之前并未锁定。作为一个例子,让我们以Uniswap交易所上的流动性池为例,该池按照经典公式x * y = k运作:一个流动性提供者锁定了1 ETH和2000 DAI。他在池中的份额为10%;池中总共持有10 ETH和20,000 DAI——相当于40,000 DAI。池的余额没有改变,因为没有新的流动性提供者。假设ETH的市场价格变为4000 DAI。然后套利交易者利用了这一情况,将池中的比例变为5 ETH和20,000 DAI。同时,池的总大小保持原来的40,000 DAI。此时,流动性提供者决定从池中提取他的份额——它是10%。鉴于当前的池余额,他提取了0.5 ETH和2000 DAI,尽管最初他添加了1 ETH和2000 DAI。他的份额的初始价值为4000 DAI(1 ETH加2000 DAI)以稳定币计。提取时的资产价值为相同的4000 DAI(0.5 ETH加2000 DAI)然而,如果用户只是持有他们的1 ETH和2000 DAI,他们的资产价值将为6000 DAI。这是使用AMM-DEX时的未实现损失或收益。用户还将获得10%(与他在池中的份额成比例)的所有池佣金作为提供流动性的奖励。奖励可能会减少,例如,由于分配给开发者或项目金库用于未来发展的税收。这是一个条件性示例,说明了一个资产价格急剧上涨50%的情况,没有考虑套利交易者的许多交易和池内资产价格与中心化交易所价格对齐所需的时间,在中心化交易所中,变化是瞬间发生的。当市场“平静”时,无常损失计算中会添加变量运动,正如StarkNet开发者Peteris Erins在他的博客中描述的那样。作为这些预测计算的结果,资产价格两倍运动时的无常损失值约为5.7%。但这只是一个预测值——潜在的“损失”非常难以预测。
如何降低使用AMM交易的风险?
在使用流动性池之前,您应该计算所有可能的佣金,这些佣金将在存款和计划提取资产时支付。必须考虑资产价格向任一方向变动的可能性。一些潜在问题,如间歇性损失(IL)的风险,可以提前计算。要计算IL,您需要了解其起源的性质。您还可以使用在线提供的变量损失计算器之一。