MEV-Boost 是怎么选块的?中继竞价、超时与失手边界 图 1
MEV-Boost 是怎么选块的?中继竞价、超时与失手边界 · 图 1

一个走 MEV-Boost 出块的以太坊验证者,每个轮到的时隙都在做一次几十毫秒内完成的采购决策:从若干中继拿回多个区块头报价,挑出价最高的那个签下名字。这套流程出自 Flashbots 维护的开源边车程序,README 把它的定位写得很清楚——运行在验证者侧、接入一个有竞争的区块建造市场的中间件,是提议者与建造者分离(PBS)的早期落地实现。本文只按这份文档拆解机制,不评价任何中继的经营。

边车在出块链条里的位置

机制示意(图片由 Agnes 生成,非产品界面或链上数据图)

文档把权益证明验证者的标配数成三件软件:验证者客户端、共识客户端、执行层客户端。MEV-Boost 是第四个——挂在信标节点旁边的边车,常见部署是与信标客户端同机,默认监听 localhost 的 18550 端口,多台信标节点可共用一个实例。链条上游是建造者:他们组织交易流、优化 MEV 提取,把成品区块交给中继;中继把多个建造者的区块聚合起来,按给提议者的小费高低选出最优块。一个 MEV-Boost 实例可以同时配置多个中继,到点向各家询价,取最高报价交给共识客户端,后者把中标区块提议给全网。整条流水线的卖点在 README 的动机部分:放任 MEV 不管,竞争会催生与出块者之间的私连通道,侵蚀中立性与抗审查性;把建造外包给公开市场,是想让排序权力分散一点。

MEV-Boost 是怎么选块的?中继竞价、超时与失手边界 图 2
MEV-Boost 是怎么选块的?中继竞价、超时与失手边界 · 图 2

超时与门槛:毫秒预算怎么分

边车的行为由一组超时参数塑形。文档列出的默认值是:向中继请求区块头 getHeader 限时 950 毫秒,请求完整区块 getPayload 限时 4000 毫秒,注册验证者 registerValidator 限时 3000 毫秒。这组数字解释了边车为什么把决策拆成两段:先用不到一秒拿轻量的区块头做比较,签约之后才要完整载荷,给执行层留足校验时间。-min-bid 是另一道闸:设定门槛(文档示例为 0.06 ETH)后,若建造者网络没有一笔报价达到该值,MEV-Boost 干脆不返回任何竞标——验证者这条时隙就按回退路径走本地出块,宁可少赚也不陪跑。-relay-check 则在启动和状态接口调用时探一次中继健康状况,避免带着坏配置空转。

信任边界:中继是什么角色

机制示意(图片由 Agnes 生成,非产品界面或链上数据图)

README 对中继的表述值得逐字读:中继聚合多个建造者的区块,验证者应当只连接可信中继(trusted relays)。它站在信息最敏感的位置——既看到建造者提交的完整区块内容,又拿着验证者的注册信息,还掌握小费承诺与实际出块的先后。文档因此给出第三方中继清单作为参考起点(Ethstaker 社区与 Lido 研究论坛各维护一份),同时明确这些选择不由 Flashbots 背书。换句话说,MEV-Boost 解决的是提议者不必自建建造能力的问题,但没有把中继变成可以省略的信任节点;抗审查讨论里对中继扣留特定交易的担忧,也落在这个环节。

失手会发生什么

把上面几条合起来看故障面:报价超时、所有中继都失联、或 min-bid 拦截了全部竞标时,边车拿不出可用区块头,出块链条退回验证者自己的执行客户端本地构建的空闲交易块——时隙不会白白丢掉,只是放弃了外包带来的溢价。另一类边界发生在签约之后:区块头签了名、getPayload 却在四千毫秒预算外失败,这一槽就带着已承诺的报价空转,这也是文档把 payload 超时写得比 header 宽十倍的原因。运维排查动作基本都在日志与默认端口 18550 的健康接口上:先看是哪家中继缺席、再看是哪一段超时。参数与默认值随版本演进,运维前请以当期 README 与发行说明为准。本文涉及收益机制的部分只描述分配逻辑,不构成投资建议,也不对任何中继、建造者的经营状况作判断。