# Web3学习笔记003：一文理解AMM —— Uniswap万亿美金交易量的起点


By [nobodyjack.eth](https://paragraph.com/@nobodyjack-eth) · 2022-08-13

---

前言
--

区块链上有成千上万的代币，DEX（去中心化交易所）让你可以随时交易不同的代币，而无需中介来促进资金的转移和托管。

Uniswap无疑是DEX中最成功的项目之一，其累计交易量已经突破1万亿美金，收入在前几周曾短暂的超过以太坊。

![](https://storage.googleapis.com/papyrus_images/ec8435aaeee5dbebe096c82724bfbec4fe994f4adab4ecabb6a9b44f1499094c.jpg)

为什么Uniswap可以发展如此成功呢，其一切起源要从AMM说起。那么，AMM又是什么呢？究竟如何运作的呢？又有什么风险呢？如有困惑，请继续阅读我整理的学习笔记

> _考古：Uniswap并非在以太坊运行最早的AMM，Bancor 才是第一个在以太坊上运行的 AMM，然而Bancor执着于为BNT代币赋能，所有token都必须与BNT配对，不能进行无许可的创建流动性资金池，严重限制了流动性，因此很好的捕获长尾效应。而 Uniswap 实现了一个简单的AMM，没有额外的附加，足够简单，获得了巨大的成功，AMM 领域也真正开始起飞。_

**我也是小白，如有错误🙅‍♂️ ，概不负责。如果您是大佬，请不要走🙏，欢迎批阅指正🙅**

AMM是什么？
-------

三句话说明：

*   AMM即Automated Market Makers（自动化做市商），是一种去中心化交易所（DEX）。
    
*   你可以将它理解为一种“代币机器人”，通过算法公式对交易的资产报价，让交易者可以轻松买卖加密资产。
    
*   用户无需像订单簿那样等待交易对手（挂单方、吃单方）参与，而是只需要与AMM交易。
    

话不多说，（关门）放丑图一张：

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

如果还不明白，那我也讲不清楚啦，放弃😂👋👋👋

虽然存在其他类型的DEX ，但由于AMM原理简单、使用便捷，它们可以实现即时流动性、民主化获得流动性提供，可以让任何代币创建无许可的市场，但基于 AMM 的 DEX 已然成为最流行的，为各种数字代币提供了深度流动性。 

AMM如何运作？
--------

AMM有许多种类型，如恒积做市商、恒和做市商、恒定平均值做市商，本文将以Uniswap采用的恒定乘积做市商作为分析对象。

### 1）AMM的基础：流动性资金池

AMM不需要交易对手，也没有任何订单簿，AMM依靠的是流动性资金池。

流动性资金池(Liquidity Pool )可以看作是可交易的代币池，交易者通过AMM与池子交易。

我们把将资产存入池中的用户，称为流动性提供者(LP，Liquidity Providers)。他们根据每个AMM的预定代币权重（在Uniswap中--每个代币50%）将其代币存入流动性池。LP向池子中提供资金后，可以从他们的资金中获得收益，这些收益来自于向在DEX上交易的用户收取的交易费。任何人都可以成为LP，只要将他们的资金存入对应的交易对池子就可通过AMM自动做市。

老规矩，祭一张官方神图：

![](https://storage.googleapis.com/papyrus_images/32e22b22d8c4352f3fc5b4947b9568b2241e72722efb8ebce19b3399a8673265.jpg)

你想把ETH换成DAI，你将在ETH/DAI流动性池上进行交易，方法是加入ETH，并从流动性池中取出通过算法确定数量的DAI。

流动性资金池是AMM的基础，流动性对于 AMM 的正常运作至关重要，如果 AMM 没有足够的流动性池，那么交易者在AMM 上买卖资产时，可能会对价格产生巨大影响，导致资金效率低下。

### 2）AMM如何定价？

我们来看看资产价格是如何通过算法公式确定的。它基于一个简单的公式：

**x \* y  =  k**

*   其中 x = 一种代币的数量
    
*   其中 y = 第二种代币的数量
    
*   其中 k = 一个不会改变的固定常量（前提是没有提供者向）
    

我们来看个简单的栗子🌰，假设有一个ETH－USDC池子，第一个流动性提供者放进去了a个ETH和b个USDC。

**初始：**

*   x = a
    
*   y = b
    
*   k = x\*y = ab
    

a个ETH与b个USDC等值,可得此时：ETH\_Price =b/a USDC

**交易者进行交易：**

在K保持不变情况下（没有LP添加或者撤出流动性资金），交易者想用c个USDC换ETH。他会以什么样的价格拿到多少ETH呢？

假设为拿到d个ETH，根据恒积公式:

( x-d)\*(y+c) =( a-  d)\*(b+c)= k = ab

可得出：d = xc/(y+c) = ac/(b+c)

ETH交易价格：ETH\_Price’ =c/d = ETH\_Price + c/x =  ETH\_Price + c/a

**交易后：**

新的ETH价格：ETH\_Price’’ =  (y+c)/(x-d)  = (a+c)/(x-d)

老规矩，祭图一张，下图用一个栗子🌰帮助你理解：

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

AMM风险1：价格滑点(Price Slippage)
---------------------------

价格滑点指的是交易的预期价格和交易执行价格之间的差额

再看上面的栗子🌰，交易者T想用c个USDC换ETH，ETH交易价格：ETH\_Price’ = ETH\_Price + c/x

我们会发现ETH产了价差 ：ETH\_Price’ -  ETH\_Price = c/x，这个价差就是我们经常说的价格滑点

价格滑点其实是由于自己的交易产生的😂；交易者的交易数量，对交易价格影响越大；x越大，也就是流动资金池越大，对交易价格影响越小。

在Uniswap，你可以通过交易设置来设置你的滑点容忍度，Uniswap默认设置为0.5%：

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

AMM风险2：无常损失(IL, Impermanent Loss)
---------------------------------

### 1）什么是无常损失？

简单地说，无常损失是指提供者在钱包中持有代币与将资金存入流动性资产池的代币价值差价。

为什么是无常？无常损失（ Impermanent Loss）这个名字是具有误导性的，其意思是只要 AMM 中的代币回到你进入 AMM 时的价格，损失就消失了，这只是暂时损失。因为在你将你的代币从流动性池中移除之前，损失是不会实现的。这就跟套牢时，说“没卖就不是亏损，只是暂时亏损 Impermanent Loss”是一样的😂

根据定义，我们可以得出无常损失的计算公式：

**IL = Value\_HODL - Value\_Pool**

**为了方便理解，举一个栗子：**

假设你在Uniswap上创建了一个ETH/USDC池，向该池提供10,000 USDC和5 ETH。

*   1ETH的价格= 2,000 USDC
    
*   池子由5 ETH和10,000 USDC组成。
    
*   池子的流动性(x \* y = k) → 5 \*10,000 = 50,000
    

假设ETH的价格翻5倍到10,000 USDC（至少我是相信的 😄😄）

*   池子流动性保持不变为50,000
    
*   新的资金池比例将变成2.2360 ETH和22360.6798 USDC
    

在1ETH=2,000DAI时，原始资本（5ETH和10,000DAI）价值为20,000DAI，Value\_Pool = Value\_HODL

在1ETH=4,000DAI时

*   如果你将代币投入流动性资金池,你的代币持仓及价值为：Value\_Pool =  (2.2360 ETH \* 10,000 USDC) +  22360.6798  USDC  = 44720.6798
    
*   如果你钱包在持有代币，其价值：Value\_HODL = (5 ETH \* 10,000 USDC) + 10,000 USDC = 60,000 USDC
    
*   你的无常损失是 60,000 -  44,720.6798  =  15,279.3202 USDC
    

### 2)为什么会有无常损失

在一般的中心化交易所(CEX)中，无论要买或卖都必须要有对手盘才能成交，然而在AMM机制的去中心化交易所 (DEX) 中则不用，流动性提供者 (Liquidity Provider) 会自动同时成为买方及卖方，一旦有人发起交易，价格就会随之变化，连同改变池内的持仓。

作为流动性提供者，当价格下跌时，不仅本金在亏损，同时还会被强迫加仓，越亏越多；反之价格上涨时被强迫减仓，少赚一些。总之，就是亏的更多，赚的更少😂

AMM风险3：三明治攻击（sandwich）
----------------------

由于在AMM上发出的订单被广播到区块链上，所有人都可以看到，任何人都可以监视区块链，以挑选合适的订单，并通过下更高的交易费用来使自己的订单比目标的订单更快地被矿工执行，从而使其领先交易，进行这种无风险套利的人为这种行为起了个形象的名字："三明治攻击"。

简单来说，就是三个步骤：

*   攻击者抢在交易者前面，用更高的交易费在AMM完成一笔相同数量代币、方向的交易，导致代币价格短时上涨
    
*   然后，交易者将以更高价格进行交易
    
*   最后，攻击者再将售出之前购买的代币，完成套利
    

祭一张图，该图是在uniswap中发生的一次典型“三明治攻击”

![](https://storage.googleapis.com/papyrus_images/a102fdcd67bda9d473f2c24833cb48d6bb737542771aa2d22f01cb93b32ffecd.jpg)

推荐一个MEV套利监控的网站：[https://eigenphi.io/ethereum/sandwich](https://eigenphi.io/ethereum/sandwich) ，有兴趣的可以研究下😄

总结
--

AMM让任何代币都可以无许可的进创建流动性资金池，为大量长尾代币一个交易场所，无许可的可组合性更是为加密世界带来了大量复杂和创新的金融产品。Uniswap正是该长尾效应的最大受益者，交易量率先突破1万亿美金，俨然已成为一个超级DEFI 协议和应用。不过AMM与传统DEX相比较来说，还是有一定局限性，仍有许多需要问题待解决。但我坚信AMM的未来将融入更多创新，让所有用户可以享受更低廉的费用、更好的交易体验以及更高的流动性。

### 参考

*   How to DeFi: Advanced
    
*   [What Are Automated Market Makers (AMMs)?](https://blog.chain.link/automated-market-maker-amm/)   
    
*   [How Uniswap works](https://docs.uniswap.org/protocol/V2/concepts/protocol-overview/how-uniswap-works)   
    
*   [Uniswap: A Good Deal for Liquidity Providers?](https://pintail.medium.com/uniswap-a-good-deal-for-liquidity-providers-104c0b6816f2)   
    
*   [Beginner’s Guide to Impermanent Loss](https://blog.bancor.network/beginners-guide-to-getting-rekt-by-impermanent-loss-7c9510cb2f22)    
    
*   [Understanding Automated Market-Makers, Part 1:Price Impact](https://research.paradigm.xyz/amm-price-impact)
    

  

### 如果你觉得对你有用，请关注我

**Mirror:** 

[https://mirror.xyz/0x83BFFEe57cE413f846d54bb8d7A55b4F6d475F8E](https://mirror.xyz/0x83BFFEe57cE413f846d54bb8d7A55b4F6d475F8E)

**Twitter：**

[https://twitter.com/ethcrap](https://twitter.com/ethcrap)

**Medium：**

[https://medium.com/@nobodyjack2050](https://medium.com/@nobodyjack2050)

---

*Originally published on [nobodyjack.eth](https://paragraph.com/@nobodyjack-eth/web3-003-amm-uniswap)*
