在 Uniswap V1/V2 上提供流动性

摒弃了传统的订单簿(CLOB)模式来撮合交易, Uniswap 率先采用了自动做市商(AMM)的全新做市机制,这种模式利用流动性池实现做市过程的自动化。 其后在许多其他的去中心化交易所也采用了 AMM 的机制,使得任何人都能成为做市商。 此外,在这种模式下,通过流动性池子产生的的所有收益都会与流动性提供者分享。 于此相对的,在中心化的订单簿机制下,流动性的提供是竞争巨大的,且越强大的做市商往往拥有时间或价格上的有利条件。

只要提供两种不同的资产即可向 AMM 的池子提供流动性 (以 ETH 和 DAI举例),进而实现做市和撮合交易过程的自动化。 资产的价格按算法确定,该算法往往反映的是池子中两种资产的比例。 交易是通过与智能合约交互并进行的,智能合约就像是池子中代币的的监管人。 Uniswap 最有趣的特点之一是,任何人都可以使用已有的合约在以太坊上创建一个流动性池子(LP 代币在 Uniswap v1上是 ETH-ERC-20 代币,在 Uniswap v2 上 ERC-20-ERC-20 代币)。

需要流动资金的交易者将根据预定的函数(x*y=k)供应其中一种资产(ETH),并将另一种资产(DAI)移除,从而该改变池子中代币的余额情况。 当池子中代币余额发生变化时,价格也会和初始的价格存在差异,交易者则会遭遇滑点问题。 因此,只有当池子拥有足够多的流动性时,才能确保交易者在币币交换时能够尽量减少滑点。 提供的流动性越大池子越深,交易对价格的影响就越小。

此外,套利是 AMM 机制中的一个重要组成部分,因为如果有某一市场的价格与实际市场价格相存在差异,那么套利者则会进入并开始套利,从而调整池子的大小,并使代币的比例(因而使价格)恢复平衡。

例如, ETH 和 DAI 的持有人可以通过调用 add liquidity 函数向 Uniswap 上的 ETH-DAI 市场提供其资产(注入流动性),以用于交易。 由于流动资金提供者必须按当前的汇率存入资产,Uniswap 智能合约将使用 ETH 的数量来确定需要交存的另一种 ERC20 代币的数量。 这个数量往往是存款的总值的 50%。

向流动性池提供流动性的做市商将在产生的所有交易的交易手续费中获得分润。 每当池子中的资产被交易或兑换,交易者都会被收取 30 个基点(0.3%)的手续费,并累计分润给 LPs。 收取的费用与智能合约持有的这个特定交易对应的 LP 储备金份额成比例。 为了代表他们在池中所占的流动性份额,流动性代币(LP token)将被铸造并发送给每个活跃的流动性提供者。 这些流动性代币可以随时兑换,赚取的手续费用份额与 ETH 和 ERC-20 代币赚取的相当。 由于流动性代币也可以像 ERC-20 代币一样交易,因此其可以在 Uniswap 以外出售或转让。

示例

比如现在有一个新的交易对或者说新的池子被添加到 Uniswap 中。 首个创建池子的 LP 可以通过存入同等数量的 ETH 和 ERC-20 代币来有效地确定汇率。 如果汇率与外部市场的汇率差异较大,套利者就可以进入交易市场并通过套利使价格变得平衡。 以后加入的所有其他流动性提供者将使用当时的汇率相应的提供 ETH 和 ERC-20 代币。

假如 ETH-DAI 最初的 LP 供应 10ETH 和 40,000DAI。 一旦我们将这些值在乘积常数 AMM 方程 x*y = k 中设置好, 我们便得到 x=10 ETH,y=40 DAI 和 K=400 000。 LP 将会沿下图中显示的整个曲线提供流动性以自动做市。

如果交易者想用 AMM 作为对手方出售 1 ETH,他们将支付 0.3% 的费用进行兑换。 不论哪种代币被卖出,手续费都是同样水平的收取,因此在这个例子中需要收取相当于 0.003 ETH 的手续费。 一旦手续费用扣除完毕这笔交易便会依据 k 值的大小强制执行,交易者会收到 3988 DAI 并向流动性池子添加进 0.997 个 ETH。

交易完成后,扣除的费用将被添加到流动性池子中,如 x1=11 ETH。 池子的 DAI 数量也会下降,金额等于付给交易者的 3988,最新的余额为 y1 = 36012。 相应地,k1 的值也跟着变化为 396,132。 因此,k 的值会随着每一笔交易而发生变化,而这反过来又影响到资产的相对价格。 现在,ETH-DAI 的流动性池子的提供者拥有了更多的 ETH 和更少的 DAI。 任何后续的交易都将基于新的 k1 曲线进行。

上面的例子假定只有一个 LP,但随着其他的流动性提供者加入,它们必须按照现有的两种代币的比例添加 ETH 和 DAI,以免造成价格变化。 如果突然有大量的流动性被添加或被移除,从而大大改变了价格水平,那么就会出现有利可图的套利机会。

继续使用上面的例子,如果另一个 LP 额外添加了 40000 的 DAI(但没有添加相应的 ETH),它将使 DAI 的相对价格降低。 k 值也将刷新并大幅上涨,变成(40000+36000)*11.003 = 836 228,以导致 ETH 价格急剧上涨。 然而,出现这种情况时,套利者便会介入通过卖出价格突然上涨的 ETH 以稳定 ETH 的价格,并使 k 值再次回到近 400000的水平,使其与外部市场价格重新接轨。

removeLiquidity 功能可以被 LP 用来从池中移除他们的代币, 移除时的代币比例按实时情况计算并退还。 流动性代币(LP-Token)将被烧毁,流动性提供者则收回他们原先提供的两种资产以及按比例赚取的手续费用。

因此,流动性提供者在此在发挥着类似做市商(maker)的作用,他们使交易方可以完成一笔 交易并因此赚取部分手续费用。 即使该市场价格出现偏差,由于套利者的存在使得价格总会回归到与外部市场同一水平,因此流动性提供者仍然可以赚取费用。 然而,如果代币的价值永久性地发生变化,流动性提供者则会面临巨大的潜在损失。

例如,如果交易者不断从 ETH-DAI 池购买 ETH,ETH 的储备终将被耗尽,LP 最终将留下很少的 ETH 和更多的 DAI。 在这种情况下, 流动性提供者则可能面临 无常损失 ,即当流动性提供者想要撤回其流动性资产并实现其从收费中获得的收益时,发现本金加收益少于初始的资金投入。

好了,现在你应该对流动性提供者在去中心化交易所 Uniswap 的前两个版本中所扮演的角色有一个深入的了解了。 在后续的文章中,我们将一起了解在 Uniswap v3 中流动性提供者所扮演的角色和起到的作用有何不同,并向您介绍集中流动性的概念。

--

--