# 第3章：去中心化交易所

无论你是想进行简单的互换还是积极的交易，你都需要交易所的服务。理想情况下，交易所必须具有低延迟和深层次的流动性，这样你就能获得最佳的执行价格，不会受到价格滑点的影响。

从历史上看，集中式交易所（CEXs）提供了更好的流动性，并促进了大多数大型交易。然而，他们有几个弱点 - 最值得注意的是集中式实体的用户不持有他们的托管资产。例如，在2020年9月，KuCoin在安全漏洞后遭受了2.81亿美元的黑客攻击。CEXs也可以在任何时候停止交易并阻止用户提取他们的资金。

在2020年和2021年，去中心化交易所（DEXs）发展迅速，已经开始与中心化的同行相抗衡。前九名的DEX-CEX比率已从2020年1月的仅0.2%提高到2020年12月的5.9%。在2020年，前九名DEXs的交易量取得了17,989%的指数增长，达到300亿美元。

![](https://tva1.sinaimg.cn/large/008i3skNgy1gs9nqhja9rj30i90c0tar.jpg)

究竟是什么让DEX之所以成为DEX？

DEX是一个平台，可以实现代币的交易和直接交换，而不需要中介机构（即中心化交易所）。你不需要经历 "了解你的客户"（KYC）流程的麻烦，也不会受到管辖范围的限制。

### DEX的类型

主要有两种DEX的类型：

**1、基于订单簿的DEXs**

订单簿是在不同价格水平上对某一特定资产的买入和卖出的订单列表。

基于订单簿的DEXs，如dYdX、Deversifi和Loopring，其操作与CEXs类似，用户可以在他们选择的限价或市场价格上设置买卖订单。主要区别在于，在CEXs中，交易的资产被保存在交易所的钱包里，而对于DEXs，交易的资产被保存在用户的钱包里。

DEXs的订单簿可以是链上或链下的。基于链上订单簿的DEXs将所有订单记录在区块链上。然而，由于高油价，这在以太坊上已经不可行了。也就是说，这在以太坊第二层解决方案（如xDai）或高吞吐量的第一层区块链（如Solana）上仍然可以做到。

基于链外订单簿的DEX有交易订单记录在区块链之外。交易订单一直在链外，直到它们被匹配，这时交易就在链上执行。虽然这种方法具有较低的延迟，但有些人可能会认为，利用这种方法的DEX被认为是半去中心的。

**2、基于流动性池的DEXs**

流动性池（Liquidity pools）是位于DEXs智能合约上的代币储备，可供用户交换代币。大多数基于流动性池的DEXs利用自动做市商（AMM），这是一种以算法方式预测资产价格的数学函数。

AMM是DeFi近年来最具创新性的发明之一。它实现了7\*24的市场时间，更高的资本可及性和效率。AMM有多种类型，不同的DEX已经实现了各种"口味"。在2020年DeFi夏季推出的大多数DEX是基于AMM的DEX，如Uniswap、SushiSwap、Curve、Balancer和Bancor。

由于许多较新的DEX是基于AMM的，我们将在本章的其余部分重点介绍几个AMM的例子。

### 自动做市商（AMM，Automated Market Makers）

在我们的《how to DeFi：初学者》一书中，我们已经介绍了Uniswap，最受欢迎的AMM。这里回顾一下AMMs的流动性池是如何运作的。

与集中式交易所不同，集中式交易所的出价和要价订单放在订单簿上，AMMs没有任何订单簿。相反，它依靠的是流动性资金池。流动性池本质上是持有两个或更多的代币的储备，这些代币存在于DEX的智能合约中，可供用户随时交易。

![](https://tva1.sinaimg.cn/large/008i3skNgy1gsaf2txq79j30vc0n20wi.jpg)

你可以把流动性池看作是你可以交易的代币池。如果你想把ETH换成DAI，你将在ETH/DAI流动性池上进行交易，方法是加入ETH，并从流动性池中取出通过算法确定的DA的I数量。

存款人，称为流动性提供者（LPs），是这些流动性池的种子。LPs根据每个AMM的预定代币权重（在Uniswap的案例中--每个代币50%）将其代币存入流动性池。

LPs在流动性池中提供资金，因为他们可以从他们的资金中获得收益，这些收益来自于向在DEX上交易的用户收取的交易费。任何人都可以成为LP，并通过将他们的资金存入智能合约来自动做市交易对。

通过AMMs，交易者可以让他们的订单得到无缝执行，而不需要像Coinbase或Binance这样的集中式交易所提供流动性的集中式做市商。相反，订单是通过智能合约自动执行的，该合约将通过算法计算交易价格，包括交易执行的任何滑点。因此，你可以认为基于订单簿的交易所遵循点对点的模式，而AMMs则遵循点对合约的模式。

现有的AMMs有哪些类型？AMMs是一种数学函数，根据流动性池对资产进行算法定价。目前，有几个AMM公式被利用来迎合不同的资产定价策略。

一些比较流行的AMM公式如下：

**I. 恒定乘积做市商公式：x \* y = k**

恒定乘积做市商公式首先由Uniswap和Bancor推广，是市场上最流行的AMM。绘制时，它是一条凸形曲线，其中x和y代表流动性池中两个代币的数量，而k代表乘积。该公式有助于根据每个代币的可用数量，为两个代币创造一个价格范围。

为了保持k不变，当x的供应增加时，y的供应必须减少，反之亦然。因此，所产生的价格本质上是不稳定的，因为交易的规模可能会影响到与池子规模有关的价格。大额交易造成的较高滑点可能会出现无常的损失。

**II. 恒定和做市商公式：x + y = k**

恒定和做市商公式在绘制时形成一条直线。它是零滑点交易的理想模型，但不幸的是，它不能提供无限的流动性。这个模型是有缺陷的，因为当报价与其他地方交易的资产的市场价格不同时，它就会出现套利机会。套利者可以耗尽流动性池中的全部储备，不再为其他交易者留下可用的流动性。这种模式不适合大多数AMM使用案例。

**III. 恒定平均值做市商公式：**![](https://tva1.sinaimg.cn/large/008i3skNgy1gsb0baf1udj30c603mq2z.jpg)

恒定平均值做市商公式，或者也被称为"价值函数"，是由Balancer创造并使之流行的。它允许流动性池中有两个以上的代币，并允许池子以超出标准50/50分布的比例添加不同的代币。这允许对池子里的不同资产进行可变的暴露，并使流动性池子里的任何资产之间的交换成为可能。

> 例如：BTC/ETH/USDT，30：30：40的比例组成一个池。 这种方式可以创建以任何币种和比例组成的一个指数池，池子会自动平衡各代币之间的比例，如：UNI/AAVE/YFI/LINK组成一个池，各占25%，任何一个币涨跌后，池子会自动平衡其中的数量，以达到按比例配置资产的目的。

**IV. 稳定交换公式：** ![](https://tva1.sinaimg.cn/large/008i3skNgy1gsb05gz63gj30o204kabk.jpg)&#x20;

该公式是恒定乘积与恒定和公式的混合体。它是由Curve Finance推广的。

当投资组合相对平衡时，交易发生在恒定和曲线上，而当不平衡时则切换到恒定乘积曲线上。这允许较低的滑点和无常损失，但只适用于具有类似价值的资产，因为所需交易范围的价格总是接近于1。例如，这对稳定币（DAI和USDC）和包装资产（wBTC和sBTC）之间的交易会很有用。

![](https://tva1.sinaimg.cn/large/008i3skNgy1gsahwg45buj311k0q6tek.jpg)

这张图显示了恒定乘积做市商（紫线虚线）与恒定和（红线）做市商，中间是Curve.fi使用的Stableswap Invariant混合曲线（蓝线）。我们可以看到，Stableswap Invariant曲线在Constant Sum曲线附近创造了更深的流动性。其结果是一条对大多数交易来说返回线性汇率的线，对较大的交易（超出范围）来说返回指数价格。

**恒定乘积AMM的价格是如何确定的？**

让我们看一下恒定乘积AMM的一个简单例子，看看资产价格是如何通过算法确定的。它的工作原理是根据资金池中每种资产的可用流动性，维持一个恒定产品公式。

为了看看它是如何通过流行的AMM工作的，我们将看看Uniswap推广的恒定乘积AMM。

值得注意的是，只有当资金池中的储备率发生变化时，AMM上的市场价格才会发生变化。因此，AMM上的资产价格可能与其他交易所不同。

> 例子：根据恒定乘积做市商公式：x \* y = k
>
> x = 储备代币&#x20;
>
> y = 储备代币

> k = 决定流动性池中代币价格的恒定总流动性乘积
>
> 比如说：截至2021年4月21日，Uniswap的DAI/ETH流动性池中有61,404,818 DAI和26,832 ETH。储备率意味着在撰写本报告时ETH的价格是61,404,818 DAI / 26,832 ETH = 2,289 DAI。

假设1个ETH现在在Uniswap上的价值是2,289DAI。但当ETH的价格在其他地方，如Balancer上降到2100DAI时，套利机会就出现了。套利者将利用价格差异，在Balancer上买入便宜的ETH，然后在Uniswap上卖出，快速获利（为简单起见，忽略了交易费用）。套利者将重复这样做，直到价格在两个交易所之间达到平衡。

### 各种自动做市商（AMMs）

**Uniswap**

&#x20;![](https://tva1.sinaimg.cn/large/008i3skNgy1gsaj74jb7rj317g0aediv.jpg)

Uniswap是以太坊上的一个去中心化的交换协议，允许直接进行代币交换而不放弃对资金的保管。要使用Uniswap，你需要做的就是把你钱包里的代币发送到Uniswap的智能合约上，然后你就会在钱包里收到你想要的代币作为回报。

Uniswap的旅程始于2018年11月，当时它推出了它的第一个迭代版本Uniswap v1。它是首批基于AMM的DEX之一，普及了恒定乘积做市商公式。

2020年5月，Uniswap将其智能合约升级为Uniswap v2，并增加了一些功能。新版本扩大了交易对，支持任何ERC-20代币。

2021年5月5日，Uniswap发布了最新的迭代版本，即Uniswap v3。在最新的迭代中，Uniswap引入了两个主要的新功能：

**1.集中的流动资金**

通过Uniswap v3，LPs可以控制他们想提供流动性的价格范围。例如，ETH/DAI流动性池的LP可以选择将其30%的资金分配到2000-3000美元的价格范围，其余70%分配到1500-1700美元的价格范围。

![](https://tva1.sinaimg.cn/large/008i3skNgy1gsajj1m4imj30ue0qqmzs.jpg)

Uniswap v3新的流动性积极管理策略为LPs带来了更高的资本效率。这方面的一个副产品是，LPs将收到非可替换代币（NFT），而不是代表其LP头寸的可替换ERC-20代币。

> NFT仓位会间接的损失自动复利和协议间引用的效率

**2.多种类型的费用等级选择**

Uniswap v3提供了三种资金池费用类型，流动性提供商可以按需选择：0.05%、0.30%、1.00%

例如，USDC/DAI交易对的价格波动性较低，可能需要支付较低的0.05%交易费。ETH/DAI交易对的价格波动较大，应收取0.30%的交易费。同时，1.00%的交易费可能更适合于更多的长尾或稀有交易对。

**SushiSwap**

&#x20;![](https://tva1.sinaimg.cn/large/008i3skNgy1gsajqq19rqj30yw0aswib.jpg)

SushiSwap于2020年8月28日由一位名为Chef Nomi的匿名开发者推出。它是Uniswap v2源代码的一个分叉，并利用了相同的恒定乘积做市商模式。在Uniswap还没有UNI代币的时候，SushiSwap引入了SUSHI代币。SushiSwap提供的诱人的挖矿奖励吸引了加密货币社区中许多人的注意。

2020年9月9日，SushiSwap对Uniswap的流动性发起了"吸血鬼攻击"，即任何人在SushiSwap上抵押他们的Uniswap LP代币，他们在Uniswap上的基础流动性将被迁移到SushiSwap。这次攻击耗尽了Uniswap一半以上的流动性，其锁定的总价值（TVL）从15.5亿美元降至4.7亿美元。同时，SushiSwap的TVL一夜之间增加到11.3亿美元。

尽管有"吸血鬼攻击"，但Uniswap一直保持着弹性，并很快恢复了对SushiSwap的TVL领先。截至2021年4月，SushiSwap现在拥有45亿美元的TVL，略低于Uniswap 103亿美元TVL的一半。

![](https://tva1.sinaimg.cn/large/008i3skNgy1gsaki7k51aj317c0ou0y7.jpg)

SushiSwap已大幅增长，现在是仅次于Uniswap的第二大DEX。截至2021年3月，Uniswap的交易量是SushiSwap的四倍，标志着Uniswap在DEX市场上的大幅领先。在2021年的前两个月，SushiSwap表现强劲，其交易量是Uniswap的45%。

自推出以来，SushiSwap已经通过提供更全面的产品系列来提升自己。它还与Yearn Finance合作（合并），Yearn Finance是一个收益耕作聚合协议，现在是Yearn Finance的AMM部门。两者之间的关键区别在于资金池费用、可用交易对和支持的区块链。

![](https://tva1.sinaimg.cn/large/008i3skNgy1gsakl8hzi5j31720cytbb.jpg)

从上表中，我们可以看到，Uniswap和SushiSwap的交易费都是0.3%。然而，在SushiSwap上，0.05%的交易费归于协议，然后分配给SUSHI代币持有人。

Uniswap目前没有向UNI代币持有人分配费用，尽管这可以通过UNI治理投票激活。截至2021年4月，与SushiSwap的LPs（0.25%）相比，Uniswap的LPs收到的收入份额更高（0.30%）。

我们可以从下图中看到，Uniswap和Sushiswap的协议收入在过去一年中都有明显增长：

![](https://tva1.sinaimg.cn/large/008i3skNgy1gsaknr6hloj31780swjx5.jpg)

Uniswap有超过2000个支持的交易对，大约是SushiSwap的五倍--这表明有更多的长尾代币在Uniswap上得到支持并进行交易。

Uniswap目前只支持以太坊的交易，计划通过Optimism转移到第二层。相比之下，SushiSwap在九个不同的区块链上运行，包括：以太坊、BSC、Polygon、Fantom、HECO、xDAI、Harmony、Avalanche和OKExChain。

**Balancer**

&#x20;![](https://tva1.sinaimg.cn/large/008i3skNgy1gsakqdszoqj30y80bs419.jpg)

除了基于AMM的DEX之外，Balancer将自己定位为一个投资组合基金管理。Balancer的资金池持有者不是为投资基金支付费用，而是从套利流动性资金池的交易者那里收取费用。这实质上创造了一个指数基金，在基金重新平衡时获得报酬，为流动性提供者增加了另一个收入来源。

与只支持两种资产的Uniswap不同，Balancer支持多资产池。资金池创建者也被允许设置从0.00001%到10%的定制费用。这种灵活性为资金池的创建提供了更多可能性。

这里有三种类型的流动性资金池：

1. 公共资金池--任何人都可以增加流动性，但资金池的参数是永久固定的。这是最无需许可的资金池。
2. 私有资金池--参数灵活。拥有人是唯一可以改变参数和增加流动性的实体。这使得资金池具有保管性和集中性。
3. 智能池 - 任何人都可以添加流动性。池子支持固定和动态参数，可以持续改变。这是最灵活的资金池。

Balancer v2支持一个池子里最多16种不同的资产，并允许创建智能池。智能池对资金管理特别有用，池子可以充当自动代币回购机。另外，它还允许池子里的闲置资产借给借贷协议，提高池子的收益率。

Balancer还推出了一种创新的初始DEX发行（IDO）方法，称为流动性引导池（LBPs）。它们是“短命”的智能池，随着时间的推移具有动态权重。代币价格被设定在一个高价位，预计在整个销售过程中会下降。鲸鱼和机器人不愿意在一开始就全部购买代币，允许以更民主的方式进行筹资。

**Curve Finance**

&#x20;![](https://tva1.sinaimg.cn/large/008i3skNgy1gsanodeqx2j310y0betdq.jpg)

Curve Finance是一个基于AMM的DEX，主要是促进价值相似的资产之间的互换。这在DeFi生态系统中是很有用的，因为有大量的包裹和合成代币，旨在跟踪基础资产的价格。Curve Finance目前支持美元稳定币、欧元稳定币、包裹/合成BTC和包裹/合成ETH资产。

例如，最大的流动性池之一是3CRV，一个由DAI、USDT和USDC组成的稳定币池。池中三种稳定币的比例是基于市场的供需关系调整的。存入一个比例较小的币，将使用户获得相对较高的币池比例。当比例向其中一个币种严重倾斜时，可以作为套利的好机会。

Curve Finance还支持Compound、Aave和Yearn Finance上的收益代币。Curve与Yearn Finance合作发布了yUSD池，由收益代币yDAI、yUSDT、yUSDC和yTUSD组成。参与这个池子的用户将有来自标的收益率代币的收益，Curve池子产生的互换费用，以及Curve Finance提供的CRV流动性挖掘奖励。这个池子的流动性提供者能够从三个来源的收益率中获得收益。

为了促进更多长尾代币的流动性，Curve引入了基础池和metapools的概念。元池是一个单一的代币池与另一个基础池，允许用户无缝交易单一代币。目前，流动性最好的基础池是3CRV池。

例如，有一个与UST（在Terra区块链上发行的美元稳定币）的metapool与3CRV基础池。用户可以交易UST和3CRV池中的三个美元稳定币。通过分离基础池和元池，Curve能够将UST的系统性风险与3CRV的流动性池分开。

元池的建立在以下方面对Curve有所帮助：

* 防止现有资金池被稀释
* 允许Curve列出非流动性资产
* 为CRV代币持有人提供更高的交易量和交易费用

**Bancor**

&#x20;![](https://tva1.sinaimg.cn/large/008i3skNgy1gsanylokb6j312k0auq6h.jpg)

2017年推出的Bancor是首批基于AMM的DEX之一。Bancor利用修改后的恒定乘积做市商曲线，与Uniswap类似。Bancor模式的方法与Uniswap使用的任意两种资产的曲线公式有所不同。

Bancor没有像Uniswap那样将基础代币与任何目标ERC-20代币配对，而是使用其自身代币BNT作为中间货币。针对BNT交易的每种代币都有单独的资金池。

> Bancor的这种设计，相当于交易中间介质为BNT。而Uniswap中ETH配对池更多，中间转换大部分通过ETH进行。

Bancor v2引入了一些创新，如单边押注和无常损失保险。

大多数AMM要求LPs提供资金池中所代表的每种资产的同等比例。这给可能只想接触单一资产的LPs带来不便。Bancor v2允许LPs提供单一资产并保持100%的风险。LPs可以在单一资产上保持长期的单边流动性，同时赚取交易费和流动性挖矿奖励。

无常损失（非永久性损失）是大多数LPs在AMMs上关注的一个风险。Bancor通过向LPs提供无常损失的补偿来激励流动性。目前，赔偿金每天增加1%，100天后达到100%。这种无常损失补偿鼓励LPs在流动资金池中至少停留100天。在无常损失保护生效之前有30天的断崖期。

Bancor还推出了vBNT和Vortex，以改善BNT代币的使用情况。用户在白名单的Bancor池中押注BNT时，会收到vBNT。BNT与vBNT的汇率为1:1。vBNT可用于多种功能：

* 在Bancor治理中的投票权
* 在vBNT/BNT池中持股以获得交换费用
* 通过使用vBNT作为抵押品在Bancor上借取其他代币（Vortex）

Vortex允许BNT持有者以其抵押的BNT进行借款。所得款项可用于杠杆或任何其他目的，提高了持有BNT的资本效率。

### AMM之间的主要区别是什么？

现在你已经熟悉了市场上的各种AMM，让我们来看看使它们各自与众不同的三个特点。为简单起见，我们将重点讨论Uniswap v2、Curve、Balancer和Bancor。

**I.资金池费用**

为了激励用户增加流动性，DEXs允许LPs在其平台上赚取交易费。这些费用帮助LPs应对价格波动和无常损失风险。

以下是2021年4月四个DEX的资金池费用摘要：

| --       | Uniswap | Curve |   Balancer   |   Bancor  |
| -------- | :-----: | :---: | :----------: | :-------: |
| 费用类型     |    固定   |   固定  |      可变      |     可变    |
| 资金池费用    |   0.3%  | 0.04% | 0.0001%\~10% |   最高5%\*  |
| 协议比例     |  0.00%  | 0.02% |  每个池子不同，可以是0 | 0.00%\*\* |
| 流动性提供者比例 |  0.30%  | 0.02% | 0.0001%\~10% |   最高5%\*  |

\*交易费用由资金池创建者控制。截至2021年4月26日，最高费用为5%。 \*\*归入协议的应计交易费是作为无常损失保险而不是收入。一旦从池中提取，它将被烧毁。

Uniswap和Curve对其平台上的每笔交易实施固定的交易费用。主要的区别在于分割--Uniswap向LPs提供全部的交易费，而Curve在协议和LPs之间平分交易费。

对于Balancer和Bancor，交易费是可变的，由池子的创建者控制。

**II.流动性挖矿**

我们在第二章中已经触及了这个概念。简而言之，流动性挖矿是指向协议提供流动性，并以协议的原生代币为回报的过程。

它是在DEX上引导流动性的最流行的方式之一，并补偿流动性提供者承担的无常损失风险。

四个DEX都有自己的原生代币：

&#x20;![](https://tva1.sinaimg.cn/large/008i3skNgy1gsaqdi0pf9j30u20swq8h.jpg)

截至2021年4月1日，Uniswap是四个DEX中唯一没有活跃的流动性挖矿项目的DEX。

**III.资金池权重**

大多数AMM，如Uniswap和Bancor，都有一个标准的50/50的资金池权重，流动性提供者必须提供两个代币的同等价值。然而，Balancer有一个可变的池供应标准，Curve有一个动态的池供应标准。

在Balancer上，用户可以为每个池子设置可变权重。池子不断被重新平衡，以确保它们遵循设定的可变权重。例如，Balancer上的80/20 BAL/WETH池意味着，在向池子提供流动性时，你必须将你的资本分成80%的BAL代币和20%的WETH代币。

![](https://tva1.sinaimg.cn/large/008i3skNgy1gsaqr2cgbbj312c0l6jx5.jpg)

在Curve上，资金池的权重是动态的，将根据储备规模而改变。与其他AMM不同，Curve不会对其资金池进行重新平衡，也不会试图使其保持平衡的比例。

让我们看一下由DAI、USDC和USDT组成的3CRV池的例子。理想情况下，这个池子在这三个稳定币之间的权重是相等的。然而，下面的快照中，USDC的权重最高（41.98%），DAI的权重最低（24.80%）。如果你有兴趣为这个池子提供流动性，你不需要提供所有三种代币，只需将三种代币中的任何一种贡献给这个池子。通过这样做，你将动态地改变池子的供应权重。

![](https://tva1.sinaimg.cn/large/008i3skNgy1gsaqvsz2hdj30rk0qgjte.jpg)

### 使用AMM的相关风险

使用基于AMM的交易所并非没有风险。下面我们从交易者和流动性提供者的角度概述了三种风险：

**I.价格滑点（Price Slippage）**

根据AMM公式，报价取决于代币储备的比例。

在恒定乘积做市商公式（x \* y = k）中，订单越大，用户将产生的价格滑点越大。这受制于流动性池子的大小--流动性较低的池子在大订单上会遭受更高的价格滑点。

假设当前ETH/DAI价格为2000美元，初始流动性对有62,500,000 DAI和25,000 ETH。这将有一个15.6亿的恒定乘积。下表说明了随着你的交易规模变大，你将不得不支付的价格滑点或溢价。

![](https://tva1.sinaimg.cn/large/008i3skNgy1gsasls8hxbj312a0aijx1.jpg)

这是另一个来自Uniswap的价格滑点的例子：

基于Uniswap上的ETH/DAI池，1个ETH现在价值\~2,433 DAI

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

![](https://tva1.sinaimg.cn/large/008i3skNgy1gsasnsgfecj30n20v8470.jpg)

注意看图像底部的几个指标：

1.Minimum Received是指根据你的滑点容忍度设置，你将收到的最低数量的代币。如果你的滑点容忍度是0.5%，那么你将收到的最低数额是2,433DAI \* 99.5% = 2,420DAI

2.价格影响（Price impact）是您必须支付的溢价，这将反映在显示的价格上。您的订单越大，价格影响就越大。

> Price Slippage设置过低容易造成交易失败，设置过高容易导致交易过程被机器人夹击，造成额外损失。一般默认0.5%即可。在抢购时，一般会将滑点设置较高，以避免由于价格变化太快导致的交易失败。

**II.抢跑（Front-running）**

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

下面是一个关于"三明治攻击"如何发生的说明：

![](https://tva1.sinaimg.cn/large/008i3skNgy1gsat47jc8cj30x80jcq5u.jpg)

下面是Ampleforth的治理代币（FORTH）在Uniswap上发生的"三明治攻击"的快照。

![](https://tva1.sinaimg.cn/large/008i3skNgy1gsatabptshj31ls0u04qp.jpg)

> 1.抢跑者以高gwei在购买者前提前发起一笔购买交易，导致代币价格短时上涨，图中大概让forth从41涨到43 2.购买者以相对较高价格购买代币，图中大概在43 3.抢跑者出售之前购买的代币，完成套利，以大概42价格卖出 4.整个过程抢跑者获利约$230

**III.无常损失（Impermanent Loss）**

AMM的另一个缺点是，当你向AMM提供流动性时，会出现无常损失。无常损失类似于衡量你在资金池中持有代币与在钱包中持有代币的机会成本。注意：在你将你的代币从流动性池中移除之前，损失是不会实现的。

在资金池中持有代币的价值和钱包中持有代币的价值之间的分歧越大，无常损失就越大。

一个例子：

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

* 1ETH的价格=2,000DAI
* 池子由5个ETH和10,000个DAI组成
* 池子的流动性(x \* *y = k) → 5* **\***&#x31;0,000 = 50,000

假设ETH的价格翻倍到4,000 DAI

* 套利者将在Uniswap报价的ETH价格上套利，直到达到1ETH=4,000DAI的价格
* 池子将重新平衡储备率，直到与池子的常数50,000相匹配
* 新的资金池比例将变成3.536 ETH和14,142 DAI &#x20;

为了计算你的无常损失，你可以减去你在池外和池内持有的收益。 在1ETH=2,000DAI时，您的原始资本（5ETH和10,000DAI）价值为20,000DAI。

在1ETH=4,000DAI时

* 你在资金池中的持股量将是。

  　- (3.536 ETH \* 4,000 DAI) + 14,142 DAI = 28,284 DAI

  　- 投资回报率=+41%(忽略交易费的收益)
* 你在资金池外的持股量将是

  　- (5 ETH \* 4,000 DAI) + 10,000DAI = 30,000DAI

  　- 投资回报率=+50%
* 因此，你的无常损失是30,000 - 28,284=1,716 DAI

这个损失只有在你从Uniswap提取流动资金时才会发生。下图显示了如果你在池外和池内持有你的代币，你将得到的机会成本。

![](https://tva1.sinaimg.cn/large/008i3skNgy1gsazdhsco8j318o0sagrk.jpg)

* 1.25倍的价格变化，相对于HODL的0.6%的无常损失
* 1.50倍的价格变化，相对于HODL的2.0%的无常损失
* 1.75倍的价格变化，相对于HODL的3.8%的无常损失
* 2倍的价格变化，相对于HODL的5.7%的无常损失
* 3倍的价格变化，相对于HODL的13.4%的无常损失
* 4倍的价格变化，相对于HODL的20.0%的无常损失
* 5倍价格变化，相对于HODL的25.5%的无常损失

  > HODL意思为单独持有代币，持币不动

因此，在小的价格范围内交易的交易对（如稳定币），受无常损失的影响较小。

### 其他值得一提的协议

**PancakeSwap**

PancakeSwap是Uniswap的分叉，但它是建立在Binace智能链区块链之上的。它是BSC上最大的AMM，截至2021年4月，其交易量甚至高于Uniswap。

**TerraSwap**

TerraSwap存在于Terra Chain上，它是Terra区块链上唯一的DEX协议。你可以选择以任何Terra Chain资产充当交易手续费代币。

**0x协议**

0x是一个DEX基础设施层，有两个主要产品：一个是DEX聚合API，允许项目推出基于白名单的DEX，以及一个面向消费者的DEX聚合器，Matcha。Tokenlon、Metamask、Zapper和Zerion等项目都采用了0x的聚合API来推出他们自己的交易所服务。

### 总结

DEX在推动DeFi空间方面发挥了重要作用，因为它描绘了当前的市场行为，特别是加密货币的价格和流动性。它决定了各种加密货币相对于彼此的价值，并说明了交易和资本流动的动态性质。

### 推荐读物

1. 了解AMM基础知识

   <https://defiweekly.substack.com/p/understanding-amms-the-basics-f30>
2. AMM的类型&#x20;

   <https://blog.chain.link/challenges-in-defi-how-to-bring-more-capital-and-less-risk-to-automated-market-maker-dexs/>
3. 了解AMM的价格滑点

   <https://research.paradigm.xyz/amm-price-impact>
4. 以太坊上的抢跑问题

   <https://www.coindesk.com/new-research-sheds-light-front-running-bots-ethereum-dark-forest>
5. Uniswap V3

   <https://uniswap.org/blog/uniswap-v3>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://nigdaemon.gitbook.io/how-to-defi-advanced-zhogn-wen-b/di-3-zhang-qu-zhong-xin-hua-jiao-yi-suo.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
