比特币虚拟重量单位(WU)是什么?如何影响存储容量?
见证隔离(SegWit)升级后,比特币确实改变了计算区块“大小”的单位,从原来的“直接用字节数”改成了用虚拟重量单位(Weight Units,简称WU)来限重,见证隔离的区块,老数据(主体)1字节算4 WU,而新字段(签名/witness)1字节算1 WU,这个WU大小不是真实硬盘的大小吗?

真实硬盘/网络大小, 区块限制的“虚拟大小”
先区分两个概念!
真实大小(磁盘存储、网络传输大小):升级前后几乎没变,甚至略大一点,签名数据只是从交易主体里“挪”到末尾witness字段,加了一个2字节flag(0001)标记这是SegWit交易。
故而总字节数还是差不多(甚至多几字节到几十字节),硬盘上存的、网线上传的,还是原来的大小。
区块限制的“虚拟大小”(WU):这是新规则,只用来决定“这个区块还能不能再塞交易”,和硬盘大小没直接关系。
升级前:区块限重1 MB(1,000,000字节),全按真实字节算。
升级后:区块限重4,000,000 WU,这个WU是人为设计的“虚拟重量”,专门给签名打折用的。
凭什么主体1字节=4 WU,签名1字节=1 WU?
这个“4倍差价”不是随便拍脑袋定的,而是社区经过无数次讨论、模拟、博弈后达成的共识。
主要有3个原因
原因1:历史兼容(最重要)
老节点(没升级的Bitcoin Core v0.13.0及以下)仍然只看到“去掉签名后的主体数据”,它们觉得区块还是1 MB,不会拒绝新交易。
如果主体也打折,老节点会以为区块超1 MB,拒绝整个块,导致网络分裂,故而主体必须保持“原价”4 WU/字节,让老节点看到的大小不超过1 MB。
原因2:签名对网络的真实负担低
签名只验证一次就丢了,不长期占存储(不像UTXO余额要永久存),签名不改状态(不影响UTXO集合大小)。
主体数据(输入输出)永久影响状态,存储和验证成本高,俗话就是签名“贵不起来”,社区决定让它只算1/4重量,鼓励大家用SegWit(签名便宜,交易费低)。
原因3:平衡激励
如果折扣更高(如1/5、1/6),签名几乎免费,矿工可能塞一堆签名垃圾,挤占真正有价值的交易。
4倍是经验值:够大(省空间明显),又不破坏激励(签名还是有成本),这个4倍是BIP141(SegWit提案)里写死的,社区投票通过的,算是“一种妥协+技术平衡”的结果。
真实大小没变,为什么还能多塞交易?
因为区块上限从“1 MB真实字节”改成了“4M WU虚拟重量”。
一笔典型SegWit转账
真实大小:主体250字节+ witness 200字节+ flag几字节 ≈ 460字节(硬盘上就是460字节)。
WU计算
主体250 × 4 = 1000 WU
witness 200 × 1 = 200 WU
新规则下总1200 WU,老规则下450字节 ≈ 1800 WU,省了33%重量,同一个4M WU区块能多装33%这种交易。
硬盘大小还是460字节,但“重量账本”里它只占1200 WU,相当于“便宜了”。
简单的例子
区块是飞机货舱,限重4000吨(4M WU)。
1、升级前:衣服(主体)100kg +鞋子(签名)100kg = 200kg,能装20,000箱。
2、升级后:鞋子挪到“经济舱”,只算25kg(1/4重),衣服还是100kg,总重125kg,能装32,000箱。
3、飞机真实载重:还是200kg/箱(硬盘大小没变)。
4、但限重规则改了:鞋子便宜了,故而能带更多箱(更多交易)。
数据没丢,鞋子还在飞机上,只是算重时打折。
SegWit后的关键点
凭什么:签名负担小+必须兼容老节点+平衡激励,故而签名1字节只算1 WU,主体保持4 WU。
真实硬盘大小:几乎没变(甚至略增)。
省的是虚拟重量:让签名在“重量账本”上更便宜,区块能装更多交易。






