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

BIP-106 动态调控的比特币区块大小上限

用上一难度周期的实际区块大小——第二方案再加上矿工手续费收入的变化——自动决定区块大小上限翻倍、减半或按比例调整,取代固定 1MB。本 BIP 目前处于已关闭状态。

一、档案卡

档案卡
编号BIP-106
标题Dynamically Controlled Bitcoin Block Size Max Cap
作者Upal Chakraborty <[email protected]>
指定日期2015-08-24
层级Consensus (hard fork)(共识(硬分叉))
类型Specification(规范类)
状态Closed(已关闭)
阅读版https://bips.dev/106
官方原文https://github.com/bitcoin/bips/blob/master/bip-0106.mediawiki

二、放在哪一族

2015 年区块大小之争中的“动态上限”一族,与 BIP-105、BIP-107 是近亲,但信号来源不同:

BIP-105:信号来自矿工付费投票,取中位数

BIP-106:不投票——信号直接来自链上已经发生的事实,即上一周期的实际块大小(第二方案再看手续费总额)

BIP-107:先按时间表扩容,之后按“块有多满”小步上调

原文在“考虑过的其他方案”中列出对照对象:Jeff Garzik 的 BIP-100、Meni Rosenfeld 的弹性区块上限(elastic block cap)、Gavin Andresen 的 BIP-101、Pieter Wuille 的 BIP-103,以及 Poon 与 Dryja 的闪电网络论文。它的立场是:上限应当像难度一样,能随需求自动升降。

三、它要解决什么

动机只有一条主线:采用率上升,交易量必然增长;若 1MB 上限不改成能随网络需求自我调整的弹性上限,采用就会受阻,比特币的增长会被“卡住”(choke up)。原文附了一张自创世以来的平均区块大小变化图作为背景。

与 BIP-105 担心“矿工投票可被操纵”不同,BIP-106 的出发点更简单:需求会自己体现在块的大小里,那就让上限跟着实际块大小走,不需要任何人表态。

四、规则本身

原文给出两个并列方案,二选一。

4.1 方案一:只看上一周期的块大小

考察上一个难度周期中前 2000 个区块的大小:

设计类比难度调整:块持续接近上限说明需求真实存在,块普遍很空则上限下调,避免少数区块就扫空内存池。

4.2 方案二:块大小与手续费一起看

把最近 2 个难度周期切成前后两段各 2008 个区块(原文注明:后一段实际包含前一难度周期的 8 个区块),分别汇总两段的区块大小总和与交易手续费总和。只有当三项条件同时成立时才调整:

加手续费条件的目的,是保住挖矿收益的稳定性:手续费收入没有增长、没有形成手续费压力时,就不放行扩容。原文认为,因为调整幅度与平均块大小的变化同比例,任何一方都很难操纵(game)这个机制。

4.3 兼容性与部署

五、谁必须动

普通持币人:无直接操作;交易格式与地址不变。

钱包开发者:原文未提出钱包侧的专门改动。

全节点与矿工:必须升级到新共识规则——按周期统计块大小(与手续费)并执行新的上限;不升级的完整验证节点面临拒绝新链的风险,原文在兼容性一节明确写了这一点。

共识层:固定常数 1MB 被一个由历史链上数据计算出的变量取代,且上限可以向下调——向下调这一点在同族提案中并不多见。

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

状态为 Closed(已关闭)。它没有在比特币主网激活。原文只给出了两个候选公式而没有收敛为一个确定规范,部署一节也只有一句原则性表述;作为档案,它记录的是“让上限像难度一样自动调整”的思路,而不是一套曾被执行的规则。

常见误读:

“BIP-106 就是让区块大小翻倍的提案。”

不对。翻倍只是方案一在“多数块超过上限 90%”时的一个分支结果;同一方案在块普遍很空时会把上限减半,方案二更是按块大小与手续费的实际变化比例连续调整。它的主题是动态调控,不是某一次扩容数字。

七、延伸

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