术语表 /挖矿与共识
最大区块大小
又称区块大小限制、区块大小上限。
- 最大区块大小是什么?
- 最大区块大小是单个比特币区块可承载数据量的上限,自 SegWit 起,这一上限是400万权重单位的预算,而不是字节数。
规定于 BIP-141。
区块不能随需求而增大,这是有意为之。Bitcoin Core 将一个区块限制在4,000,000权重单位以内,这一预算对见证数据给予折算,对于见证数据较多的区块约为4 MB,对于旧式交易则约为1 MB。这一固定的供给,是您每次转移比特币所付手续费的两个构成因素之一。
运作方式
现状:自2017年8月24日 SegWit 在区块481,824激活起,固定的1,000,000字节规则不再是起决定作用的约束。它仍作为区块中非见证部分的上限保留在底层,但决定能容纳什么的限制,是 BIP141 所定义的4,000,000权重单位预算。
最大区块大小最初是一道紧急制动,而不是一项经济政策。Satoshi Nakamoto 于2010年加入了1,000,000字节这一常量,没有文档,也没有讨论,目的是让怀有敌意的矿工无法用一个巨大的区块淹没一个年轻的网络,而每个参与者随后都得永久存储这个区块。没有人写下当普通需求追上这一上限时应当怎么办。这种沉默,在很大程度上解释了为何后来围绕这个数字的争论变得如此激烈。
BIP141 改变的是计量方式,而不是常量。权重将基础数据计算三次,再加上完整序列化一次,也就是见证数据之外的每个字节计4个单位,每个见证字节计1个单位。将上限定为4,000,000,会同时得出两个上限:基础数据仍然永远不能超过1,000,000字节,而在此基础上,大约还可附带3 MB 的签名数据。2017年之前编写的软件只度量去除见证数据的序列化,因此它看到的是一个合法区块,没有提出异议,区块容量就是这样通过软分叉而不是链分裂实现增长的。
权重并不是规则中唯一的上限。一个区块的签名操作数也不得超过80,000,这是一项单独的预算,用来防止小区块的验证耗时不成比例。
在哪里会遇到它
实际区块远低于理论最大值,因为普通支付携带的见证数据很少。一个繁忙区块序列化后通常在1.5 MB 以上,只有塞满铭文类数据的交易才会推向4 MB 的极端值。区块浏览器会同时显示大小和权重,两者按设计并不一致:将权重除以4,得到的就是虚拟字节,您的钱包以 sat/vB 报出费率时用的正是这一单位。
这个数字也是另外两种币存在的原因。Bitcoin Cash 于2017年8月1日在区块478,558处分裂出去,区块上限为8 MB,而将基础上限翻倍至2 MB 的 SegWit2x 提案,则因缺乏支持于2017年11月8日被取消。这两件事都属于区块大小之争,这场持续三年的争论,焦点是应由更大的区块还是第二层来承接增长。获胜的一方保持基础上限不变,并把压力转移到了闪电网络上。
最大区块大小 vs 区块权重
最大区块大小是问题,区块权重是如今给出答案所用的单位。询问能容纳多少兆字节,得到的是一个范围而不是一个确定的数字,因为答案取决于数据中有多少位于见证部分。询问能容纳多少权重单位,则只得到一个数字,即4,000,000,自 SegWit 激活以来的每个区块都是如此。因此协议文档不再引用任何大小,也因此,仍然告诉您上限为1 MB 的任何来源,描述的都是2017年之前的比特币。