如何识别链上套利行为或者抢跑夹子三明治行为或交易
识别原子 MEV交易
鉴于交易可以任意复杂并且可以有无数未知交易模式,使用特定交易模式匹配的方法无法应对新的 MEV 模式。为了确定交易中是否发生套利,我们需要对交易进行通用抽象。
以下是我们为认可设立的原则。
我们将交易视为资产转移的集合,我们使用一组规则通过评估这些转移的结果来查看是否发生了 MEV。根据经验,交易中有不止一次转账(或互换),交易者最终会有盈余。
抽象方法
Transaction 可以抽象为以下行为:Transfer、Trade 及其组合。TransferTable 是通过将 Transfers 合并到一个名为 Transfer Table 的表中生成的。然后我们合并TransferTable中相同地址的行,得到CombinedTransferTable。
执行
下面是一些术语和方法的定义和解释。
资产
· ETH 或 ERC20 代币
转移方式
我们用它来描述交易中两个地址之间的资产流动。
· 转账::(从地址,到地址,资产,金额)
· 含义:将资产从一个地址转移到另一个地址。
转账表
· makeTransferTable :: [传输] -> 传输表
我们用它来描述一次交易中所有涉及的地址之间发生的多个资产流动的过程。
· TransferTable 的列是资产。
· TransferTable的每一行表示一个Address的一个Asset发生了变化,正值表示增加,负值表示减少。
· 一笔Transfer对应TransferTable中的两行:一行为from Address,对应负资产值,表示资产流出;另一行为to Address,对应正资产值,表示资产流入.
组合转移表
我们用它来描述一次交易中所有涉及的地址之间发生的多个资产流的最终结果。
我们合并 TransferTable 中具有相同地址的行,并将所有资产值相加,生成 CombinedTransferTable。
· makeCombinedTransferTable :: TransferTable -> CombinedTransferTable
交易
当一个地址在交易后资产发生变化时,据说该地址已经进行了交易,其中一项资产减少而另一项资产增加。
MEV识别规则
当交易后满足以下条件时,MEV 被认为已经发生。
· MEV 交易者在另一个地址进行了多次交易。
· 交易中涉及的每项资产在各自的交易中都经历了流入和流出。
· 交易者净盈余为正
一个典型的套利例子
典型的套利涉及 确定的 3 个代币和 3 个流动性池:
· EtherScan上的交易
转账列表:
From | To | Asset | Amount |
MEV Bot 0x80d | SushiSwap USDC 0x397 | USDC | 76860.06 |
SushiSwap USDC 0x397 | SushiSwap USDT 0x06d | WETH | 38.232 |
SushiSwap USDT 0x06d | MEV Bot 0x80d | USDT | 77666.66 |
Uniswap V3 USDC-USDT 0x785 | MEV Bot 0x80d | USDC | 77406.53 |
MEV Bot 0x80d | Uniswap V3 USDC-USDT 0x785 | USDT | 77666.66 |
交易的TransferTable:
USDC | WETH | USDT | |
MEV Bot 0x80d | -76860.06 | | |
SushiSwap USDC 0x397 | +76860.06 | | |
SushiSwap USDC 0x397 | | -38.232 | |
SushiSwap USDT 0x06d | | +38.232 | |
SushiSwap USDT 0x06d | | | -77666.66 |
MEV Bot 0x80d | | | +77666.66 |
Uniswap V3 USDC-USDT 0x785 | -77406.53 | | |
MEV Bot 0x80d | +77406.53 | | |
MEV Bot 0x80d | | | -77666.66 |
Uniswap V3 USDC-USDT 0x785 | | | +77666.66 |
生成的 CombinedTransferTable:
Address | USDC | WETH | USDT | Trade? |
SushiSwap USDC 0x397 | 76860.06 | -38.232 | | True |
SushiSwap USDT 0x06d | | 38.232 | -77666.66 | True |
Uniswap V3 USDC-USDT 0x785 | -77406.53 | | 77666.66 | True |
MEV Bot 0x80d | 546.47 | | | False |
判断
· 根据CombinedTransferTable,我们可以看出——SushiSwap USDC 0x397,SushiSwap USDT 0x06d,和Uniswap V3 USDC-USDT 0x785——这三个地址都进行了交易。
· 3笔交易涉及USDC、WETH和USDT,每笔资产的列均有正值和负值。
· MEV-Bot 0x80d 没有贸易,其净盈余为正。
因此,我们将本次交易认定为套利交易。
识别Cross-Transaction
(三明治)MEV
跨事务结构分析是上述事务内分析方法的扩展。
三明治 MEV 具有以下字符。
· 在同一个区块中,攻击者的交易包含一个开始交易、一个结束交易,以及介于两者之间的一个或多个受害者交易。
· Attacker和Victim的组合需要满足一个基本条件:from Address不一样。
三明治模式具有(攻击者开始交易、受害者交易、攻击者结束交易)的组合。每笔交易的 CombinedTransferTable 包含处理交易的相同地址。结合攻击者的 Start Transaction 和 End Transaction,我们得到包含最终净盈余的此 MEV 的 CombinedTransferTable。