头重链还是头重投票:BEP-126 给 BNB Smart Chain 补上的最终性层 图 1
头重链还是头重投票:BEP-126 给 BNB Smart Chain 补上的最终性层 · 图 1

概率最终性的账

BNB Smart Chain 的 Parlia 共识继承自出块者轮值的思路:验证者轮流出块,节点靠比较链的难度总和挑最长链。这种设计给的是概率最终性——被撤销的可能性随确认数增加而指数衰减,但永远不为零。官方 BEP 文档给了一个直白的数字:BSC 有 21 个验证者,按传统要等约三分之二即 14 个区块才能比较放心,对部分关键应用太慢。BEP-126 的解法不是换掉出块机制,而是在其上叠一层投票,把”等概率”变成”等签名”。

投票怎么进块

BEP-126 的链路是这样规定的:验证者认为某个区块应该留在主链上,就用自己的 BLS 私钥对这个区块签一份投票消息;投票被收集进池子;出块者在提议新区块时,如果看到自己的直接父区块已经集齐三分之二以上有效验证者的票,就把这些票聚合成一份投票证明(attestation),塞进新区块头的扩展字段——此时父区块就成了”被证明区块”。投票本身要守三条规则:不得对同一高度发两份不同的票;票的跨度不得互相嵌套;永远投给自己眼中主链的最新块。前两条违规都是可证据化的行为,这正是后文安全性的支点。

验证者 BLS 投票聚合进区块头形成最终性层的流程示意

justified 与 finalized

最终性分两步定义。一个区块是 justified(已证明),当它是根区块,或者它的直接子块头里带着对它的投票证明。一个区块是 finalized(已定稿),当它是根区块,或者它自身已证明且它的直接子块也已证明。落到直觉上:在投票顺利传播的情况下,一个区块通常在两个区块之内定稿——出块者的等待从十四个块压缩到两个块。

分叉选择规则随之改写:包含最高已证明区块的分支才算最长链,哪怕另一条分支的难度总和更高;只有在一段时间内没有任何新区块能被证明时,链才退回按难度和比较的原规则继续生长,保留原来的概率最终性兜底。

还有一处常被忽略的设计:出块活性与最终性活性解耦。出块继续只要一半以上验证者在线(BEP 文本给出 ½×v+1 即 11 个),而已定稿区块号继续增长才需要三分之二以上的投票。也就是说,投票层卡住时链不至于停摆,只是暂时退化为纯概率确认。

证明建立在什么之上

BEP-126 给出了两条理论性质。可问责安全性:两条不同分叉上的区块不可能同时定稿,除非至少三分之一的验证者违反投票规则——违规可被指出,而不是口说无凭。合理性活性:只要三分之二以上的验证者遵守规则,无论此前发生过什么,总能定稿新区块而无需任何人违规。这两条的推导假设恶意验证者少于三分之一、诚实者过半且守规,并且假设投票能在一个出块时间内传播到位。

读法与边界

对用户和集成方,这套机制的实用含义是:链上出现明确标注已定稿的区块高度后,撤销风险在密码学上收敛到”三分之一验证者同谋违规”这个可问责事件,而不是统计意义上的等待。同时要看清边界:投票层是叠加在轮值出块上的,出块权集中度不变;它保护的是定稿后的不可撤销性,不保证交易立刻被包含——排序仍由出块者的收录策略决定;BLS 投票聚合依赖票池传播质量,网络分区时的行为回到协议的概率兜底路径。这套机制自 BEP-156 随主网启用,机制文本以官方 BEP 仓库为准。本文不构成任何投资建议。