本文详细介绍了在Solana上开发DeFi应用和交易机器人时,如何理解和应对MEV(最大可提取价值)的问题。文章涵盖了MEV的基本概念、Solana的MEV类型、交易流程、风险以及保护交易的策略。
对于在 Solana 上构建 DeFi 应用和交易机器人的开发者来说,理解 MEV(可最大提取价值)至关重要。MEV 可能会影响用户的交易执行,或威胁到你自己机器人的盈利能力。更高的成本、较低的利润以及网络摩擦是未受保护的 MEV 风险的常见后果。本指南涵盖了 Solana 上 MEV 的基础知识,包括交易流程机制、常见的 MEV 类型以及为网络上构建的开发者带来的日益增加的风险。你将学习到缓解 MEV 负面影响的关键策略,并保护你的交易免受干扰。
可最大提取价值(MEV) 是指通过重新排序、包含或排除用户交易而从用户交易中提取的最大价值。在像 Solana 这样的权益证明网络中,作为区块生产者的验证者有能力决定哪些交易进入该区块以及顺序。这意味着,恶意或追求利益的区块生产者可以重新排序交易(或插入他们自己的交易),以捕获套利利润、抢先用户交易或通过各种方式利用交易的顺序。尽管 Solana 并没有像以太坊那样的公共内存池,但 MEV 仍然存在——通常通过直接节点连接、私有内存池或其他专门基础设施。
对于构建交易机器人或去中心化交易所(DEX)的开发者来说,未考虑 MEV 可能会导致:
2024 年,Solana 上的 DeFi 活动蓬勃发展,与此同时,MEV 也在增长。Messari 展示了 Solana 的真实经济价值(费用 + MEV)随时间的增长:
来源:Messari: Solana 状态 - 2024 年第四季度
尽管大多数 MEV 相对较小,但也有无数例子展示从交易中提取了数万美元(见下面截图),甚至有 百万美元交易 的情况。
来源:Jito - 套利探索者
对于在 Solana 上构建 DeFi 应用和交易机器人的开发者来说,理解 MEV 是至关重要的。MEV 可能会影响用户的交易执行(导致意外滑点或交易失败),甚至影响你自己机器人的盈利能力,如果竞争对手能够拦截或重新排序你的交易。让我们回顾一些关于 Solana 交易流程的基础知识,审查 Solana上常见的 MEV 类型,以及讨论你可以采取的保护交易免受 MEV 影响的措施。
Solana 的交易流程与以太坊有一些关键的不同,这影响了 MEV 的表现:
没有全球内存池: 与以太坊不同,Solana 没有统一的公共内存池来等待包含的待处理交易。相反,Solana 使用 Gulf Stream 协议来直接将交易转发给下一个预期的区块领导者(验证者),在他们生成区块之前。这意味着没有长期存在的可见待处理交易池可供机器人监控网络。每个 Solana 交易都包含一个 recent blockhash,如果未确认,约在 150 个槽之后(约 1 分钟)过期。简而言之,交易要么被领导者快速拾取,要么被丢弃——内存池没有持久性。这减少了 MEV 策略的窗口,比如观察和抢先公共待处理交易,尽管决心坚定的搜索者通过运行自己的节点来减少这一点,以看到流入的交易。
基于股份加权的服务质量(QoS): Solana 根据股份对传入交易流量进行优先排序。验证者将大部分传入能力分配给与股份比例相等的客户/中继。在实际操作中,这意味着来自或通过高质押节点的交易在拥堵期间不太可能被丢弃。基于股份加权的服务质量作为一种 Sybil 抵抗机制:没有股份的垃圾邮件发送者的分组被降级优先级,而通过质押良好的验证者的交易获得更快的处理。
优先费用(地方费用市场): Solana 利用优先费用作为用户可附加的可选附加费用,以在网络繁忙时提高其快速包含的机会。通常情况下,Solana 交易有非常低的固定费用,但在重负荷的情况下(如 NFT 铸造或迷因币交易热潮)导致拥堵,用户可以每个计算单元指定优先费用,基本上是在竞标区块空间。验证者获得这些优先费用的 50%,寡头 oppervlakte 规则燃烧其余 50%,因此,较高的优先费用使验证者更可能包括你的交易。优先费用旨在应对垃圾邮件,并允许时间敏感的交易“跳”到“队列”的前面。在 Solana 网络上,这为每个计算单元每个区块创建了一个地方费用市场。截至 2024 年,优先费用占 Solana 总收费收入的一大部分,凸显用户在拥堵期间确实在进行优先竞标。对于开发者而言,这意味着在一个拥挤的区块中,你的交易很可能需要优先费用才能超越垃圾邮件发送者或竞争交易。
以下是 Solana 开发者应该注意的最常见的 MEV 类型:
套利 是 Solana 上最普遍的 MEV 形式之一。套利通常涉及跨多个交易所以原子方式买卖同一资产。套利者在较便宜的市场上买入,并在较昂贵的市场上卖出,口袋里夹取差价,例如:
- $199 (机器人在 DEX A 以 199 USDC 购买 1 SOL)
+ $200 (机器人在 DEX B 以 200 USDC 卖出 1 SOL)
-------------------------------------------------
+ $1 (机器人净收益 $1)
由于 Solana 允许将多个指令组合到一个交易中,搜索者通常执行原子套利(两个阶段在一个交易中),以确保交易实际上是零风险的。失败的交易将导致买方失去他们的优先费用,因此他们需要平衡机会大小和优先费用市场。
Solana 的套利竞争非常激烈——机器人会 spam 众多交易尝试套利。Solana 的低费用意味着机器人可以发出大量的套利交易;即使大部分失败或没有利润,偶尔的成功也可能获利。事实上,超过 50% 的 Solana 交易实际上是失败的套利尝试(垃圾邮件)——机器人盲目尝试捕捉价格差异( 参考:Solana MEV - 介绍)。虽然这可能是网络拥堵的问题,但通常这意味着价格在各个 DeFi 平台之间能够保持平衡。
三明治攻击 是一种经典的负 MEV 策略,也在 Solana 上出现。在三明治攻击中,受害者用户的交易被夹在攻击者的交易之间:一笔是在受害者交易之前执行,另一个是在其之后执行。假设用户在 DEX 上提交了一笔大规模换币;一个了解此待处理交换的 MEV 搜寻者可以在用户交易之前快速提交自己的购买同一资产的交易(推高价格),然后让用户的大额购买按现在更高的价格执行,并最后立即出售该资产,获得差价。攻击者通过以低价买入并以较高价格卖出获得利润,而受害者在其交换中得到的价格更糟(滑点更高)。
作为开发者或交易者,你应该意识到,如果第三方可以在你的交换未最终确定之前观察到它,他们可能会试图夹击它。用户设置的高滑点容忍度使他们特别脆弱——如果用户允许最多 5% 的滑点,夹击机器人可以利用大部分范围来获利。降低滑点和夹击风险涉及滑点、隐私和排序控制。
清算 是另一个重要的 MEV 机会,尤其是在 Solana 的 DeFi 借贷协议中(例如,Marginfi、Kamino、Save等)。当借款人的抵押品价值低于所需比例(即他们的贷款是欠抵押的)时,该头寸就会被清算。清算人(通常是机器人)可以代表借款人偿还部分或全部贷款,并获得一些折扣的抵押品。这实质上会给清算人带来利润,因为他们以低于市场价的价格买入抵押品。
MEV 搜寻机器人不断扫描链上状态和预言机价格数据,检测即将破产的头寸。当他们找到一个时,他们会争先发送清算交易以夺取奖金。在 Solana 中,由于没有公共内存池,清算机器人确保尽快注意到链上变化(如预言机价格下跌或健康因子跨越阈值),然后立即将清算交易发送到当前领导者。如果多个机器人尝试清算同一个账户,只有第一个成功进入区块的交易才能获得奖励,其他人的交易将失败。清算被视为协议健康的基本保障(可以防止坏账)。
Solana 的 MEV 生态正在发展,Jito Bundles 在 MEV 的提取(和潜在缓解)中发挥了重要作用。运行 Jito-Solana 客户端的验证者参与离线区块建造市场。搜索者直接将交易的捆绑包(及关联的小费支付)发送到这些区块构建者,而不是正常的 Solana gossip 网络。然后,区块生产者将最高支付的小费捆绑包包含在区块中,从中获得小费。这个系统允许 MEV 搜寻者私下执行套利、清算和夹击等策略(他们的交易在被包含之前不是公开的),只要他们付出有竞争力的小费,便能优先处理。结果,这为 Solana 验证者带来了显著的收入。目前,Solana 的恶意 MEV 主要来自私有操作的内存池。
MEV 为 Solana 的开发者带来了多种风险和挑战,尤其是那些构建交易机器人或 DEX 应用的开发者:
验证者的交易重新排序: 由于 Solana 验证者可以在他们生成的块中对交易进行排序,潜在的验证者可以为了自身利益重新排序交易。例如,如果你的 DEX 交易产生了套利机会,验证者可能会在你之前插入他们自己的交易以捕获利润。这可能导致你的交易输出变差,甚至导致其失败(如果机会消失)。交易执行的顺序可以极大影响 DeFi 的结果,而没有保护的情况下,你的交易会受到区块生成者激励的支配。
垃圾邮件和网络拥堵: 大量的 Solana 交易都是由 MEV 驱动的(套利垃圾邮件等)。在争抢时期(如热门的 NFT 铸币或波动市场),你的合法交易正与大量的机器人交易竞争。这可能导致延迟增加或失败率上升,如果你不考虑这一点的话。如果你的交易在高负载的验证者那被拦截,或者你通过未质押的节点提交交易时撞上垃圾邮件暴风,你的交易可能会被丢弃。为了穿透这种噪音,你可能需要附加优先费用。本质上,MEV 活动可能会挤满你交易通行的高速公路,因此如果没有保护,你需要为此做好计划(较高的费用、重试等)。
滑点增加和用户体验问题: 对于 DEX 开发者来说,MEV 可能直接对你的用户造成伤害。用户可能在交易中设置 1% 的滑点容忍度,但由于 MEV(如夹击),他们最终获得的价格可能降低到全额 1%。在极端情况下,MEV 机器人可以推动价格,使得用户的交易失败(超出滑点),而机器人已经先获取了盈利。这可能导致糟糕的用户体验——交易失败或意外的恶劣利率。用户可能会将这些结果归咎于 DEX 或区块链。因此,未能保护免受 MEV 影响可能会削弱用户对此平台的信心。对于你的交易机器人而言,当对手能够插入影响你交易的交易时,结果变得不那么可预测,这会使其可靠执行策略变得更加困难。
总之,在 Solana 中的 MEV 可能导致更高的成本、较低的利润以及网络摩擦。开发者应该意识到这些威胁,并考虑采取措施来缓解这些风险,尤其是在任何交易排序影响金融结果的应用中。
有许多工具可以预防或限制 MEV 对你的交易和用户的负面影响。每个用例都是独特的,因此并非每一工具都适用于你的案例。
保护你的交易:利用 QuickNode 附加组件。 QuickNode 市场提供各种工具以提高交易的落地率并最小化对 MEV 的暴露。 Lil' JIT - Jito Bundles & Transactions 附加组件允许你捆绑交易以实现快速落地顺序执行,包括 MEV 和回滚保护。此外,市场还提供将 MEV 保护添加到现有端点的 sendTransaction
调用的能力,方法是利用 Solana MEV Protection & Recovery 附加组件。该附加组件不仅提供逃避抢先交易的保护,还支持 MEV 恢复(将捕获的非恶意 MEV 归还给你),提升隐私,并确保快速执行。
保护不必要的状态变化:利用交易保护。 Lighthouse 是一个运行时断言 Solana 程序,当发现链上的状态与期望状态偏离时,将会使交易失败。你可以将 lighthouse 指令添加到你的交易中,以确保在交易执行结束时,指定账户的状态符合预定义的期望状态(例如,如果此次交易后,指定的代币余额少于 X 则拒绝整个交易)。这允许比简单滑点更复杂的账户检查,并允许在 Sysvar(槽)上进行断言,这可用于 黑名单验证者——这可以通过利用 getLeaderSchedule
和一个 恶意验证者的列表 来实现。
设置限制:设定滑点并利用限价单。 进行交换时,始终将滑点设置为适合你交易和风险容忍度的水平。假设恶意演员正试图利用你滑点率允许的任何机会。当你的用例允许时,使用限价单设置出售代币的最低价格。查看 QuickNode 的 Metis API,它支持 限价单。
防止交易失败:优化你的交易。 由于 MEV 驱动大批量的交易垃圾邮件流量到网络,你的交易必须正确构造以确保能被纳入到特定区块中。简而言之,你必须请求适当数量的计算单位,提供有竞争力的优先费用,并正确组合你的交易(查看 优化 Solana 交易的策略 或 提升 Solana 上 Jupiter 交易成功率的贴士以获取更多细节)。QuickNode 的 Priority Fee API 和 Send Smart Transaction 方法可以帮助简化此过程。
关注质押。了解你的验证者。 不同的验证者和验证者客户端在处理 MEV 上有不同的方法。尽管这不会直接影响你的交易,但你的质押(和其他人的质押)可以影响整体验证者网络的健康状态和围绕 MEV 的治理。以下是一些资源:Jito 验证者客户端、Marinade:去中心化 MEV、Paladin 验证者客户端。
参与。Solana 改进文档(SIMD)。 Solana 基金会操作一个开源 GitHub 仓库, Solana 改进文档,社区成员可以在此处提出想法并对现有内容进行评论。围绕 MEV、网络费用/奖励等的讨论在持续进行。如果你有意见,请参与进来!
考虑 RFQ 和快速中继系统。 对于高级应用,考虑请求报价(RFQ)系统(例如,JupiterZ),以及 Express Relay,通过私有订单流通道和独立优先拍卖提供 MEV 保护。这些系统直接将协议连接到搜索者,消除验证者从 MEV 提取中,使定价更有效。其关键好处包括私有交易路由、搜索者之间的直接竞争和降低集成成本。
MEV 是在任何区块链上构建时需要考虑的一个重要因素,Solana 也不例外。我们了解到 Solana 的设计改变了游戏规则,但 MEV 仍然通过套利、清算和夹击出现。作为 Solana DeFi 工具的开发者,忽视 MEV 可能导致你应用的用户获得不理想的交易结果,或者你的机器人失去盈利。好消息是,许多工具可以帮助你缓解这些问题,让你重新掌握交易排序的控制权,甚至为自己或用户获取 MEV。
- 原文链接: quicknode.com/guides/sol...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!