单线程 EVM 的瓶颈不在「Solidity 写得慢」,而在执行语义默认串行、共享状态上的锁竞争无处安放。多引擎并行要回答的是工程问题:如何把一笔区块里的交易分到多个执行上下文,又在冲突时不把整块推倒。行业路线对照见 《并行执行的三条路线》;本文聚焦 Bitroot 侧的多引擎设计。理论骨架见 《OCC 入门》,避免在此重讲数据库四阶段。
设计目标:并行,但结果可重放
多引擎架构通常坚持几条原则:
- 每个引擎有相对独立的执行上下文,减少全局大锁。
- 状态按账户或存储槽分区,引擎优先触达本地分片,降低跨引擎同步。
- 调度器做预分析与批处理,把可能相关的交易尽量放在同一引擎或同一批次,减少乒乓。
- 最终提交必须等价于共识给定顺序下的串行执行(确定性重放)。
共识侧如何尽快给出顺序,见 《Pipeline BFT 与执行解耦》。执行侧乐观假设与回滚细节,见 《乐观并行化机制》。架构总图见 《并行 EVM 架构概览》。
调度:不是均匀撒交易
朴素做法是 round-robin 分发交易,热点合约一出现就会跨引擎打架。更合理的调度会估计:
- 复杂度与 gas 量级(粗粒度);
- 可能触及的状态分区;
- 优先级与批次亲和性(相关交易同批,减少跨引擎状态同步)。
调度本身也有开销:预分析过粗会误判,过细会变成串行瓶颈。实践中常见折中是「静态启发 + 运行时监控」:先按启发式分组并行,再用冲突检测纠正。DeFi 等热点模式为何容易打穿并行度,见 《并行 EVM 工作负载热点》。
状态分片:并行之后的下一堵墙
执行并行之后,单一状态树与单机内存仍会成为上限。分片把状态空间切开:分片内并行,跨分片走显式消息或异步提交。大对象适合链下存、链上哈希,减轻全节点存储。分片不是免费午餐——跨分片原子性与开发者心智成本都会上升,需要在协议里写清,而不是留给应用碰运气。
跨分片可组合 DeFi 往往是压力测试:路由连续触碰多个池时,写冲突与跨分片协议延迟会叠加。产品层面如何承认这一边界,见 《Bitroot 定位》。
冲突检测:把爆炸半径收小
乐观并行的代价是冲突。Bitroot 公开材料强调三阶段检测:
- 执行前:依赖/读写启发,尽量避免明显冲突进同一并行窗口。
- 执行中:版本或读写集监控,尽早中止无效路径。
- 执行后:状态根一致性校验,兜住漏网与实现缺陷。
目标不是「零冲突」,而是「冲突时可选择性重执行」。与 Aptos Block-STM 等「执行中协作调度」同属乐观家族,但实现细节不同;不要把不同项目的测试 TPS 直接横比。
如何读「引擎数 ↔ TPS」曲线
测试环境中,增加引擎数量往往先近似线性加速,随后因冲突率上升而弯曲。公开测试网口径曾出现过:较少引擎时数千 TPS 量级,更多引擎时数万 TPS 峰值、确认时间压到亚秒级等描述——均依赖硬件、合约类型与冲突设定,是工程观测而非主网 SLA,也不构成收益承诺。读数时建议同时看:实际并行度、冲突率、重执行占比、延迟分位。术语见 《性能指标术语表》。
EVM 兼容边界(字节码、预编译、工具链)决定「多引擎」是否对现有合约透明,见 《EVM 兼容意味着什么》。验证者硬件与地理分布如何反噬并行红利,见 《去中心化与性能的权衡》。
和共识层如何对齐节奏
多引擎再快,也消费的是共识已经排好的顺序。若执行长期追不上出块,会堆积未确认状态视图,应用侧体感变成「出块很快但查询/依赖交易仍慢」。因此披露时应同时给出执行滞后与确认分位,而不是只报引擎峰值。Pipeline 侧见 《Pipeline BFT 与执行解耦》;产品坐标见 《Bitroot 定位》。
对应用开发者,多引擎几乎应当是透明的:不需要改 Solidity 语法去「声明并行」。真正要改的是状态布局与交互模式——减少全局单点计数器、避免所有用户挤写同一 slot。否则引擎再多也只能在冲突检测里忙着重执行。工具链与兼容边界见 《EVM 兼容意味着什么》;谁该先读这类材料见 《谁该读并行 EVM》。
缓存、预取与跨引擎通信税
多引擎之外,分层缓存与状态预取决定「引擎是否真的在干活」。本地分片命中率高时,并行接近 CPU 宽度;跨引擎频繁拉取远程槽位时,通信税会把加速比压扁。调度器若只看 gas 而不看分区亲和性,就会系统性制造跨引擎流量。
实践中应监控:跨引擎读写比例、锁等待或版本冲突次数、以及分片间消息队列深度。这些指标比单独的引擎数量更接近真实产能。与共识解耦后,执行层追赶慢会表现为确认到状态根的间隙拉长,用户感知仍是「链变慢」。总览见 《并行 EVM 架构概览》。
对合约作者的可见影响
多数情况下,多引擎应对 Solidity 作者透明:不需要改写法即可部署。仍有间接影响:依赖精确块内时序或「同块后半段必看见前半段写入」的假设,在并行投机窗口下更脆弱;开发者应依赖明确的事务边界与事件,而不是未文档化的调度巧合。
工具链侧,trace、gas 剖面与调试器需要能解释重执行路径,否则线上事故难以复盘。谁该优先阅读并行材料,见 《谁该读并行 EVM》。兼容边界见 《EVM 兼容意味着什么》。
多引擎设计的评价标准应是:给定冲突率曲线,加速比是否可解释、重执行是否可观测、以及对存量合约是否保持语义兼容。满足这三点,才谈得上工程上的并行 EVM,而不是演示用的多线程解释器。
观测性:没有度量就没有并行
生产级多引擎需要暴露:每引擎利用率、跨分片消息速率、冲突检测各阶段命中次数、重执行交易占比,以及从共识序到状态根的时间分布。缺少这些曲线,运维只能看到「TPS 掉了」而无法判断是调度、热点合约还是状态 I/O。把观测性当作功能的一部分,而不是上线后的仪表盘装饰,是并行执行能否运营的前提。
调度、分片与冲突检测必须一起看:只加引擎不加观测,只会更快地重复同一类故障。把冲突率曲线纳入发布说明,是对开发者与验证者最小的诚实。
公开测试网数字请标注引擎数、负载类型与冲突率,并声明非主网承诺、非投资建议。
小结
多引擎并行把「能不能多核跑 EVM」落成调度、分片与冲突控制三件套。它放大的是低冲突与可分区负载的吞吐;在 AMM 共享池一类热点上,再多引擎也会被迫近似串行——这是工作负载问题,不是再加一句营销能消掉的。
