本文介绍了MEV-Share的基本概念及其在搜索链上交易中的应用。MEV-Share允许用户选择性地与搜索者共享其交易信息,从而实现信息隐私与交易策略的有效结合。文章详细讨论了如何利用MEV-Share进行交易搜索,包括新功能、搜索策略及示例代码,适合希望深入理解MEV机制的开发者。
MEV-Share 是一个为搜索者带来新范式的新工具。它解锁了新的订单流、功能和搜索策略。本简短指南将帮助你快速了解新的搜索方式,并解释如何升级你的策略以利用 MEV-Share。
TL;DR
在 MEV-Share 上搜索是一个简短的入门指南,旨在帮助搜索者了解 MEV-Share。它解释了 MEV-Share 的新功能,提供了搜索策略的指导和示例。
搜索者可以通过 https://mev-share.flashbots.net 访问 Flashbots MEV-Share 匹配器获取新的订单流!(请在浏览器中打开链接以查看活动交易)这包括所有发送到 Flashbots Protect 的交易,约占所有以太坊交易的 3%。
要在 MEV-Share 上进行搜索,你可以使用 Flashbots 的 示例套利机器人,或者使用像 matchmaker-ts 这样的客户端库创建自己的策略。
通过加入 Flashbots discord 中的 #mev-share 频道分享你的想法并了解未来更新!
上个月,Flashbots 宣布 了 MEV-Share 的 beta 版本发布。此发布是向 MEV 供应链引入可编程隐私的第一步——使用户能够决定他们的交易如何、何时以及由谁执行。今天,搜索者可以 订阅 Flashbots 匹配器,搜索可编程私密的订单流。这包括所有发送到 Flashbots Protect 的交易。但在可编程私密订单流上搜索对搜索者来说真正意味着什么?搜索者如何在这个新范式中启动策略?
在 MEV-Share 上搜索 是一个简短的入门指南,旨在帮助搜索者快速了解 MEV-Share。我们将解释 MEV-Share 背后的新理念,它们如何与 MEV-Boost 和 MEV-Geth 不同,以及如何考虑设计搜索策略。我们还将涉及一些 MEV-Share 的新功能并提供如何使用它们的示例。
MEV-Share 是一个协议,允许用户选择性地与搜索者共享关于其交易的信息。这使用户可以保持敏感信息的私密,同时仍允许搜索者执行盲回跑、Uniswap v2 和 v3 的套利等策略。Flashbots 运行着一个名为 Flashbots Matchmaker 的服务,该服务实现了 MEV-Share 协议。发送到 Flashbots Protect 的所有交易都会自动通过 Flashbots Matchmaker 路由。
今天,大约 3% 的以太坊交易通过 Flashbots Protect 流动,使搜索者能够在越来越有价值的私密订单流上进行搜索**。此外,MEV-Share 是一个 proto-SUAVE 实现,这将使提前接入 MEV-Share 的搜索者更好地理解随着 MEV 供应链去中心化,MEV 市场动态将如何演变。
* 截至 4 月 30 日,32,011 / 974,972 (3.28%) 被纳入以太坊主网的交易来自 Flashbots Protect(来源:Flashbots Protect 和 https://etherscan.io/chart/tx)
以太坊用户 通过 Flashbots Protect 连接到 Flashbots Matchmaker。
搜索者 通过匹配器的 SSE 端点 监听待处理交易的信息。搜索者利用这些信息制作部分捆绑,并通过 mev_sendBundle
API 发送到 https://relay.flashbots.net
,在那里它被路由到 Flashbots Matchmaker。
Flashbots Matchmaker 然后 用原始签名交易替换搜索者部分捆绑中的交易哈希,并将这些捆绑(现在完全由签名交易组成)发送到区块建设者。
最明显的区别在于待处理交易不以明文显示。换句话说,搜索者可能无法访问他们习惯从待处理交易中看到的所有数据,比如 calldata 和日志。
你可以立即访问 Flashbots Matchmaker 的订单流。只需前往 https://mev-share.flashbots.net(在浏览器中打开该链接,或使用 curl
发送 GET 请求)。
例如,一个待处理的 Uniswap 交易将(默认情况下)仅暴露交易哈希和正在交易的代币对。交易的数量和方向(例如 ETH → TKN 或 TKN → ETH)是隐藏的。
MEV-Share 介绍了几个令人兴奋的功能,这些功能使搜索者更好地控制他们的捆绑如何处理。
大部分令人兴奋的内容位于 mev_sendBundle
端点。我们将在以下小节中描述其功能。请参阅 mev-share 协议库以获取该端点的权威定义,查看 Flashbots MEV-Share 文档 以获取 Flashbots 的实现特定细节。
供参考,当前 mev_sendBundle
定义如下。请注意,标有“?”的字段是可选的。
{ jsonrpc: "2.0", id: string | number, method: "mev_sendBundle", params: [{ /* MevSendBundleParams */ version: "0" | "beta-1.0", inclusion: { block: string, // hex-encoded number maxBlock?: string, // hex-encoded number }, body: Array< { hash: string } | { tx: string, canRevert: boolean } | { bundle: MevSendBundleParams } >, validity: { refund: Array<{ bodyIdx: number, percent: number, }>, refundConfig: Array<{ address: string, percent: number, }>, }, privacy?: { hints?: Array< "calldata" | "contract_address" | "logs" | "function_selector" | "hash" >, builders?: Array<string>, }, }]}
区块前谓词(在 mev_sendBundle
的 inclusion
参数 中指定)定义了捆绑被放置在区块中的要求。它们在捆绑被考虑放置区块之前进行评估。这些参数专门设计为低计算,以便构建者能够高效地过滤合格的捆绑。
搜索者可以指定 block
和 maxBlock
来指示他们的捆绑可以落入的区块。maxBlock
是便于指定一个区块范围的方式,仅需进行一次 RPC 请求,而无需为每个区块发送一次,请求正是 MEV-Boost 的做法。
这个示例指定了捆绑应定位到接下来的 5 个区块,从区块编号 0x105f27 a 开始,到区块编号 0x105f27 e 结束:
{ jsonrpc: "2.0", id: 1, method: "mev_sendBundle", params: [{ version: "beta-1", inclusion: { block: "0x105f27a", maxBlock?: "0x105f27e", }, body: [...], ... }]}
区块后谓词(在 mev_sendBundle
的 validity
参数 中指定)定义了捆绑被纳入区块的链上要求。它们在捆绑被区块建设者放置在前景区块之后进行评估。这些参数定义的限制仅在区块上下文中进行评估,在该上下文中,捆绑的交易已被分配了特定的区块位置,相应地生成独特的 EVM 状态。
区块后谓词为搜索者(和匹配者)提供了硬性保证,关于其捆绑被允许纳入区块的条件——例如,捆绑交易应该获得的最低 MEV 退款 以及退款发往的地方。我们预计未来会添加更多参数,以进一步增强这些偏好的细粒度。
MEV-Share 中最令人激动的功能之一是捆绑组合,它允许搜索者共享关于他们自己捆绑的数据并赚取更多 MEV。共享数据的捆绑可以包括在其他捆绑中,使搜索者可以协作并构建更复杂的策略。例如,你可以在另一搜索者的回跑后进行反向跑,以清理无效交易,或者利用首次回跑带来的新价格来执行另一种策略。从这个意义上说,捆绑组合使搜索者能够参与协作的区块构建。
要使捆绑可组合,只需在 mev_sendBundle
的 privacy
参数 中指定提示。这样将共享捆绑交易的数据,允许其他搜索者将你的捆绑纳入他们的捆绑中。
用户和搜索者还可以指定哪些构建者有权接收他们的订单流(捆绑/交易)。通过指定构建者,用户表明他们希望匹配器与指定的构建者共享其订单流。这可以提高交易被纳入链上的速度,因为更可能指定构建者中的一个有机会在给定位置构建区块。有关这一工作原理的更详细解释,请参见 搜索合并后的竞标章节。
如果搜索者想要进一步限制接收他们捆绑的构建者,还可以指定自己的构建者集合。捆绑上的 builders
参数将是所有提供交易的用户和搜索者所指定列表的 交集。
钱包用户在 Protect RPC URL 中将首选构建者指定为查询参数。搜索者在其 mev_sendBundle
调用 的 privacy
参数中指定构建者。
在 MEV-Share 上进行搜索有两种主要方法:链上搜索 和 概率搜索。
链上搜索意味着 以前由搜索者在链外完成的计算将需要在链上完成,因为所需的数据不会在执行上下文外共享(即智能合约)。例如,与其使用 calldata/日志来确定被交易的代币数量,不如计算该数量的储备差异。
具体而言,搜索者必须编写智能合约,以读取计算其策略所需参数的数据(例如,要进行套利的代币交换数量),计算该数量,并在执行时构建交易来执行其策略。在链上进行这些计算提供了准确的区块内信息,但会增加天然气的使用。
请参阅 simple-blind-arbitrage 了解链上搜索者的示例。
因为链上信息可能有限,搜索者可能需要 为给定机会进行多次并行尝试,每次尝试条件略有不同。例如,如果我们不知道交易方向,我们可以仅发送两个捆绑,每个捆绑假定两种交易方向之一。在这种情况下,一个捆绑将回滚,而另一个(如果正确完成)将不会。使用这样的概率策略可以节省天然气,这使你在作为搜索者时更具竞争力。若没有概率策略,搜索者必须在链上计算其策略参数,这在天然气使用方面可能代价高昂。
注:MEV-Share 的 beta 发布目前仅支持回跑,这意味着当前不支持夹击策略。
要访问 MEV-Share 的订单流,请查询 https://mev-share.flashbots.net。 (你甚至可以在 Web 浏览器中打开此链接!)
要开始在 MEV-Share 上进行搜索, 请查看我们的 示例套利机器人,这是一个链上搜索的入门示例。你还可以使用像 matchmaker-ts 这样的客户端库构建自己的机器人。 Matchmaker-ts 是 Flashbots 的 MEV-Share 匹配器客户端的参考实现,使用 TypeScript 编写。我们预计很快将提供更多语言的客户端,你也可以查看 simple-blind-arbitrage 以获取 js 示例。如果你愿意,也可以直接与 RPC 端点 进行交互。
请参阅 入门文档 以获取有关连接到 MEV-Share 及与之交互的更详细说明。
在这本简短的指南中,我们介绍了 MEV-Share 的基础知识,以及如何为 MEV-Share 订单流设计搜索策略。我们谈到了新的功能,如包含谓词和捆绑组合——这些功能为用户提供了更细粒度的执行保证,使搜索者能够执行更高级的策略。
今天,你可以在 https://mev-share.flashbots.net 访问 MEV-Share 的订单流。你可以使用我们的 示例套利机器人 搜索此订单流,或者使用像 matchmaker-ts 的客户端库创建自己的机器人。
我们希望这篇文章能激发你对在 MEV-Share 上搜索的好奇心。虽然该系统仍处于 beta 测试阶段,但我们期待看到你与其的互动,并渴望收到你的反馈!你可以通过 在我们的 论坛 或 Discord (在新的 #mev-share 频道中打个招呼)与我们取得联系,帮助我们开发更多令人兴奋和创新的功能。查看下面的链接以了解更多信息并开始搜索!
感谢 Robert Miller、Elaine Hu、Vitaliy Drogan 和 Reid Yager 对本文章的审阅和贡献。
- 原文链接: writings.flashbots.net/s...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!