协议演进 / BIP/比特币改进提案 / BIP-101
BIP-101
把 1MB 固定上限换成随时间增长的曲线:2016 年 1 月从 8MB 起步、每两年翻倍、段内线性增长,2036 年封顶于约 8.192GB。本 BIP 目前处于已关闭状态。
一、档案卡
| 编号 | BIP-101 |
|---|---|
| 标题 | Increase maximum block size |
| 作者 | Gavin Andresen <[email protected]> |
| 指定日期 | 2015-06-22 |
| 层级 | Consensus (hard fork)(共识(硬分叉)) |
| 类型 | Specification(规范类) |
| 状态 | Closed(已关闭) |
| 阅读版 | https://bips.dev/101 |
| 官方原文 | https://github.com/bitcoin/bips/blob/master/bip-0101.mediawiki |
二、放在哪一族
2015 年区块大小之争的硬分叉提案组,背景分类见 BIP-99。同组对照:BIP-100 把上限交给矿工逐期投票;BIP-102 只做一次性 2MB;BIP-103 按年增 17.7% 的慢曲线爬到 2063 年;BIP-104 按满载率自动调节。BIP-101 是这组里步子最大、时间表最激进的一份:起点直接跳到 8MB,且以每两年翻倍的指数曲线增长——原文 Rationale 自述,部署方案借自 Jeff Garzik 的 BIP-100,但把上限决定方式从投票换成了可预知的日历。它后来成为 Bitcoin XT 推动的扩容路线核心,也是这场争论中知名度最高的一份文本。
三、它要解决什么
原文 Motivation 只有两句,要点是:网络交易量在持续增长,很快会撞上“每十分钟一兆字节”的 1MB 上限;提高上限,就是减轻这一上限对比特币采用与增长的压制。与 BIP-102 的“先解燃眉之急、免得反复争”不同,BIP-101 在“考虑过的其他方案”里明确批评一次性扩容:测试与部署的成本与长期方案一样高,而新上限一到顶,同样的争论还要再来一遍。因此它索性一步给出 20 年曲线。原文同时用整节篇幅正面回应反对意见——全节点减少、挖矿的带宽成本、大块攻击、UTXO 集年增约 100% 等——立场是:节点减少主因在轻钱包便利与设备形态迁移,扩容带来的采用增长反而能让网络分布到更多司法辖区;带宽在挖矿盈利方程中只是众多变量之一。
四、规则本身
4.1 增长曲线(按区块时间戳计算)
激活后,主网最大块大小由区块头的时间戳决定,照原文伪代码:
- 起点:2016-01-11 00:00:00 UTC(时间戳 1452470400)时为 8,000,000 字节;
- 此后每 63,072,000 秒(两年,不计闰年)翻倍一次;两次翻倍之间,按时间戳在段内线性插值增长;
- 到 2036-01-06 00:00:00 UTC(时间戳 2083190400)后封顶,最大值固定为 8,192,000,000 字节(即 8MB × 2^10)。
用时间戳而非高度的理由,原文写明:时间戳在每个区块头里,节点拿到区块头即可知该块的上限,不必等交易数据下载完。参数依据同样写在 Rationale 里:8MB 起点来自用参考实现实测大块、并听取带宽受限矿工(特别是防火墙后的中国矿工)的反馈;翻倍周期取自 CPU、存储与带宽的长期增长趋势;20 年封顶是因为指数增长不可能永远持续,若趋势中断,矿工共识可用软分叉把上限再收紧。
4.2 部署(算力超多数投票)
沿用类似 BIP-34 的算力投票,但设最早激活时间 2016-01-11:当最佳链上连续 1,000 块中有 750 块的版本号置起了第 1、2、3、30 位(十六进制 0x20000007),即达成激活;激活时间取第 750 块的时间戳再加两周(1,209,600 秒)宽限期;若超多数在 2016-01-11 两周多以前就达成,激活时间仍定在 2016-01-11。选 75% 而非更高,是为了不让单个大矿池握有事实否决权;版本号只用于激活,激活后上限只按 4.1 的时间公式走。测试网参数提前且宽松:2015-08-01 起,100 块中 75 块即触发,宽限期 24 小时。
4.3 兼容性
原文 Compatibility 明言:这是硬分叉,全量校验区块的代码必须在激活前升级,否则有拒绝含大于 1MB 区块之链的风险;SPV 软件不受影响,除非它对默克尔分支深度做了基于最小交易与最大块大小的假设。
五、谁必须动
普通持币人:自跑全节点者必须在激活前升级,否则会停在旧规则链上;只使用轻钱包者不直接受影响。
钱包开发者:SPV 实现原则上无需改动,但须核查自家对默克尔证明深度的假设是否写死了 1MB 量级。
全节点与矿工:节点要实现按时间戳计算上限的逻辑;矿工要在投票期以指定版本位出块表态,激活后按新上限组块。原文部署设计强调给矿工、商家与跑全节点的终端用户都留足升级时间。
共识层:1MB 常量被时间函数取代,且数值路径在激活时即完全确定——这正是它与 BIP-100 的根本差别:上限不再取决于此后任何人的投票。
六、现在算不算数,以及一个常见误读
状态为 Closed(已关闭):提案未获采用、已经关闭。它设定的 2016-01-11 激活点从未在主网到来,1MB 上限后来经 SegWit 以区块权重方式绕开,路线与本提案完全不同。
常见误读:“BIP-101 就是把块改成 8MB。”不对。8MB 只是 2016 年的起点值;提案的本体是一条 20 年指数曲线——每两年翻倍、最终到约 8.192GB。只记住 8MB,等于把同组 BIP-102 的一次性小步与它混为一谈,也就理解不了当年争论为何如此激烈:用 BIP-99 的话说,无争议是硬分叉部署的前提,而这条曲线的幅度恰恰是争议本身。
七、延伸
- 阅读版:https://bips.dev/101
- 官方原文:https://github.com/bitcoin/bips/blob/master/bip-0101.mediawiki
- 相关:BIP-99 分叉分类、BIP-100 矿工投票、BIP-102 一次性 2MB、BIP-103 随技术增长、BIP-104 Block75
- 仓库总目录:https://github.com/bitcoin/bips
