区块链/等级 VIII · Meme币时代/8.2 Solana/课程 4
优先费、MEV与Jito
毫秒之争的拍卖:费用如何买到排序,MEV 又如何利用这一点
材料一个可显示计算单元和费用的 Solana 区块浏览器Solana 费用相关文档(solana.com/docs)
好奇
- 为什么支付更高优先费的交易并不一定比支付较低优先费的交易更先执行?
- 验证者如何在不向网络其他节点暴露自身意图的情况下,从精确的交易顺序中获利?
- 究竟是何种机制能让用户在承受一定价格滑点的同时,限制“三明治攻击”带来的最大损失?
探索
- 每笔 Solana 交易都需要为每个签名支付 5,000 lamport 的基础费用。这一固定成本用于覆盖验证交易并将其写入账本所需的计算工作。不过,仅凭基础费用并不能决定交易何时执行。在网络活动高峰期,验证者收到的交易数量会超过它们在 400 毫秒时隙内所能处理的数量。为了决定优先打包哪些交易,验证者会参考另一个参数:优先费。
- 优先费按每个计算单元(CU)的价格(以 micro-lamport 计价)乘以该笔交易申请的 CU 总数来计算。这形成的是局部拍卖,而非全局拍卖。围绕某个热门程序(例如交易量很大的去中心化交易所)的拥堵,主要会推高写入相同账户(例如某个繁忙的池)的交易费用;其他账户上的活动受到的影响要小得多,不过全网拥堵仍会普遍推高费用。
- 最大可提取价值(MEV)源于对区块内交易进行重新排序或选择性打包的能力。套利者通过在同一时隙内执行买卖操作,利用不同池之间的价格差异获利。清算机器人会监控抵押率,一旦突破阈值就触发清算。三明治攻击则是一种更具侵略性的手段:机器人发现一笔待处理的大额交易后,立即在其之前下买单推高价格,让受害者的交易以抬高后的价格成交,随后立刻卖出自己的仓位以赚取价差。
- Solana 大部分质押所运行的 Jito 验证者客户端,增加了一条独立的交易排序通道。Jito 捆绑包(bundle)将必须以原子方式一起打包的交易组合在一起;每个捆绑包最多包含五笔交易,如果其中任何一笔失败,整个捆绑包都会被丢弃,永远不会上链。这使搜索者(searcher)能够安全地执行复杂的多步骤策略。用户可以直接为这些捆绑包附加小费,在捆绑包赢得拍卖时为打包和排序付费。小费拍卖独立于常规优先费运作,为高价值的交易排序形成了一个单独的市场。
- 2024年3月,Jito关闭了其公共内存池,以降低待处理交易的可见度,从而减少针对普通用户的三明治攻击机会。虽然这一举措遏制了部分公开的抢跑行为,但老练的搜索者与验证者之间的私下沟通渠道依然存在。优先费无法防范三明治攻击,因为机器人总能出价高于受害者的费用,从而抢在其之前排序。滑点限制规定了价格在交易失败前可朝不利方向变动的最大幅度,这限制了三明治攻击所能榨取的利益,但无法阻止攻击尝试;一些路由还提供带有 MEV 保护的提交方式。
- 模拟交易可以显示其计算单元消耗,让发送方优化费用计算。高估 CU 会浪费 lamport;低估则会导致执行失败。钱包和聚合器通常会从 RPC 节点获取近期费用的百分位数据来自动完成这一步。在高速交易平台上交易的用户必须应对这种竞争环境——毫秒之差和出价高低决定了执行质量。其中的权衡很明确:更高的费用能提高被打包的概率,但无法保证免受复杂的市场操纵。
关键事实
- 任何 Solana 交易签名的基础费用均为固定的 5,000 lamport。
- 优先费按每个计算单元的 micro-lamport 数乘以申请的 CU 数量来计算。
- Solana 的手续费机制主要呈局部性特征:某个繁忙账户的拥堵状况主要会导致与该账户相关的交易费用上升。
- Jito 捆绑包(bundle)是全有或全无的:只要有任何一笔交易失败,整个捆绑包就会被丢弃。
- 为防范三明治攻击,Jito于2024年3月关闭了其公共内存池。
- 滑点限制决定了“三明治攻击”能从一笔交易中获取的利润上限。
练习 九、六、三、一
9收集列出 Solana 上 9 种不同的交易类型(例如普通转账、兑换、铸造、关闭账户)。注明它们典型的计算单元(CU)范围以及基础费用要求。
6归类根据对 MEV 的敏感度,将这 9 种交易分为 6 类:高风险(大额兑换)、中风险(铸造/创建)、低风险(转账/关闭账户),或原子化捆绑包。
3提炼将这 6 组归纳为用户愿意支付高于基础成本的优先费的 3 个核心原因。
1凝结写一句话,解释为什么支付高额优先费并不能保证免受三明治攻击。
事实核查
日期、数字及数据均依据下方列出的已发表资料进行核实。