Uniswap 的流动性
Uniswap协议的设计架构与传统数字资产交易所中的模型不同。大多数传统交易所都会维护订单簿,并用它来匹配特定资产的买家和卖家。而Uniswap利用**流动性储备**来实现协议中数字资产的交易。
交易合约的流动性储备由网络中的流动性提供者提供。这些流动性提供者将等值的 ETH 和 ERC20 代币存入特定的 ERC20 代币交易合约中。第一个向交易合约提供流动性的流动性提供者将首先在该交易合约中设定 ETH 与相应 ERC20 代币之间的汇率。流动性提供者通过存入他们认为相当于 ETH 和合约支持的 ERC20 代币来设定这个汇率。如果流动性提供者设定的汇率与更广泛的加密货币交易市场不一致,那么套利交易者就会将 ETH 和 ERC20 代币之间的汇率引导至市场认为的正确汇率。因此,后续所有流动性提供者在存入资产存入流动性时都会使用汇率。
Uniswap 还使用所谓的“流动性代币”(liquidity token),它们本身符合 ERC20 标准。这些代币可以看作是流动性提供者对交易合约贡献的代表。Uniswap 限制每个交易合约只支持一个 ERC20 代币背后的理由是鼓励流动性提供者将其流动性资产集中到一个储备中。Uniswap 通过铸造流动性代币来跟踪每个流动性提供者对总储备的相对贡献比例。流动性提供者可以在他们选择的时间销毁他们的流动性代币,以便他们可以从交易所合约中提取一定比例的 ETH 和 ERC20 代币。
流动性提供者可以选择出售或转让其流动性代币,而无需从交易所合约中移除流动性。然而,Uniswap 的流动性代币严格分配给交易所合约。Uniswap 协议没有与单一原生数字资产相关联的。流动性提供者还可以通过调用 addLiquidity() 函数将流动性存入交易合约。作为提供流动性的奖励,流动性提供者将在交易执行时获得一定比例的交易费
Uniswap 上的交易:ETH ⇄ ERC20 交易 在 Uniswap 协议中可以执行的一种交易类型是将 ETH 兑换为任何特定的 ERC20 代币。如上所述,ETH 与某个 ERC20 代币之间的汇率基于交易合约中每个资产流动性池的相对大小。汇率基于 Uniswap 的不变量:ETH 池代币池 = 不变量(不变量)。在 Uniswap 协议上执行任何交易期间,不变量(不变量)保持不变。此外,只有当交易合约中的流动性增加或减少时,不变量才会发生变化。
示例 ETH ⇄ BAT:Bob 想要发起一笔交易,将 1 ETH 兑换为 ERC20 代币 BAT。Bob 将使用 Uniswap 协议上现有的兑换合约来执行这笔交易。流动性提供者已将一定数量的 ETH 和 BAT 存入兑换合约,在本例中,假设为 10 ETH 和 500 BAT。底层不变量设置为:ETH 池 *BAT 池 = 不变量(不变),即:
ETH 池 = 10 BAT
池 = 500
不变量 = 10 * 500 = 5,000
Bob 通过向交易合约的 ETH 池发送 1 ETH 来发起交易,并在此基础上扣除 0.3% 作为流动性提供者的费用。剩余的 0.997 ETH 被添加到 ETH 池中。然后,用不变量除以新的总 ETH 来确定 BAT 池的最新大小。然后将剩余的 BAT 代币发送给买方,在本例中是 Bob。即:
ETH 池 = 10 BAT
池 = 500
不变量 = 10 * 500 = 5,000 Bob
通过向交易合约的 ETH 池发送 1 ETH 来发起交易,并在此基础上扣除 0.3% 作为流动性提供者的费用。剩余的 0.997 ETH 被添加到 ETH 池中。然后,用不变量除以新的总 ETH 来确定 BAT 池的最新大小。然后将剩余的 BAT 代币发送给买方,在本例中为 Bob。即:
Bob 发送:1 ETH
手续费:0.003 ETH
ETH 池 = 10 + (1 - 0.003) = 10.997
BAT 池 = 5000/10.997 = 454.67
Bob 收到:500 – 454.67 = 45.33 BAT
支付给流动性提供者的手续费是在 Bob 发起交易时扣除的,现在这笔手续费被添加到流动性池中(这意味着不变量会增加)。这充当了对流动性提供者的支付,当他们从市场上移除流动性贡献时,他们可以收取这笔费用。由于这笔费用是在价格计算后重新添加的,因此随着交易所合约上每笔交易的执行,不变量会逐渐增加,使得将流动性存入交易所合约这一行为对于流动性提供者来说是一项有利可图的活动。此时:
ETH 池 = 10.997 + 0.003 = 11
BAT 池 = 454.67 新
不变量 = 5,001.37
在这笔交易中,Bob以 45.33 BAT/ETH 的汇率获得 BAT。
输入:1 ETH
输出:45.33 BAT
汇率 = 45.33 BAT/ETH
Uniswap 交易:ERC20 ⇄ ERC20 交易
Uniswap 协议中可以执行的另一种交易类型是将一种 ERC20 代币兑换成另一种 ERC20 代币。由于 ETH 被用作所有 ERC20 代币的公共交易对,因此 Uniswap 将 ETH 作为 ERC20 与 ERC20 之间直接交易的中介资产。例如,Uniswap 可以在某个交易合约中将 BAT 代币兑换成 ETH,然后在另一个交易合约中将这部分 ETH 兑换成 OMG,所有这些都在一次交易中完成,这样任何两种 ERC20 代币之间的兑换都是可能的。
这个公式与正常市场非常相似,您购买的代币越多,购买一单位代币所需支付的边际汇率就越高。
