Uniswap 简介

admin
admin 2021年08月07日
  • 在其它设备中阅读本文章

Uniswap 是 DeFi 中最著名的协议之一,Uniswap 本质是一个自动化做市商(AMM),它舍弃了传统订单薄的撮合方式,采用流动池加恒定乘积公式算法 (x×y=k) 为不同加密资产提供即时报价和兑换服务。

一、定义

白皮书中的定义:

Uniswap is a protocol for automated token exchange on Ethereum. It is designed around ease-of-use, gas efficiency, censorship resistance, and zero rent extraction.

Uniswap 是一个基于以太坊的自动代币交换协议,它的设计目标是:易用性、gas 高利用率、抗审查性和零抽租。

  • ease-of-use(易用性):Token A 换 Token B,在 Uniswap 也只要发出一笔交易就能完成兑换,在其它交易所中可能需要发两笔交易:第一笔将 Token A 换成某种媒介货币,如 ETH, DAI 等,然后再发第二笔交易换成 Token B。
  • gas efficiency(gas 高利用率):在 Uniswap 上消耗的 gas 量是以太坊上的几家主流去中化交易所中最低的,也就代表在 Uniswap 交易要付的矿工费最少。
  • censorship resistance(抗审查性):抗审查性体现在 Uniswap 上架新 Token 没有门槛,任何人都能在 Uniswap 上架任何 Token。这在去中心交易所中很少见,虽然大多数的去中心化交易所不会像中心化交易所那样向你收取上币费,但还是需要提交上币申请,通过审查后运营团队才会让你的 Token 可以在他们的交易所上交易。
  • zero rent extraction(零抽租): 在 Uniswap 协议设计中,开发团队不会从交易中抽取费用,交易中的所有费用都归还给流动性提供者。
KyberSwap 上币规则:https://developer.kyber.network/docs/Reserves-ListingProcess/
EtherDelta 上币规则:https://steemit.com/cryptocurrency/@mindseye69/new-etherdelta-coin-listing-rules
IDEX 上币规则:https://medium.com/@forrestwhaling/idex-token-listing-guidelines-eae00785fdd2
Uniswap 上币规则:https://uniswap.org/docs/v1/frontend-integration/token-listing/

二、自动化做市商(AMM)

传统的交易所有一个订单薄 (Order Book),订单薄上记录着买卖方向,数量和出价,交易所负责对买卖双方进行配对,一旦订单薄中最高价格低于或等于最低价格,就会促成交易,同时会产生一个新的成交价,传统交易所有以下特点:

  • 市场上必须要有用户进行挂单,要有一定量的订单(市场流动)。
  • 订单必须重叠才能成交,即买价高于或等于卖价。
  • 需要将资产存储在交易所。

在订单薄模型市场中,买家期望用最低的价格买到想要的资产,而卖家则是期望用最高价格卖出同一项资产,如果交易要成立,买卖双方必须要在价格上达成共识,一是买家提高出价,二是卖家降低出价,如果双方都不要改变出价,这时候就要依靠做市商的参与,简单来说,做市商是一个促进交易的实体,它会在买卖两个方向上挂单,让想要交易的参与方只要跟做市商的订单撮合就能完成交易,而不需要等待对手方出现才能交易,极大的提高了市场的流动性。
Uniswap 部署在以太坊上,而以太坊每秒可以出来 15 笔左右的交易,这对于订单薄交易所来不可行,主要原因是:“订单薄模型依赖一个或多个外部做市商对某项资产一直不断的做市,而以太坊的 TPS 过低不支持做市商高频的交易,如果缺少了做市商,那么交易所的流动性立刻会降低,对于用户来说这样的交易所体验很差。”
Uniswap 采用流动池加恒定乘法公式这种自动化做市商(AMM)模式实现了资产的交换,自动化做市商模式方式不需要买卖双方进行挂单,也不要买卖双方的订单重叠,可以进行自由买卖。

  • 流动池:使用流动池来提供买卖双方交易,做市商只要把资金放入流动池即可
  • 恒定乘法公式:按照流动池中 Token 的数量,自动计算买卖价格

流动池
流动池就是锁定在智能合约中所有的代币以及资金的总称,流动是资金转为代币,或代币转为资金的意思。
一个完整的流动池分为 2 个部份,分别表示不同的货币,成为一个交易对,在 Uniswap V1 中就是 ETH 及 ERC20 代币,在 Uniswap V2 中是支持不同 ERC20 代币直接交换,所以在 Uniswap V2 中的流动池可以允许两边是不相同的 ERC20 代币,其中 ETH 会自动转换成以 WETH 代币。
Uniswap 将所有做市商的 ERC20 代币 A 和 B 放到一个流动池中。如果有用户要买 A 代币,就从流动池将 A 代币转给用户,同时将用户支付的 B 代币添加到流动池,然后重新计算流动池中的价格,等待下次交易。
Uniswap 是无法自己变出钱来,因此需要依赖外部资金向合约中提供流动性,向 Uniswap 流动池中提供流动性的用户被称为流动性提供者,当流动性提供者向 Uniswap 中注入流动性的时候,Uniswap 会铸造出一个流动性代币 (LP),铸出 LP 代币数量是与用户注入的资金所占流动池中的资金比例相关, 动性提供者可以选择在任何时间销毁自己持有的流动性代币。为了鼓励用于向 Uniswap 的流动池中提供更多的流动性,Uniswap 会从每笔交易总额中抽取 0.3% 当成交易手续费,并将手续费全额交给那些将注资金到 Uniswap 资金池提供流动性的流动性提供者。

恒定乘积公式
假设在 Uniswap 中存在一个 ETH-DAI 交易对的流动池,用户在使用 DAI 与 ETH 兑换时需要一个方法来决定交易价格。
Uniswap 定价模型非常简洁,它的核心思想是一个恒定乘积公式 x×y=k
。其中 x 和 y 分别代表流动池中两种资产的数量,k 是两种资产数量的乘积。

假设乘积 k 是一个固定不变的常量,当用户使用 x 资产从流动池中兑换 y 资产时,流动池中 x 资产的数量会增加,y 资产的数量会减少。由于 k 是恒定的,所以当 x 增长ΔX 时,需要将 y 减少ΔY 才能保持等式的恒定。

(x+ΔX)×(y−ΔY)=k

向流动池中注入的ΔX 越多,可以从流动池中取出的ΔY 也会越多,但是ΔY 只会不断地逼近流动池中现有的代币数量,并不会超过,也就是说你永远无法一次性买断流动池中所有的。可以看出,恒等乘积公式可以提供无限的流动性,只要你想买就一定可以买到。

流动池币价
当流动池中的价格与外部市场价格不一致时就会有套利者出现,套利者监控全球各家交易所的价格,一旦发现两家交易所存在价差,就会同时在两边低买高卖赚取中间差价。由于套利者的存在,才使得 Uniswap 币价不会与全球市场脱节。

  • Uniswap 中的价格高于外部市场时,套利者从外部市场低价买入,然后高价卖给 Uniswap
  • Uniswap 中的价格低于外部市场时,套利者从 Uniswap 低价买入,然后高价卖给外部市场

流动池收益与风险
在 Uniswap 中流动性提供者的收益主要来自于交易抽成,Uniswap 会从每笔交易中抽取 0.3% 的手续费,并将手续费按流动性提供者所占流动池的比例分配给流动性提供者。

三、总结

优点

  • 完全去中心化,不依赖第三方,任何人都可以基于 uniswap 构建自己的应用
  • 可以自由地创建任何 ERC20 交易对
  • 与其他去中心化交易所相比 gas 费用更低
  • 任何人都可以向 uniswap 流动池中提供流动性,人人都可以是做市商

缺点

  • 需要依赖套利者去平衡 uniswap 与外部交易所之间的汇率
  • 对大户不友好,进行大额的交易会造成很大的滑点