AMM的出现使得流动性挖矿这一玩法迅速火爆起来。传统的挖矿通过提供算力来获得奖励,而流动性挖矿是提供流动性来获取奖励。对于流动性提供者而言,通过为去中心化交易所或其他项目提供流动性,从而获得代币奖励,这种模式在DeFi中比较常见。
和中心化交易所的订单簿模型不同,AMM采用的是固定乘积的方式来计算交易池中的代币,只要流动性提供者提供的流动性足够充足,就能保证去中心化交易所的持续运转。
AMM有两个参与方,一个是流动性提供者(liquidity provider),可以理解为做市商;一种是交易者(trader)。流动性提供者会先向资金池中注入一定数量的代币,来为交易提供流动性。而交易者在兑换代币或交易的时候,会付出一定的手续费,这笔手续费就是流动性提供者的收入。
流动性挖矿项目有很多:YFI、Curve、Uniswap、SushiSwap、DODO、YAM、UMA、SUN、MDEX、Balancer等等。
我们以Uniswap为例,来看看去中心化交易所内部的原理,以及如何通过提供流动性来获取可观的收益。
Uniswap诞生于2018年,是一个完全去中心化的协议,它没有类似中心化交易所的订单簿报价系统,而是基于恒定乘积做市商模型,来保持兑换价格的合理性,并激励更多的人贡献流动性。
Uniswap的Pool资金池模块就是流动性管理,每个交易对的流动性都通过一个单独的以太坊合约来管理,我们可以先加入或创建一个资金池,然后增加或取出某个交易对的流动性。这个过程其实这就是给做市商池充、提币的过程。
如果某个交易对在已有的资金池中找不到,我们可以通过上图中下方的“+创建资金池”按钮,来创建这个交易对的资金池。这个过程称为上币。去中心化交易所对于上币的人没有要求,任何人都可以选择一个交易对,并且上币到Uniswap上。如果你是创建这个交易对的资金池的人,那么交易对的两个品种A和B的初始的量,是由你来决定的,A和B的初始价格就是你定义的两个初始量的比值。如果你的定价很不合理,那么就会有套利者进行套利交易,套利这个动作会推动价格打到合理的位置。之后加入流动性池子里的人,他们提供的两个币的量,也会按照新的比例。
这里展示了Uniswap的工作原理:
每个交易对都由一个做市池合约来管理,做市池中两种币的当前总价值永远是等值的,例如图中,资金池中有100个A和10个B,说明当前A和B的兑换价格就是1:10的关系。如果发生了交易,价格就会发生变动。流动性提供者要做的事就是根据当前做市池两种币的数量,按照这一比例的同时存入这两种币。例如图中,做市池中有100个A和10个B,那么我们需要按照10:1的比例,存入A和B,之后就可以躺着赚钱了,Uniswap会自动把手续费收入分给流动性提供者。
对于交易者来说,如果他要把A兑换成B,就需要支付10个A,并且加上千分之三的手续费。而由于滑点的存在,一般来说,交易者收到的币B会小于1个。资金池越大,对于B来说,滑点就越小。
Uniswap有一套自动的做市商机制来管理流动性、确定交易对之间的兑换价格,以及交易滑点。这套独特的机制叫做恒定做市商模型,简称CPMM(Constant Product Market Maker)。
恒定乘积做市商模型其实就是一个公式:x * y = k。假设交易对是A和B,其中x是流动性池中A的总流通量,y是B的总流通量,在不增加或减少流动性的情况下,无论交易多少次,x和y的乘积k都是不变的。
由于每次交易,都会改变做市池中A和B的数量,所以它们的价格就会发生变化。我们可以通过简单的公式推导,计算出每次的交易价格和滑点影响:
我们还是用x,y分别表示资金池中A和B的数量,k是x和y的乘积,A/B的初始价格是y/x。假设发生了一笔交易,交易者花了x个A,买了y个B,那么资金池中新的币量是x + x个A和y - y个B,并且根据乘积不变性,(x + x) * (y - y) = k,这笔交易的价格就是y / x,并且当前最新的价格是(y - y) / (x + x)。根据这个等式,我们就很容易推导出y的计算公式。y就是指交易者花费x个A,能够换取多少个B。
由于恒定做市商模型的计算规则,流动性提供者并不是稳赚不赔的,会存在“无常损失”。无常损失简单来说是指在AMM中持有代币和在你自己的钱包中持有代币之间的价