# 【MEV】详细介绍

By [Chinachain](https://paragraph.com/@chinachain) · 2023-10-25

---

     【MEV】全称Maximal Extractable Value，即最大可提取价值。方法是通过改变区块链内部交易顺序或增删交易获取利润。MEV并不全是指不良攻击，从另一个方面而言，MEV有效得提高了交易速度、为DEX提供了流动性，比如套利交易；同时三明治攻击、机器人抢跑则攫取了市场利润，使整个市场的用户遭受损失。

     想要了解MEV，首先从区块链的运行机制开始说起：

1\. 区块链运行机制
-----------

### （1） 交易过程

     比特币系统和以太坊系统除了共识机制已经大为不同外，在交易的处理方式上从创造之初就选择了不同的路线。

*   比特币：在比特币系统中，每个人的账户并没有余额的概念，而是UTXO（Unspent Transaction Output），就是“未使用的输出”。
    
    怎么说呢？首先区分两个概念：输出（Output）和输入（Input）。假设一只Rabbit此时发起了一笔交易，它想要转1个BTC给Fish。那么在这笔交易中，涉及到的输出是Rabbit，输入是Fish；交易达成后，Fish在比特币系统中就会多一笔1个BTC的UTXO，另一方面而言，Rabbit转给Fish的BTC一定也是来源于它原先的UTXO。
    
    如果之后Fish需要转回0.7比特币给Rabbit，那它应该怎么做？
    
    首先使用UTXO，假设Fish只有原先这1个BTC的UTXO。然后在这笔交易中Fish会有一笔0.7BTC的输出，同时还有一笔0.3BTC的输入；另外一侧，Rabbit会有一笔0.7BTC的输入。
    

![比特币区块头实例](https://storage.googleapis.com/papyrus_images/5c93e3c97635b19e1d2eca2224423aee469364f0c75ebf666f6f680e5e05c35d.png)

比特币区块头实例

*   以太坊：在以太坊的系统中，交易十分易懂，即涉及修改两个以太坊账户的余额。
    
    对于Rabbit而言，每一笔交易都按顺序有一个Nonce，如果想要取消个人以太坊账户的某笔交易，发送0ETH到自己的账户，同时将Nonce设置为想要取消的那笔交易的Nonce即可。前提是在交易上链之前。
    

### （2）Mempool

     以比特币系统为例，当Rabbit用户将自己的交易发起后，交易会先到达Mempool，内存池。内存池是储存并收集当前发起交易的地方，它是对所有用户公开的。当交易提交到内存池后，验证者会选择适当数量的交易，将它们添加进区块。

     在PoW的系统中，一般是选择Gas费最高的一定数量交易。

### **（3）广播验证**

     交易打包进区块后，验证者将此区块向周围广播。相邻节点收到广播，做出一系列验证：如Nonce验证（不同于以太坊的Nonce，比特币的Nonce是用于矿工解题的16进制数字）、Merkle树根验证等等。验证通过向周围区块后进行二次广播。

2.Miner Extractable Value
-------------------------

     MEV最开始被称作Miner Extractable Value，由Phil Daian提出。指的是在工作量证明（PoW）的系统中，用户提交的交易并不会立即上链，而是先发送到Mempool（内存池）里面，由矿工选择部分交易打包进块。所以矿工在选择交易的时候，可以根据矿工意愿改变交易顺序或者增删交易；当这些行为可以为矿工赚取额外利润时，便称矿工获取了MEV。

     在以太坊从Pow转到权益证明（PoS）后，验证交易的人从矿工变成了质押者，但是交易上链的自主选择权仍然掌握在验证者手中，所以MEV的含义从Miner Extractable Value（矿工可提取利润）变成了Maximal Extractable Value（最大可提取利润）。

3.Maximal Extractable Value
---------------------------

     在理论的状态中，MEV应该被验证者获得。但是现实情况往往是：某些用户通过外部算法或者人为监控内存池获得池中交易的状态，通过附加更高的gas，让自己的交易领先于某些有利可图的交易，比它们更先执行。理论上而言，如果有相当数量的套利者在互相竞争，gas费会一直增加到利润的90%。

     经典的方式有：

*   **DEX（去中心化交易所）套利**
    

     Dex套利是最早期的MEV攻击。具体方式是通过发现两个或以上交易所代币兑换比率差异，在一个交易所兑换代币，并在另一个交易所换回代币。通过一来一回的兑换价差，获取超过交易手续费的利润。

     比如说：

     Rabbit在Uniswap交易所上看到ETH：BTC=10：1；在Sushiswap上发现ETH：BTC=10.5：1，于是Rabbit用手中的10个ETH在Uniswap上兑换成1个BTC；然后跑到Sushiswap上将一个比特币兑换成10.5个ETH，假设手续费是0.01ETH，一来一回净赚0.49ETH，真正实现了无风险收益。

*   **三明治攻击**
    

     了解三明治攻击必须先了解AMM（自动做市商）机制。早期，大部分的去中心化交易所模仿UniswapV1采用X\*Y=K的AMM机制。其中X是代币1的数量，Y是代币2的数量，K是池中需要保持的恒定常数。

![UniswapV1采用的AMM曲线](https://storage.googleapis.com/papyrus_images/da3d232dcc51ee4dbd242058d102e626b6e5b1a084c3916ffcbe4e3638e9f8be.png)

UniswapV1采用的AMM曲线

     简单举个例子：假设现在有ETH和BTC的交易兑换池，此时100ETH兑换1个BTC，现在池中有1,000个ETH和10个BTC，1,000＊10＝10,000，这个时候K＝10,000。因此，任何时刻池中的ETH数量和BTC数量的乘积都必须等于10,000。

     假设Rabbit手中有10个ETH，它并不能换到1个BTC，它能换到多少呢？

     解方程：当X=1,010，K=10,000时，Y=9.9，即当它投进10个ETH后，池中还需要保持有1,010个ETH，9.9个BTC，说明它这个时候能得到0.1个BTC。基本满足兑换需求。

     那么三明治攻击怎么做到得呢？假设Tiger监测到Rabbit此时想做大额兑换单，将手中的200ETH换成BTC。同样的计算方法可以算出：

     X=1,200，K=10,000时，Y=8.333；Rabbit只能换得到1.7个BTC，这就是所谓的滑点。

     当Rabbit兑换完成后，池中还有1,200个ETH和8.333个BTC，此时BTC比ETH更值钱。三明治攻击即Tiger在监测到Rabbit的大额订单后，提前先用手中的ETH按100：1的比率换成BTC，在Rabbit完成订单后，以8.33：1200=1：144的比率换回ETH。

4\. MEV的影响
----------

优点：

*   提高交易速度。不断的DEX套利能将交易所的兑换比率维持在市场比率。
    
*   自动清算，提高市场效率。
    

缺点：

*   损失用户利益，造成网络拥堵，用户体验变差。
    
*   gas费用恶性竞争，不断提高gas费使得交易达成。
    
*   区块重组，损坏共识系统。
    

5\. MEV分配方案
-----------

     Flashbot是专门针对MEV问题的一个研究组织，致力于平衡验证者、Searcher（搜索套利机会的人）、用户之间的利益分配，消除MEV的负面影响。

     Flashbot的MEV-boost通过将区块构建分配给第三方的方式来实现gas费的降低。它将搜寻交易、编辑交易顺序和上传区块分割成两个独立的部分，分别由Searcher和验证者承担。Searcher寻找有利可图的交易，或者将自己想要秘密达成的交易，按照自定义的顺序将其打包成区块发送给验证者，验证者如果发现Searcher发送的区块总Gas更高，就会放弃原先打包的区块，选择它的区块。

     由于双方都需要使用MEV-geth，即Flashbot通过修改以太坊的客户端代码设计的新客户端，Searcher发送的交易并不会在公开的Mempool上面显示，即创造了一个隐私池。

---

*Originally published on [Chinachain](https://paragraph.com/@chinachain/mev)*
