# DeFi概念介绍(二)——去中心化交易所DEX与自动做市商AMM

By [berwinYes](https://paragraph.com/@coolberwin) · 2022-08-09

---

如果说区块链技术出现以来，真正带来行业变革的，一定是区块链技术与金融的结合——DeFi出现。而DeFi的基石，则是**去中心化交易所DEX**(Decentralized Exchanges)。与之相对的则是传统的中心化交易所CEX(centralized Exchanges)。

1、DEX 与 CEX
===========

### CEX

CEX顾名思义，是由平台负责维护交易系统、用户账户、订单，以及上文提及的交易可靠性担保，所以这一类交易所又被称为**中心化交易所**。

采用**订单簿**的交易模式，实时收集市场上还未被撮合的买单和卖单，这是数字交易平台的基本模式。交易平台的内部系统会通过订单簿来撮合买单和卖单。

可以类比于我们所熟知的淘宝，现在比较出名的CEX有币安、CoinBase等等。

值得注意的是CEX你的所有trade是不上链的，用户所有数据存储在交易所的数据库中，只有转出到钱包时才会有链上资产转移。

### DEX

DEX而是一个基于区块链的交易所，它不将用户资金和个人数据存储在服务器上，而是通过授权智能合约来匹配希望买卖数字资产的买家和卖家。在匹配引擎的帮助下，这种交易直接发生在参与者(点对点)之间。简而言之，没有中间商。所有功能均由智能合约完成，功能全部去中心化。

当匹配完成后，双方的交易信息都会上链，上链成功后，将会由系统通知用户该笔订单已完成的信息。

![](https://storage.googleapis.com/papyrus_images/cc785e1aa6a31c4031f7a03155f3c4698a1a3d296e576cf9e4fcba7722c65d6c.png)

### 总结

DEX的优势：

*   安全性。DEX 通常通过分散的服务器网络进行大量交易对的低成本交易，降低了黑客攻击的风险。
    
*   匿名性。没有身份验证程序，没有 KYC，也没有上传到服务器的个人文件。
    

劣势：

*   效率低。由于区块链分布式记账特性，完成交易的速度上十分缓慢，全世界最大的公链ETH每秒的TPS只有15笔。
    
*   相较于CEX功能有限。
    

CEX 的优势:

*   交易速度快
    

劣势：

*   不安全。中心化后平台作恶。 交易所跑路情况屡见不鲜，A网、虎符、中币等等。
    

2、AMM
=====

如果说DEX是DeFi的基石，那么AMM则是DEX的灵魂，驱动DEX的核心。AMM最早被Uniswap提出并应用，已经迭代了多个版本。

AMM(Automated Market Makers) 自动做市商。顾名思义，自动的为交易用户提供交易，并且兑换价格可以跟随当前市场价格。并且自动运行，无需第三方维护。都是用智能合约进行实现，无任何人工干预。

传统的CEX交易，你想买TokenA，必须存在卖方，才可完成交易，这就是所谓的订单薄交易。但是在DEX中，AMM 的作用下，传统的订单簿被**流动性池**（Liquidity Pool）所取代；买家、卖家、做市商不复存在，取而代之的是**流动性提供者、交易者和套利者**。由于是全自动地撮合交易，交易者也失去了报价的权力，只能接受 AMM 所提供地价格。

**交易者**

交易者可以与流动性池发生交易，向池子中投入一种资产，以换取另一种资产，这个交换的过程需要支付交易手续费。

**套利者**

套利者负责修正交易价格，以保证流动性池中的资产交易价和市场价一致，并从中套利，他们会给流动性提供者带来无常损失（Impermanent Loss）。

**流动性池（Liquidity Pool）和 流动性提供者（Liquidity Provider）**

流动性池可以理解为一个大池子，里面有许多的加密货币资产，一种DEX中提供的交易对拥有一个LP池，例如在BSC中BNB/BUSD交易对有 BNB/BUSD LP池。BNB/USDT 有BNB/USDT LP池，不同池子的深浅取决于流动性提供者所提供的币总价值，并不统一。

流动性提供者将自己的资产注入到流动性池中，为交易提供流动性，通过交易手续费获取一定收益。任何人都可以成为流动性提供者，只要他向池子里注入了资金。流动性提供者将资金注入流动池又被成为流动性挖矿，提供者又被称为矿工。这个会在接下来的无偿损失概念中进行详细介绍。

在这个特殊的自动做市商(AMM)机制中，存入的Token对需要由两种等值代币构成。流动性提供者必须按照当前Token对的价格进行注入，如当前注入BNB/BUSD LP池,假设此时的1BNB可以兑换10BUSD，那么注入LP中的则是 K个BNB和K\*10个BUSD。

值得注意的是，流动性添加者通过质押Token对，也会获得流动性提供者代币（Liquidity Providers Token），也就是我们经常说的 LP 代币。作为凭证，获得流动性挖矿奖励。

**运行机制**

值的注意的是，当TokenA/TokenB 的 LP池中的资金为0时，将无法在当前DEX中进行TokenA、TokenB互换的交易。

流动性池解决了能否进行交易的问题，交易中Token价格问题则是交给了恒定乘积做市商 CPMM 来解决。

### CPMM的核心公式

提出一种基于反比例函数作为价格曲线的LP池模式，

    K = A * B
    

其中A和 B 分别是当前池中TokenA和TokenB的数量，K是一个由初始TokenA、TokenB数量决定常数。

如果没有流动性注入LP池，K不会随着交易的变化而变化。

![](https://storage.googleapis.com/papyrus_images/b25566e0f91cc17915647f43a60e10c3192c37dd34b4eccceddddb3e8def0b89.png)

恒定乘积做市：有自己的定价机制，价格由供需关系决定，流动性不会被耗尽。

当K确定时，交易的发生时，对应TokenA和TokenB的价格如何计算呢？

我们假设当前1BNB=100BUSD,此时A向流动性资金池中存入了1枚BNB和100枚BUSD。

    此时K = 100*1 = 100
    

如果B想利用该交易对，用20BUSD换取BNB，他可以换取多少BNB呢？

    利用K = A*B => 100 = (100+20)*(1-x)=> x = 0.166 
    

则B可以得到0.166个bnb。

此时根据池中的代币对等价值原则。

    得到  120BUSD = 0.833BNB => 1BNB = 144BUSD
    

在AMM模型规则下，当前DEX交易对下 BNB涨幅 44BUSD。从而高于市场价格，套利者出现开始套利。

**池子越浅，每次交易对池中Token的价格影响越大。**

假设此时的池子中有100个BNB和1w个BUSD。汇率依旧是1BNB=100BUSD

则B可以用100BUSD换到

    100*10000= (10000+20)*(100-x) => x = 0.1996
    

此时此LP中BNB价格为：

    10020*1 = 99.8*P  => P = 100.4 
    

汇率为：1BNB = 100.4BUSD

汇率波动微乎其微。

### 总结：

*   优势：
    
    当交易量显著小于资金池量的时候，基本可以实现以市场价的双向交易，而且兑换价格能够自动跟踪市场价格。
    
    部署完成后无须额外人为维护。可以注意到，在新增或减少资金池量时，需要对k=a\*b值进行改变，除此情况下，k是恒定不变的。而且这一过程也是可以较容易实现自动化的，不需要调动别的价格接口，可以完全独立运行。
    
    AMM利用恒定乘积做市商CPMM的价格曲线非常简单，计算过程也不复杂，早期Uniswap所部署的AMM仅使用大约300行代码。
    
*   劣势
    
    会给流动性提供者带来无偿损失，需要通过其他手段进行补偿
    

那么什么是无偿损失和滑点呢？ 我们将在下一篇文章中进行讲解。

这里是coolberwin的Mirror，创作不易，希望看完顺手关注我的Twitter，感激不尽。

---

*Originally published on [berwinYes](https://paragraph.com/@coolberwin/defi-dex-amm)*
