BNB New L1:排序很快,结果很慢
目录
New L1 是什么
BNB Chain 正在做一条新的 EVM L1,面向对延迟敏感的场景:交易、支付和 AI agent。它 200 ms 出块,没有全局内存池,按声明的 gas limit 收费,并原生支持账户抽象和隐私池。
它还很早期。目前只有内部 devnet:没有公开 RPC、测试网和主网,链 ID 也没定,公开的只有官方文档。下面的内容都来自这些文档,核对日期是 2026-10-26。
一句话概括它的设计: 共识来自 BSC,执行模型来自 Monad,账户抽象来自 Tempo。 前两者分别决定了交易多快落地、大家多快知道交易的结果。这其实是两个不同的数字。
共识:BSC 的 Parlia,不是 MonadBFT
New L1 沿用了 BNB Smart Chain 的 Parlia(PoSA)共识,加上 BLS 快速最终性。
- 最多 64 个验证者按顺序轮流出块,每人连出 16 块(每轮 3.2 s)。
- 验证者对链头块签 BLS 票。收齐 2/3 的票后,下一个出块者把它们聚合成一个证明,写进自己的块头。
- 通常一个块在下一块时 justified,再下一块时 finalized,200 ms 出块下约 0.5 s。
- 投票只针对块里交易的 顺序 ,不针对执行结果。
所以它是一个更快的 BSC,而不是 Monad。MonadBFT 是 HotStuff 系的流水线 BFT:每一轮按质押换 leader,两轮(600 ms)最终。Parlia 则是一个出块者连续出一段块,再通过单独的投票步骤做最终性。
BNB 说 Parlia 只是当前的默认实现。它正在评估 Minimmit 作为「共识 2.0」,这是 Commonware 提出的两轮最终性 BFT 协议。Tempo 用的 Simplex 共识也出自 Commonware,所以如果换过去,New L1 的共识会更接近 Tempo 这一系。
| New L1 | BSC | Monad | Tempo | |
|---|---|---|---|---|
| 共识 | Parlia PoSA + BLS | Parlia PoSA + BLS | MonadBFT | Simplex BFT |
| 出块者 | 轮值,每人连出 16 块 | 轮值 | 每轮换 leader | VRF 随机选 leader |
| 出块间隔 | 200 ms | 0.45 s | 最短 300 ms | 约 600 ms |
| 最终性 | 约 0.5 s | 约 2 块内 | 600 ms | 确定性,亚秒级 |
| 执行 | 异步,滞后 D 块 | 同步 | 异步,滞后 3 块 | — |
| 计费 | 按声明的 limit | 按实际用量 | 按声明的 limit | 用稳定币支付 |
执行:Monad 的做法
执行这一侧,New L1 和 Monad 几乎一样:
- 共识只排序,不执行交易。
- EVM 在之后执行第 N 块,结果(state root、回执、日志)写进第 N+D 块的块头。
- D 在 1 到治理设定的上限之间自适应,每块最多变化 1:链空闲时接近 1,负载高时变大。BNB 没有公布上限。Monad 的 D 固定为 3。
- 出块者排序时不知道交易实际会用多少 gas,所以你付的是
tip × gas_limit,和 EVM 实际消耗无关,也不退款。Monad 按 limit 收费也是这个原因。 - 准入时检查的是余额减去你所有在途交易的花费,相当于 Monad 的 reserve balance 规则。
好处是吞吐量:出块从不等待执行,区块 gas 上限也不用迁就最慢验证者的执行速度。
一笔交易的时间线
一笔进入第 N 块的交易会经历这些阶段:
| 阶段 | 发生在 | 距第 N 块的时间 |
|---|---|---|
| preconfirmed | 出块者流出包含它的签名子块 | 约 20 ms,可撤销 |
| ordered | 第 N 块被导入 | 块内 |
| order-finalized | 第 N+2 块 | 约 0.5 s |
| executed | 你的节点执行完第 N 块 | 落后最新块 D 个块 |
| execution-finalized | 第 N+D 块在第 N+D+2 块时最终 | 约 (D + 2) × 200 ms |
最后一行是我按文档设计推算的,不是官方数字:D 为 1 时约 0.6 s,D 为 3 时约 1 s。负载越高越长,而且没有公开的上限。
顺序最终很快,慢的是结果。
t+0 落地是可能的
如果你的策略是对链上事件做反应,关键问题是你的交易能不能和触发它的交易落在同一个块里。在 Solana 上这很常见:机器人读 leader 的 shred,在同一个 slot 内就能上链。
在 New L1 上,落地只需要被排序,而排序只做几项轻量检查:签名、nonce 和上面那个余额检查,不需要等待执行。所以 t+0 是可能的,前提是你在同一个 200 ms 块内看到触发交易。这取决于你从哪里看:
- 标准 RPC (
eth_getLogs、回执、latest)返回的是已执行的状态,比最新排序的块落后 D。靠它的机器人最早也只能在 t+D 落地,比 BSC 还慢。 - 子块流 (
newl1_subscribeSubBlocks)在出块者打包触发交易后约 20 ms 就能看到它。机器人如果直接根据触发交易的 calldata 做决定,不等状态,再把交易直接发给当前出块者,就能紧跟在它后面落地。子块只追加不重排,而且同一个出块者会连续出块 3.2 s,目标不会变。
没有公开内存池,所以这一切都要经过出块者。
但还没有人能读到结果
t+0 落地不代表别人在 t+0 就能 用 这笔交易。它的回执、日志和它改变的余额,要等执行完、也就是 D 个块之后,才能通过 RPC 看到。等回执的钱包会比链上实际确定结果晚几百毫秒才显示成功。想先看到买入成功再卖出的机器人,也得等。
有两点能缓解:
- 顺序确定时,结果就确定了。 执行是确定性的,第 N 块的顺序一旦最终,结果就不会再变,只是还没公布。自己跑高速执行器的人可以立刻知道结果,只有依赖公共 RPC 的客户端要等 D 个块。
- 可以不等结果直接连发。 发后续交易不需要先拿到前一笔的结果。排序保证它在前一笔之后执行,前一笔失败的话它会回滚。代价是:回滚的交易照样付全部 gas limit。另外,前一笔交易会收到的 BNB 不能用来付下一笔的 gas,因为准入检查只扣在途花费、不计在途收入。
所以这个设计造成了不对称:自己跑执行的玩家在 t+0 就能看到结果,用标准 RPC 的人要晚 D 个块。Solana 和 BSC 的出块者在打包时就执行交易,交易一上链结果就有了。Monad 和 New L1 有同样的差距。
对开发者意味着什么
- 钱包: 预确认或已排序都不代表成功。把「已打包」和「已成功」分开显示,资金要等执行最终后再算到账。
- 机器人: 盯子块,不要盯日志。需要比 RPC 更早拿到结果,就自己跑执行。gas limit 要设紧,多留的部分会被全额收费。
- 从 BSC 迁移的合约:
block.number每秒前进约 5 次,block.timestamp大约连续 5 个块相同,block.prevrandao是时间戳的毫秒部分,不是随机数。 - 延迟测量: 要报两个数。一个是交易什么时候落地(按排序头算 t+N),一个是结果什么时候可见(按执行头算 t+N,或者回执时间)。一个在 t+0 落地的产品,对只看 RPC 的用户来说仍可能显得慢。
账户抽象来自 Tempo
未解答的问题
- 真实负载下 D 会多大。它决定了结果晚多久,而 BNB 还没公布上限。
- 吞吐量。文档没有给出 TPS 或每秒 gas,并行执行也还在设计中。
- 出块者在一个块里最晚还接收多晚的交易,以及到出块者的网络延迟。这决定了 t+0 是真能做到,还是只在理论上可行。
- 出块者能看到订单流,怎么防止它抢跑。文档只说没有全局内存池,没有说明对出块者的约束。
这些在有公开网络之前都没法测。