协议演进 / BIP/比特币改进提案 / BIP-94

BIP-94 Testnet 4(测试网 4)

新建一条测试网络取代 Testnet 3,用三处共识微调堵住区块风暴与时间扭曲,让仅靠 CPU 挖矿攻击测试网变得不切实际。本 BIP 目前处于已部署状态。

一、档案卡

档案卡
编号BIP-94
标题Testnet 4
作者Fabian Jahr <[email protected]>
指定日期2024-05-27
层级Applications(应用)
类型Specification(规范类)
状态Deployed(已部署)
阅读版https://bips.dev/94
官方原文https://github.com/bitcoin/bips/blob/master/bip-0094.mediawiki

二、放在哪一族

测试网络族。比特币的测试网供开发者在无真实价值的环境里试验交易、钱包与二层协议;上一代 Testnet 3 已运行约 13 年,问题积累到难以继续使用,BIP-94 因此另起一条新链 Testnet 4 来取代它,而不是在旧链上打补丁。

它与主网的关系是“同规则、异参数”:共识规则与主网一致,仅保留三处测试网特例(见第四节),且截至 2024 年 5 月主网已激活的全部软分叉(最新为 Taproot)从创世块起即强制执行。它的后继者是 BIP-95(Testnet 5,草案),原文写作时 Testnet 4 本身就是为解决 Testnet 3 的区块风暴而生,读它要连同 Testnet 3 的 20 分钟例外规则一起理解。

三、它要解决什么

3.1 Testnet 3 的区块风暴

Testnet 3 有一条“20 分钟例外”:若距上一块已超过 20 分钟,新块可用最低难度(难度 1)出块,本意是让 CPU 也能挖到测试币。但难度调整以周期内最后一块的难度为基准——若最后一块恰是难度 1 的例外块,下一周期难度被钳制在 1–4 之间,于是短时间内可涌出海量区块,即“区块风暴”(block storm)。原文记述:曾有三年份的区块在数周内被挖完,网络几近不可用。

3.2 测试币被当成有价物

Testnet 3 高度已达 250 万以上,区块奖励降至约 0.014 TBTC,挖矿不再能有效分发测试币;同时 Testnet 3 被用于带有欺诈性质的空投,TBTC 被公开买卖,“测试币无价值”这一根本原则被打破。继续修补旧链,不如从创世块重新开始。

四、规则本身

Testnet 4 与主网共识规则相同,仅有以下三处例外。

4.1 20 分钟例外(保留)

除每个难度周期(2016 块)的第一块外:若某块时间戳比上一块晚 20 分钟以上,该块必须使用最低难度 nBits = 0x1d00ffff,不受实际难度约束;周期第一块必须使用实际难度。此规则使 CPU 挖矿在测试网上仍可行。

4.2 区块风暴修复(新增)

难度调整的基准难度,改取上一周期第一块的难度,而不是最后一块;调整倍数仍按周期实际时长计算,并钳制在 1/4 至 4 倍之间。这样例外块的难度 1 不再污染下一周期的难度计算。

4.3 时间扭曲(time warp)防范(新增)

对高度模 2016 等于 0 的块(即每周期第一块):其 nTime 必须不小于前一块 nTime 减 600 秒,且仍须满足既有的中位过去时间(Median-Time-Past)限制。此条借鉴 Great Consensus Cleanup 提案,防止矿工操纵时间戳人为压低难度、放大区块风暴。

4.4 网络参数

原文 Rationale 还记录了被否决的备选:取消 20 分钟例外、提高最低难度、延长例外时延等,均因会断绝 CPU 参与或支持不足而未采纳。

五、谁必须动

普通持币人:主网资产不受任何影响;Testnet 4 上的币按设计无价值。

钱包与应用开发者:需要测试时改连 Testnet 4 的参数(创世块、magic、端口),地址格式与主网工具链可沿用 Testnet 3 的支持再加新参数。

全节点实现者:若要跟随 Testnet 4,必须校验三条新规则并拒绝违规块;只实现 Testnet 3 规则的软件会接受违反 Testnet 4 规则的链,有被分叉出去的风险。

矿工(测试网):仍可借 20 分钟例外用 CPU 出块,但周期第一块必须按实际难度挖,风暴式刷块的路径已被堵住。

六、现在算不算数,以及一个常见误读

状态为 Deployed(已部署):Testnet 4 已作为正式测试网络启用,取代 Testnet 3 成为默认测试环境。它约束的只是测试网这条独立链,主网共识规则没有因 BIP-94 改变分毫。

常见误读:“Testnet 4 的三条新规则是给主网做的升级预演,主网也会照此修改难度规则。”不对。20 分钟例外与风暴修复是测试网特有问题的解法,主网从无 20 分钟例外;时间扭曲防范虽源自面向主网讨论的 Consensus Cleanup 思路,但本 BIP 只把它部署在 Testnet 4 上。

七、延伸

本页内容整理自 bitcoin/bips 仓库与 bips.dev,事实已与仓库核对;解读仅供学习参考。