由 Flashbots 开创的MEV竞拍服务已受到了矿工们的欢迎,那么这种竞拍是否是最优的呢?
在包(Bundle)分配问题中,矿工面临着固定数量的交易,而他们要将这些交易包含在给定的区块中,此外,矿工还可以选择在该区块中包含(或排除)哪些包(Bundle)。矿工通过将每个包(Bundle)包含在区块中来赚取利润,然而,包(Bundle)具有很多必须要考虑的分配约束。在这篇文章中,我们给出了一个简单的整数线性规划问题(ILP)公式,并提供了一些基本的扩展。
简介
矿工可提取价值(MEV)这个术语,指的是矿工根据交易排序可获得的任何超额利润。在区块链等去中心化系统中,用户通过点对点的gossip网络向矿工提交一组交易和费用。而矿工们会收集这些交易,并将它们分批成一个完全有序的序列,然后由大多数矿工验证并接受作为下一个区块。
然而,在很多区块链中(例如以太坊),矿工可选择要包含的交易集以及提交交易的顺序。
如果一名矿工提交一笔具有经济意义的交易,他们可以对交易重新排序以确保他们的交易首先执行,这也被称为抢先交易(front running)。自从MEV这一概念被提出以来,已经出现了很多涉及闪电贷、借贷以及三明治攻击的新型 MEV 形式。MEV代表了一种价值提取形式,而用户无法通过简单地修改其交易竞价行为来消除它。
公平(Fairness)。从理论上讲,MEV 可能导致区块链共识不稳定,并可能迫使用户在预期交易费用之外支付额外的费用来处理交易。这也引出了很多研究,而这些研究的重点是保证交易排序及包含方面的“公平性”。而公平算法尝试使用密码学方法,例如对交易排序或待处理交易状态的时间锁承诺(time-locked commitments),以强制基于时间的“公平”保证。
MEV竞拍。或者,有一些研究工作表明,MEV是区块链独有的,它无法通过纯粹的密码学方式删除。这一系列工作有效地表明,相比用密码学方式删除MEV,矿工和用户共享MEV利润将导致稳定的均衡。
在这个由 Flashbots 开创的世界中,“探索者”试图找到交易的最佳顺序,然后竞标由矿工以特定顺序执行的“包”交易。这种出价通过 MEV 拍卖进行调解——即参与者愿意在链下拍卖中向矿工支付额外的优先出价。因此,MEV竞拍是更受欢迎的,并且这种方式在2021 年为矿工创造了超过 7 亿美元的额外收入。
最优性(Optimality)。然而,一个自然要问的理论问题是,这种竞拍是否是最优的呢?目前,Flashbots竞拍通过使用约束求解器解决背包问题(Knapsack problem)来有效地执行交易包(bundle)。但是从理论上讲,我们应该期望近似整数线性规划 (ILP) 的解决方案是“最优”的吗?应该如何描述最优性?由于 MEV 是根据所有资产的可提取价值来定义的,因此任何最优概念都取决于任何一组交易和包(bundle)可实现的最大利润。
总结(Summary)。在这篇短论文中,我们给出了在单个区块中包含交易包(bundle)的最优ILP的首个正式描述。我们的描述侧重于 MEV 的三种操作形式,包括抢先交易(front running)、尾随交易(back running)以及三明治交易(sandwiching)。我们假设在实践中使用的精确gas模拟方法是作为预处理步骤执行的,它将分配问题(寻找最优包分配的问题)与正确估计单个包(bundle)利润的问题解耦。我们的公式可以很容易地用高级描述语言(例如CVXPY)进行优化并在实践中使用。
1 定义
在这节内容中,我们首先来描述一下这篇论文中使用的基本定义。
交易(Transaction):矿工通常从一系列的交易开始,我们把这些交易写成一些集合T(将包含在区块中)。这些交易由区块链的用户提供,它们可以是Uniswap 或Curve的swap交易、借贷或预言机更新等交易。
包(Bundle):矿工还接受许多由用户提交的包(Bundle),所谓包(Bundle)是一个带有关联交易的操作(action,我们稍后定义),每个包(Bundle)还包括了一些出价,例如,用户愿意支付多少钱才能将其包(Bundle)包含在区块中。矿工可以决定区块中包含哪些包(Bundle)以及交易。而矿工从包(Bundle)中获得的利润,等于区块中包含的各个出价的总和。
操作(action):从以前开始,每个包(Bundle)都将一个操作(action)与一笔交易(t ∈ T)相关联。可能的操作(action)是:抢先交易t(在t之前执行一笔交易),尾随交易(在 t 之后立即执行一笔交易),以及三明治交易(在t前后都执行一笔交易)。
对于给定的交易 t ∈ T,要么是进行三明治交易t,要么是进行抢先交易以及尾随交易t。例如,如果有三个包(Bundle)与交易t关联,其中一个在t之后进行尾随交易,一个执行抢先交易,另一个执行三明治交易,那么矿工可以选择包括抢先交易包(Bundle)和尾随交易包(Bundle),或者是三明治交易包(Bundle),但不能同时包括这两个类型。
我们把这三个操作的空间称为A。现在我们可以很容易地将包(Bundle)定义为与交易t ∈ T 相关联的操作(a ∈ A),而它会有一个出价金额( p > 0)。即包(Bundle)是一个三元组(a,t, p) ∈ A × T × R+,所有包(Bundle)的集合将由 B ⊆ A × T × R+ 给出。
利润最大化(Profit maximization)。剩下的问题是:矿工如何选择哪些交易包含在他们的区块中,以实现利润最大化?在下一节中,我们将展示这一问题可表述为一个简单的整数线性规划问题(ILP),而其通常可通过现代计算机在合理的时间内解决。
2 问题表述
我们将利润最大化问题表述为整数线性规划 (ILP),我们将其称为包(Bundle)分配问题。
设置函数。为方便起见,我们将编写定义以下函数。这里,t ∈ T是一笔交易,而B是所有包(Bundle)的集合。
我们将s(t)定义为与三明治交易t关联的包(Bundle)集合:
类似地,f(t)是与t相关联的抢先交易,b(t)是与t相关联的尾随交易。我们假设 B 由 b = 1, 2, ... 索引,其中 n 是提议的包(Bundle)的数量。
问题陈述:将包(Bundle)分配问题写成整数线性规划问题的一种简单方法如下:
这里,
是优化变量,如果当前区块中应包含包(Bundle)b,则xb为1,否则为0。问题数据是
,这是一个向量,使得 cb ≥ 0 是矿工在他们的区块中包含包(Bundle)b所获得的利润,而T是要包含在此区块中的交易集(不包括包(Bundle))。
标准形式。问题 (1) 可以用矩阵表示法写得更简洁一些。为此,我们将定义m = |T|,交易总数,以及矩阵
为:
对于每笔交易t∈ T和包(bundle)b ∈ B,使用这些新的定义,问题(1)可用以下方式编写:
其中1是适当维度的全1向量,而
是优化变量。
解释。我们可以将目标和约束解释如下。目标
仅仅是包含在区块中的包(bundle)给出的利润总和。第一个约束意味着区块中最多包含一个三明治包(bundle),或者区块中最多包含两个抢先交易或尾随交易 t的包(bundle)。第二个约束意味着对于每笔交易t,最多包含一个抢先交易包(bundle),以及最多包含一个尾随交易包(bundle),而最后一个约束是将x的条目约束为布尔值。
放宽松。一般来说,除了非常小的实例之外,问题 (1) 可能很难解决,因为x的条目有布尔约束。但是,在许多实际情况下,将布尔约束放宽为边界约束(box constraint,即 0 ≤ x ≤ 1),经过一些简单的舍入方案后,可以产生合理的实际性能以及合理的解决方案。一般来说,这个宽松问题的最佳目标,始终是矿工可能获得的最大利润的上限,而任何舍入方案都会给出一个下限。这可以用来给出所提议的包(bundle)分配的次优程度的一个界限。例如,如果放宽后的利润为1.2 ETH,而拟议分配的利润为1 ETH,则拟议分配的次优性最多为 1.2/1 − 1 = 20%。换句话说,最多可将提议的分配提高20%。
2.1 扩展
问题(1)有几个简单但非常有用的扩展。
包(bundle)约束。例如,用户可能希望指定几个包(bundle),这些包(bundle)必须由矿工一次性全部包含,或者根本不包含。我们可以把它写成包(bundle)Bi ⊆ B的子集。对于 i = 1, 。. . , ℓ,如果Bi中包含任何一个包(bundle),则矿工必须包含包(bundle)Bi的整个子集。
新的优化问题由下面的公式给出:
其中优化变量是
和
,而问题数据是在(2) 中定义的矩阵
和矩阵
:
换句话说,D是一个对角矩阵,其对角条目是集合Bi的大小,而 F 是一个矩阵,使得 (Fx)i 给出了 Bi 中要包含在区块中的包(bundle)的数量。约束Fx=Dy简单地表示,对于每个可能的i,要么包含所有| Bi | 包(bundle),要么只包含0个包(bundle)。
gas限制。另一种可能(且非常简单)的扩展,是在优化问题上包含总gas约束。例如,当包含在区块中时,每个包(bundle)b ∈ B可能使用一些最大量的gas(由gb ≥ 0给出)。我们可以很容易地附加约束,即包(bundle)使用的最大 gas 总量不超过交易(但不包括 包(bundle))执行后剩余的 gas 量;即
,其中 M ≥ 0 是剩余的gas量。我们注意到,这可能是一个很难获得合理限制的数量,因为当区块中包含包(bundle)时,交易使用的gas可能会发生巨大变化。有其他可能的方法来进行计算,但我们不在这里讨论它们。
3 结论
在这篇论文中,我们提供了一个简单但非常通用的公式,它可以用于解决矿工利润最大化包(bundle)分配的问题。虽然该问题通常是NP问题,但我们怀疑大多数整数线性规划求解器(甚至线性规划松弛)在实际情况下可能有很好的表现。