NFT:一文读懂MEV链上套利

原文:Jake_xbt

编译:Crush

01

什么是MEV?

我经常被问到MEV是什么,以及抢先交易和尾随交易是如何工作的,那么我就以我自己的机器人工作机制为例,在这篇长文中做一个解释。

链上流动性是碎片化的,虽然类似Uniswap这样的流动性池子很多,但是它们之间没有相互通信,每个池子都提供实时交换资产的报价,而正是这种分散的流动性,创造了在不同池子中低买高卖的机会。

举例:一个用户在Uniswap的WETH-USDC池子卖出了500万美元的WETH,当他卖出的时候,Uniswap上的WETH价格下降,那么它就会允许其他用户以相较于Sushiswap上更便宜的价格购买WETH。

因此,精明的用户就可以在Uniswap上购买WETH,然后在Sushiswap上面出售。

02

链上套利有什么不同?

上面举例说的是传统套利的原理,链上defi还多了一点不同的东西:原子性。

我们都知道,区块链的状态逐块更新,这意味着一个交易里面可以执行多个操作,前提是这个交易的最终状态是正确的,即这个交易最终要是成功的。

例如,我可以从Aave借贷池免费借到500万美元的USDC,前提是我在交易结束时将500万美元的USDC准确归还给借贷池,这就是传说中的「闪电贷」,相信你在很多项目被盗的新闻中经常听到。

闪电贷为那些没有大量资金的用户免费创造了大规模链上套利的机会。当然了,这种钱并不容易赚。以上套利思路的出现,就带来了「套利空间的竞争」。

而大多数原子套利的空间都由少数地址主导,这些地址获得了大部分的利润,所以这大概率是所有领域中竞争最激烈的一块儿。套利的成功,是套利者的智慧、网络的低延迟以及良好的基础设施的结合。

03

机器人是如何工作的?

机器人会直接连接到内存池,内存池是一个队列,里面存储着一组等待被确认的交易。机器人会埋伏在池子里面,等待可以创造套利机会的交易出现。

一旦发现可套利的交易,机器人会自动计算套利的最佳方式,然后将一系列操作,放到一个交易里面,直接将这个交易提交到内存池中,和可套利的那个交易放在同一个区块中进行打包。

我的机器人会在类似Uniswap这样的交易所中寻找的套利机会,它可以在目标交易出现后执行,最后以利用不同池子之间流动性的差异,来获取利润。

为了搞明白什么样的交易算是可套利的机会,你必须先要了解UniswapV2的工作原理。

04

UniswapV2的工作原理

假设一个池子里面包含X个WETH和Y个USDC,并且它允许用户在池子中进行WETH和USDC的交易。那么池子的管理原则是:保证这个X和Y的乘积始终是一个常数我们称之为「Uniswap不变量」。

因此,对于一个储备为(X,Y)的池子,我们可以通过求解以下等式计算出我们期望将ΔXWETH卖出多少USDC到矿池中:

实际操作中,池子还会收取大概30bps的手续费,在计算上面的公式时,你可以通过将ΔXWETH乘以0.997来保证计算结果的准确性。为了解释起来方便,我们这里简化一下,省略这个步骤。

重要的是,我们可以重新拓展和排列这个方程,然后根据WETH输入的ΔX,得到一个UDDC输出的ΔY的表达式:

不错,现在在任何一个UniswapV2池子中给你一个输入量,相信你都能确切地计算出预期输出量了。

05

套利机会是如何运作的?

套利一般可以简化为「低买高卖」,在这种情况下,我们需要找到一个A池去购买WETH,A池的WETH价格比B池的便宜,然后我们将WETH在B池中出售,即在A池中低买,在B池中高卖。

假设A池有储备金(X,Y),B池有储备金(X?,?),那么如果我们在A池中卖出ΔX个WETH,收到ΔY个USDC,那么我们可以计算这些USDC在B池中能后换到多少个WETH,如果有得赚,那么一个套利机会就形成了。

所以让我们计算一下,在第一次交易中,我们将X换成Y,第二次交易中,我们又将?换成X?,根据前面的方程,计算如下:

这里的ε表示输入的ΔX与执行两次交易之后的输出之间的差异。如果我们能找到将ε>0最大化的方法,我们就找到了有利可图的套利。

所以我们可以用下面这个表达式来简化我们上面的方程:

套利机器人的其中一项工作就是使得利润最大化,在我们的方程中,这相当于最大化ε。只有当A>B时,方程才会有一个唯一的最优解,一旦A<B,那就不存在套利机会了。

06

机器人如何从机会中获利?

一旦我们弄清楚了如何执行交易以获得最大利润的话,剩下的事儿就简单了,我们需要让机器人获得初始资金来进行套利,放到上面的公式里,就是获得ΔX。

初始资金可以从AAVE中操作闪电贷中获取。机器人需要将借贷、交易以及还贷三个操作,捆绑在一个交易里面。这个过程,我们可以通过使用预先部署在链上的自定义智能合约来完成。

一旦我们的交易被创建,同时签名成功,它就会被提交到内存池等待矿工挖矿,即等待交易成功。但是由于还有其它很多的机器人同样也在寻找套利的机会,我们需要保证我们的交易被首先通过。

这意味着我们的套利交易应该跟随目标交易,被打包在同一个区块中,然后立刻完成交易。

这就是所谓的尾随交易,这种情况下,开采区块中的交易顺序如下所示:

为了实现尾随交易,机器人必须要先知道目标交易所提供的gas费是多少,然后将这些参数准确的复制到我们的套利交易中。最后,套利交易由机器人进行签名,并提交到内存池中进行验证,利润到手!

原文链接:

https://twitter.com/jake_xbt/status/1581612329086554112

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:15ms0-2:786ms