为什么一个区块不能装无限交易?见证隔离(SegWit)原理

小编:迷魂雪 更新时间:2026-01-17 12:16

见证隔离(SegWit)是比特币2017年的一次大升级,它的核心目标就是解决“签名数据占空间太大,导致区块塞不下更多交易”的问题,升级后区块能装的交易笔数从平均2000-2500笔提升到3000-4500笔,甚至更多,费用也降了很多。

为什么一个区块不能装无限交易?见证隔离(SegWit)原理

升级前签名为什么占大头

一笔比特币转账交易长这样(简化版),版本号、输入(引用之前的UTXO +解锁脚本ScriptSig,里面包含签名)、输出(收款地址+金额)、锁定时间。

签名(witness数据)通常占交易总大小的30-70%,因为签名是证明“我有权花这笔钱”的关键证据,多签交易签名更多,占得更夸张。

问题

签名算进交易总大小,区块限重只有1 MB(1,000,000字节),签名占空间多,能装的交易就少。

一笔普通转账

1、主体(版本+输入输出+锁定时间):250字节

2、签名数据:200字节

3、总大小:450字节

4、1 MB区块最多装约2200笔这种交易。

升级后,怎么“隔离”签名

SegWit把签名从交易主体里挪走,放到交易末尾一个新字段(witness section),然后用一个新规则“打折”计算签名的大小。

具体步骤

1、加一个标记:交易开头加2字节flag(固定值0001),告诉节点“这是SegWit交易,签名在后面”。

2、主体部分(base transaction):去掉签名,只剩版本号、输入(但输入的ScriptSig变空或只剩占位符)、输出、锁定时间,大小还是约250字节。

3、witness部分:签名数据挪到末尾,一个输入对应一个witness子字段,大小还是200字节。

4、总真实大小:250 + 200 +几字节flag ≈ 460字节(比原来450字节还多一点!)

真实数据没省,甚至略增,磁盘、网络传输大小基本不变。

省空间的秘密!引入“重量单位”(Weight Units, WU)

升级后比特币不再用原来的“字节”限重,而是用4,000,000 WU作为区块新上限。

WU的计算规则超级关键

1、主体数据(版本、输入输出等):1字节 = 4 WU(原价,不打折)

2、witness数据(签名):1字节 = 1 WU(只算1/4重量,打75%折扣)

例子计算

1、主体250字节 × 4 WU/字节 =1000 WU

2、witness 200字节 × 1 WU/字节 =200 WU

3、总重量 =1200 WU(相当于300 vBytes,vByte是虚拟字节,1 vByte = 4 WU)

对比升级前

1、原来450字节全算450字节(相当于1800 WU,如果按老规则)。

2、现在总重量只1200 WU,省了33%重量!

结果:同一个4,000,000 WU的区块,能多装33%的这种交易!从2200笔变成约3000笔,甚至更多。

用最形象的比喻彻底搞懂

把区块想象成飞机货舱,限重4000吨(4M WU)。

1、升级前:每件行李(交易)包括衣服(主体)100kg +鞋子(签名)100kg,总重200kg,货舱能装20,000件。

2、升级后:鞋子(签名)被挪到“经济舱”,只算25kg(1/4重量),衣服还是100kg,总重125kg,现在能装32,000件!

行李真实重量!(磁盘、网络传输大小)还是200kg左右(甚至多几kg),但飞机限重规则改了,鞋子只算1/4重,故而能带更多行李。

区块头怎么保证签名没丢?

1、区块头的Merkle Root只承诺“主体交易”(不含签名)。

2、但矿工在coinbase交易(区块里的第一笔)加一个witness commitment(签名数据的Merkle根哈希),再让签名也上链、可验证。

3、节点验证时,先查主体,再查witness commitment确认签名完整。

SegWit的“隔离”真相

1、隔离:把签名从交易主体挪到末尾witness字段。

2、省空间:不是删数据,而是给签名打折(1字节只算1 WU),让区块在4M WU限制下装更多交易。

3、真实大小:基本没省,甚至略增。

4、本质:用“虚拟重量”规则,让签名从“贵重行李”变成“廉价行李”,飞机就能多载货。

这就是SegWit为什么让比特币主链从3-4 TPS提升到7-10 TPS,费用大幅下降,也为闪电网络铺路。

免责声明:本文所有内容及观点仅供参考,不构成投资建议,不代表本站观点和立场。投资者应自行决策与交易,对投资者交易形成的直接或间接损失,作者及本站将不承担任何责任!