软分叉要升级规则,矿工的区块版本字段就是投票器:在 nVersion 里按下约定的信号位,表示”我生产的区块会遵守新规则”。BIP9 把这套机制架在时间戳和难度调整周期上,暴露过两个老问题:区块时间本来就可被矿工小幅操纵,触发点又绑在”某个时间后的第一个调整周期”上,普通参与者根本心算不出截止日。BIP8 是同一套版本位的重排版时钟,起点与超时都改用区块高度;它还多带一个决定性的开关——lockinontimeout,简称 LOT。
六个状态和一段强制期
BIP8 的状态机在 BIP9 的五态之间插进了一个 MUST_SIGNAL。各状态依次是:创世起点的 DEFINED;跨过起始高度后的 STARTED;若启用 LOT 且尚未锁定,进入超时前最后一个调整周期时翻为 MUST_SIGNAL;某个周期内信号块数达到阈值则进 LOCKED_IN,并在满足最低激活高度后转 ACTIVE;到超时高度仍未锁定则 FAILED。阈值的建议值是每 2016 块周期内 1815 块(九成),测试网是 1512 块(四分之三)。起始高度与超时高度都必须是 2016 的整数倍,且两者至少隔两个周期。MUST_SIGNAL 的杀伤力在一条规则上:这个周期内若已有”2016 减阈值”个块没带信号位,后续任何不带信号位的块直接无效——等于把”再装死就作废”写进共识规则,让消极抵制从”能无限拖”变成”只能拖到最后一周期”。

Taproot 用到的那组数字
BIP343 就是这份机制的实战样本,正文只有一组参数:用 BIP8 方式、LOT 置 true,在区块高度 681408 开始用第 2 位信号,阈值九成,最低激活高度 709632,超时高度 760032,最迟激活高度 762048。它明确写道,强制信号只在矿工未能达标时才动用,理由是吸取 2017 年几次部署的教训——提前太久的倒计时反而添乱,但没有强制期的部署等于把否决权无限期交给矿池。现实剧本没有走到强制期:矿工信号自然达标,Taproot 在 709632 区块高度如期激活,BIP343 随锁定完成功成身退,状态转为 Closed。BIP341 的部署章节同样记载了主网参数:超时时间为 2021 年 8 月 11 日、阈值 90%(1815 块)、最低激活高度 709632。
它和BIP9的分野
两条规范共享版本位编码——高三位固定为 001、30 个可用位、每周期重算状态——分歧集中在触发载体:BIP9 用时间戳加调整周期,BIP8 用高度直接划线;BIP8 另加最低激活高度与 MUST_SIGNAL,把”经济软件先升级、再激活”的节奏写进状态机。规范同时提醒:锁定了不等于万事大吉,最低激活高度的本意是给全网上游留出在 LOCKED_IN 期间的升级窗口,设为零则锁定后一个周期即生效,属于激进配置。
阅读升级公告时的提示
下次遇到”某改进进入信号期/锁定/激活”的公告,可以把状态机当字典用:STARTED 只是可投票,LOCKED_IN 是矿层达标但可能等高度,ACTIVE 才改变验证规则,FAILED 表示回到旧规则重来。看到 LOT 或”强制信号”字样,意味着该次部署预期存在抵制且规则层面已备好反制。本文仅解释已公开的部署机制,不构成投资建议;各次部署的具体高度与参数以对应 BIP 文本为准。
工程细节:为什么参数必须落在整周期边界
规范坚持起始高度与超时高度必须取 2016 的整数倍,原因藏在版本位的重算规则里:软分叉状态只在每个难度调整周期的第一个块上结算,若部署参数切在周期中间,同一周期内会出现前半段按旧部署计数、后半段换参数的撕裂账本。同样的洁癖也体现在最低激活高度的建议上——它应当设在预计多数经济活动完成升级之后,让 LOCKED_IN 那段确定期真正发挥给节点追赶留窗口的作用,而不是形同虚设。把这三条放在一起看,BIP8 对 BIP9 的修正其实是一种价值观:倒计时要能被任何人在纸上手算出来,每个状态的入口条件要能由区块头独立复现。2021 年那次激活之所以平静,正是因为这套时钟从启动那天起,所有人都能在浏览器里对着区块高度数出还剩几个周期、阈值线画在哪一块。对参与者来说,这类可复现性本身就是共识过程透明度的一部分,比任何口头承诺都可核对。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。