让区块上限跟着需求自动呼吸:BIP-104「Block75」的自动块大小算法 图 1
让区块上限跟着需求自动呼吸:BIP-104「Block75」的自动块大小算法 · 图 1

「比特币的区块上限应该定多少」这个问题在 2015 到 2017 年间吵出了几十份提案,绝大多数要么写死一个新数字、要么让矿工投票,而 2017 年 1 月 13 日立项的 BIP-104 拒绝了这两种答案。它的绰号叫 Block75,主张是:上限根本不该由人定,应该像难度调整那样自动呼吸——每 2016 个块(约两周)根据上一周期的平均区块填充率重算一次,目标状态是把区块长期维持在七成满。作者 t.khan 的论证起点很朴素:难度调整之所以运转良好,正因为没有人参与决策(除了最初设定十分钟目标),所以它不政治、不争吵,只是对网络资源的响应;区块上限也该如此。

公式只有一行

规范部分短得可以抄在名片上:新上限 = 当前上限 + 当前上限 × (平均填充率 − 0.75)。平均填充率取最近 2016 个区块实际占用的百分比,0.75 是目标值。区块长期超过七成满,上限就往上走;长期冷清,上限自己缩回来。提案对「为什么是七成五」给了四条理由:它处于「块太小(平均全满)」和「块太大用不完(平均半满)」的中间;能吸收最多约三成的短期交易量脉冲;单周期上限增速被自然限制在四分之一以内;手续费平均水平将稳定在提案作者参照的 2016 年年中水平附近。调整周期选 2016 块同样挂靠难度调整的经验:足够灵敏、矿工和节点运营者容易预测、想操纵上限的人也得连续操纵两周的流量才有效果。

让区块上限跟着需求自动呼吸:BIP-104「Block75」的自动块大小算法 图 2
让区块上限跟着需求自动呼吸:BIP-104「Block75」的自动块大小算法 · 图 2

被写进提案的否案

BIP-104 的「其他方案考察」一节本身就是规模辩论的微缩档案。直接写死新上限(2MB、8MB 之类)被否,理由是每一次写死都只是把问题延期——定多大,将来都会再次嫌小,且手续费随流量周期剧烈波动;矿工投票选上限也被否,理由更尖锐:过于复杂和政治化、人对流量反应慢、把决定权交给少数大矿池、由此产生的费率不确定性会伤害生态。这份 2017 年初的文本把「让人的手从参数上拿开」当成了核心卖点,反对者当时的主要担忧则是另一面:算法会把扩容变成既成事实,把本该由社区充分辩论的方向选择外包给一条公式。

激活设计与结局

作为硬分叉,提案对兼容性的处理很直接:所有完整验证区块的代码都要改,不升级的节点将在超过旧上限的块面前掉队。激活门槛是「最近 1000 块中 900 块信号支持」加约一个月(4032 块)宽限期,在下一次难度调整点切换——设计意图里明写着防止单一中小矿池卡住采纳。结局:门槛从未走到,随隔离见证激活、规模之争降温,BIP-104 静默为 Closed。但它的思路没死透:「用反馈控制代替政治决策」后来在别的参数上反复出现,比如以太坊按上一周期 gas 使用率缓调目标值的机制,精神谱系与 Block75 同源;而比特币自己守住的恰恰相反——上限留在人的辩论场上,这本身也是一种被验证过的选择。

快速问答

问:Block75 会上线吗? 答:以当前状态看不会。BIP 已 Closed,且比特币社区此后的路径重心早已转向链下扩容与交易压缩。

问:自动调整上限有没有现实中的近亲? 答:有:难度调整本身就是最成功的反馈控制参数;以太坊的基础费按块间 gas 使用率步进也是同一类思想。

问:七成五这个数怎么来的? 答:提案自述是折中:全满意味着零缓冲、半满意味着浪费空间,75% 留出约三成脉冲余量,同时限制单周期增幅。

常见误区

一是把它和 BIP-100、BIP-101、BIP-102、BIP-103、BIP-107 等同期大小提案混作一谈——那批提案分别走矿工投票、指数增长、写死 2MB、按技术增长曲线、动态上限等不同路线,BIP-104 的独特处是「填充率反馈」;二是以为公式能自动扩容不花钱,上限变大后全节点的存储与带宽成本仍会真实增长,代价只是从争吵现场转移到了电费单上;三是把 Closed 读成「技术上不成立」,它是被社区优先级淘汰,而非被证明不可实现。

风险提示:本文为扩容方案历史科普,不构成投资建议;网络参数演化会影响费率与确认体验,请以当期实际网络状况为准。