WET:一文读懂MEV链上套利

原文:Jake_xbt

编译:Crush

01

什么是 MEV?

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

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

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

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

02

链上套利有什么不同?

美联储巴尔金:通胀数据很大程度上符合预期:4月12日消息,美联储巴尔金表示,通胀数据很大程度上符合预期;要降低核心通胀率,还有很多工作要做;通胀高峰已经过去,但是要彻底缓解仍需时日;已经见到了需要开始放缓的迹象;本人正聚焦于把通胀率降至可控水平;不想过早宣布抗击通胀已取得胜利。[2023/4/12 14:00:00]

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

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

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

(译者注:即借贷和还贷两个动作在一条交易里面执行,通过借贷而来的资金赚取更多的收益,这样就能一瞬间还清贷款,并保留收益。)

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

RIZZO:传奇密码学家Nick Szabo将比特币视为最好的货币形式已过去两年整:金色财经报道,比特币杂志编辑RIZZO表示,传奇密码学家Nick Szabo谈论比特币已经过去整整两年了。

Nick Szabo于2020年12月26日表示,比特币是价值投资,货币是一种相当有价值的服务,而比特币是最好的货币形式。[2022/12/27 22:09:18]

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

(译者注:少数地址获得大部分利润,这符合经济学中的二八原则,即 20% 的因素影响 80% 的结果。)

03

机器人是如何工作的?

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

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

哈萨克斯坦总统:哈国正考虑对数字资产给予全面法律承认:9月30日消息,哈萨克斯坦总统 Kassym-Jomart Tokayev 在国际论坛 Digital Bridge 2022 上表示,在哈国首都阿斯塔纳国际金融中心的一个试点项目中,第一笔使用当地货币购买加密货币的交易已完成。如果该试点成功,该国计划成为数字资产生态系统的领导者。他总结道:如果这类金融工具持续表现出其市场需求以及安全性,哈国会给予其全面的法律承认。

金色财经此前报道,昨日,哈萨克斯坦制定了首部关于数字采矿和加密货币的行业法案。[2022/9/30 6:04:52]

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

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

04

Uniswap V2 的工作原理

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

元宇宙初创公司Condense完成450万美元种子轮融资:7月28日消息,体育及音乐直播元宇宙初创公司 Condense 宣布完成 450 万美元种子轮融资,伦敦风投公司 LocalGlobe 领投,7% Ventures、Deeptech Labs、Monzo 创始人兼前首席执行官 Tom Blomfield、以及一位艺术家和一位前英格兰足球运动员和体育节目主持人等参投。

Condense 是一家元宇宙基础设施初创公司,帮助用户在元宇宙创建出色的体育及音乐直播体验,其客户主要包括开发人员、广播公司、唱片公司、以及体育品牌商和比赛授权转播单位。Condense 计划很快在伦敦开设一家活动录音室,然后计划进军欧洲其他城市,以及其主要目标市场美国。(Sifted)[2022/7/28 2:43:49]

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

Everipedia团队通过社区的BrainDAO购入BAYC #9965:5月18日消息,Everipedia官方发推宣布,通过社区的BrainDAO购买了Bored Ape Yacht Club #9665,并准备发布自己的Brainies NFT系列。[2022/5/18 3:24:15]

(译者注:这里的 ΔX WETH 指的是一个增量,是数学中函数的相关概念,读者可跳过复杂的公式计算,继续往下看。)

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

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

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

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 最大化的方法,我们就找到了有利可图的套利。

(译者注:这个差异 ε 即你套利前投入的 WETH 与套利完成后的 WETH 的差,如果 WETH 变多了,说明套利成功,如果操作结束,WETH 反而还少了,那说明这是一次失败的套利。)

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

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

06

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

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

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

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

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

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

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

原文链接:

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

金色财经Maxwell

元宇宙之心

老雅痞

Odaily

去中心化金融社区

鸵鸟区块链

PANews

Mindao

吴说区块链

Foresight News

金色荐读

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

地球链

[0:15ms0-1:408ms