比特币交易签名嵌入主体:SegWit为何成为必然

比特币交易数据以010000000110ddd830599b17cc开头,里面同时包含锁定和解锁比特币的脚本。这段结构把签名直接嵌入交易主体,既让1MB区块塞不下多少笔交易,也让任何人改动签名后交易ID就变了。

比特币交易的原始序列化格式把所有数据混在一起。示例交易以0100000001开头,后面紧跟输入引用、脚本长度、签名和公钥等完整内容。这段字节序列既包含锁定比特币的输出脚本,也包含解锁所需的签名数据。签名部分通常占整个交易大小的40%到60%。在1MB区块限制下,这直接压缩了能打包的交易笔数。

早期比特币开发者很快发现这个问题。区块空间被见证数据大量占用,导致网络吞吐量远低于理论值。任何想提升交易容量的尝试都绕不开这个结构缺陷。这成为后来扩容争议最直接的技术根源。开发者意识到,如果不改变数据组织方式,单纯增大区块大小只会把低效问题放大。

交易签名直接嵌入主体压低了区块实际容量

比特币交易数据包含锁定和解锁信息这一事实,直接导致见证数据占用过多空间。传统交易中,签名和公钥作为输入脚本的一部分,与交易的其他字段一起被哈希计算进交易ID。一次普通转账的签名数据可能达到200到300字节,而整个交易可能只有400字节左右。

在区块大小严格限制为1MB的情况下,这些签名数据挤占了本可用于更多交易的空间。实际测试显示,在SegWit激活前,一个典型区块往往只能容纳1500到2000笔交易,远低于理论上的4000笔以上。这就是为什么扩容争议从2015年开始不断升温。部分开发者主张直接提高区块上限,另一部分则认为应该先优化数据结构。

技术根源在于比特币的UTXO模型要求每笔交易都携带完整的解锁证明。这些证明在验证时必不可少,但在区块被确认后,它们对后续交易的引用其实不再需要反复验证。把这些数据一直放在主体里,等于让历史见证数据反复占用新区块的空间。这种低效最终迫使社区寻找结构性解决方案。

交易ID可变如何让闪电网络等方案无法落地

信号中的交易构造例子显示,只要修改签名,交易ID就会完全改变。因为txid是对整个交易序列化数据的哈希,包括签名在内。任何人,哪怕只是轻微调整签名中的一个字节,得到的txid都会不同。

这对依赖固定交易ID的链下协议构成致命阻碍。闪电网络的核心是创建未确认的承诺交易,这些交易的输出被后续交易引用。如果txid可变,就无法提前构建依赖它的子交易。任何一方都可以通过修改签名来使对方准备好的赎回交易失效,导致资金被锁定或被恶意扣留。

类似的问题也出现在其他合约协议中。侧链、状态通道等方案都需要交易ID作为稳定的锚点。交易ID可变性让这些协议的安全假设无法成立。开发者尝试过各种绕过方法,但都增加了复杂度和风险。这直接说明,仅靠增大区块无法解决根本问题,必须从交易结构本身入手。

SegWit把见证数据移到区块结构之外

SegWit通过引入新的序列化格式,把签名等见证数据从交易主体中分离出来。交易主体只保留输入输出和锁定脚本,签名数据被放在一个单独的见证字段中。新格式下,旧节点仍能解析交易主体部分,保持向后兼容。

具体实现中,SegWit交易在序列化时会把见证数据剥离,只把一个标记放在原签名位置。这样旧节点看到的是一个“任何人可花费”的空脚本,而新节点能正确读取完整的见证数据。这种软分叉设计避免了硬分叉带来的分裂风险。

分离之后,交易ID只对不含见证数据的部分计算,称为wtxid。原txid保持稳定,解决了前面提到的可变性问题。同时见证数据不再计入传统1MB限制,而是通过新的权重计算方式单独计费。这直接解决了信号中提到的数据混杂问题,让区块能容纳更多有实际价值的交易信息。

软分叉后区块权重计算实际放宽到多少

SegWit激活后,区块仍然保持1MB的基础大小限制,但引入了权重(weight)的概念。每个字节的见证数据只计0.25权重单位,而非见证数据计4权重单位。整个区块的权重上限设定为400万权重单位。

按照这个折扣比例,理论上区块有效容量可以达到约2MB到2.5MB,具体取决于交易中见证数据占比。签名占比高的交易能获得更多折扣,矿工因此倾向于优先打包SegWit交易。这改变了打包策略,促使钱包和交易所尽快支持新地址格式。

实际网络数据显示,SegWit激活后平均区块大小稳定在1.2MB到1.8MB之间。矿工通过权重计算能更精确地最大化收益,而不是简单看字节数。这套机制在不破坏原有共识规则的前提下,实现了容量提升,同时保留了去中心化特性。

这条路线如何为Taproot和Schnorr铺平道路

SegWit最重要的遗产是引入了脚本版本机制。见证程序的第一个字节被定义为版本号,这为后续升级留出了扩展空间。Taproot正是利用版本1实现了更复杂的脚本逻辑,同时保持隐私性。

Schnorr签名方案也依赖SegWit提供的结构。Schnorr签名比ECDSA更小且支持聚合,这进一步降低见证数据大小。正是因为SegWit把签名移到区块之外,这些新签名方案才能顺利集成,而不需要再次修改交易ID计算方式。

没有SegWit打下的基础,后续的协议升级会面临极大阻力。Taproot的激活过程相对顺利,正是得益于SegWit建立的软分叉模式和版本化脚本系统。这条技术路线让比特币能在保持保守的前提下,逐步引入现代密码学成果。

至今仍未平息的区块大小路线分歧

SegWit支持者认为,通过优化数据结构和折扣机制,能在不牺牲去中心化前提下提升容量。他们强调全节点验证成本和带宽限制,认为盲目增大区块会让普通用户难以运行节点,最终导致中心化。

大区块支持者则认为SegWit只是权宜之计,1MB基础限制加上复杂权重计算过于繁琐。他们主张直接提高区块大小上限,认为网络带宽增长足以支撑更大区块。双方分歧的核心在于对去中心化定义的理解不同。

当前网络中,SegWit已被绝大多数节点和矿池接受,采用率超过90%。但比特币现金等分叉链仍坚持大区块路线,区块大小上限达到32MB。两种方案在不同链上并存,各自吸引了不同理念的用户。分歧并未消失,只是被时间和实际运行数据暂时掩盖。

SegWit最终证明,结构性优化比简单粗暴扩容更具可持续性。它解决的不仅是容量问题,更是比特币作为可编程货币的基础设施问题。尽管争议仍在,但它为后续所有协议改进奠定了关键基础。

参考来源