SegWit详解:区块权重、费用和地址

隔离见证(Segregated Witness,简称 SegWit)是比特币的一个软分叉,它将见证数据与用于交易标识符(txid)的交易序列化信息分离。见证数据仍然是完整交易和区块的一部分,不会被移出链外。BIP141 引入了新的验证和区块权重规则,同时保持了与传统节点对区块视图的兼容性。

隔离见证(SegWit)将区块权重上限设定为 4,000,000 个权重单位。非见证字节计数四次,见证字节计数一次。因此,总序列化字节大小取决于交易组成,在见证字节较多的区块中可能接近 4 MB;1.8–2.1 MB 并非协议限制。一个虚拟字节对应四个权重单位,向上取整即可得到交易的虚拟大小。(来源:BIP141 隔离见证)

SegWit 从交易 ID 计算中移除了见证数据,从而解决了符合条件的交易中基于见证的非自愿延展性问题。但它并非使所有交易标识符都不可更改:更改非见证字段、替换交易或包含可延展的旧版输入仍然会产生影响。这项改进使得预签名交易链的构建更加便捷,包括 Lightning 使用的那些链。

起源与历史

研究背景: SegWit 建立在早期关于交易延展性、见证分离和兼容协议升级的讨论之上。

2015 年 12 月: Pieter Wuille 在香港举行的 Scaling Bitcoin 大会上介绍了隔离见证,并解释了其可塑性和容量优势。

技术规范: BIP141 定义了共识变更,BIP143 规定了版本 0 见证程序的签名哈希,BIP144 描述了对等服务和序列化变更。这些规范各自独立,范围和编写者也各不相同。

2017年5月:莱特币抢在比特币之前在其网络上启用了隔离见证(SegWit),作为一个真实的测试平台,验证了该升级在生产环境中的稳定性和安全性。莱特币的成功启用增强了人们对在比特币上部署隔离见证的信心。

2017年7月至8月: BIP91、BIP148以及现有的激活流程在备受争议的SegWit部署期间扮演着不同的角色。比特币现金于8月1日分叉;SegWit本身于当月晚些时候在比特币上激活。

2017 年 8 月 24 日:SegWit 在比特币主网上的区块高度 481,824 正式激活。此次激活标志着比特币历史上最具政治色彩的辩论之一——“区块大小之战”——的结束。

激活后:钱包和服务将采用封装式和原生 SegWit。原生版本 0 主网地址以 bc1q 开头;以 3 开头的地址为 P2SH,不一定是 SegWit 地址。

2021 年 11 月: Taproot 使用见证版本 1 激活,带有 Schnorr 签名和脚本树承诺。

当前用途:隔离见证(SegWit)仍然是比特币共识规则的一部分。采用率和公共闪电网络容量等指标会随时间变化,因此需要使用过时的数据集和清晰的方法论。

简单来说

  1. 想象一下,你寄一封信,信的内容是实际的信息(付款详情),而蜡封则是你的签名,证明信件的真实性。在 SegWit 出现之前,信件和蜡封都必须装进同一个小信封里。SegWit 允许你将蜡封放在一个单独的、连接的封套里——这样,主信封就可以装更多的信件,同时蜡封仍然可以随身携带以进行验证。
  2. 想象一下,如果运输规则对两种不同的物料收取不同的重量费用,会发生什么情况。SegWit 改变了数据计入容量的方式;所有必需的验证数据仍然以完整的数据块形式传输。
  3. 想象一下机场的护照检查通道。在SegWit出现之前,每位旅客都必须携带装满个人文件的整个文件柜通过狭窄的通道。SegWit就像允许旅客只需携带护照即可通过通道,而他们所有的文件资料则会通过一条并行运行的、更宽阔的独立通道进行传送。
  4. 想象一下,一张菜谱卡片的字数有限制。在 SegWit 出现之前,烹饪步骤和脚注都必须挤在一张卡片上。SegWit 将脚注移到卡片背面,并减少其字数限制——这样厨师就可以在每张卡片的正面写上更多实际的烹饪步骤。
  5. 想象一下高速公路收费站,每辆车按乘客人数收费。SegWit 就像修改了规则,让后座乘客只需支付四分之一的价格——收费站处理的车辆数量不变,但每辆车实际上搭载了更多乘客,而总通行费却保持不变。

重要提示:旧版节点在旧规则下接受精简视图,但不强制执行 SegWit 见证人验证。升级后的节点会强制执行这些规则。钱包需要兼容的脚本和交易结构才能正确使用 SegWit 输出。(来源:BIP144 见证人序列化)

关键技术特征

块体重量和新容量模型

  • 将 1 MB 块大小限制替换为 4,000,000 权重单位 (4 MWU) 块权重限制。
  • 非见证数据每字节收费 4 WU;见证数据每字节收费 1 WU
  • 序列化总大小随见证组成而变化,可接近 4 MB;事务计数不固定。
  • 传统节点接收兼容的剥离序列化;升级后的节点还会验证见证承诺和规则。

交易延展性修复

  • 在隔离见证(SegWit)出现之前,交易ID(txid)是根据包括签名在内的整个交易计算得出的。
  • 从历史上看,对解锁数据的允许更改可能会改变交易ID,而不会改变预期的支付内容。哪些更改有效取决于当前的共识和策略规则。
  • 交易ID排除了见证数据。这可以防止仅对见证人进行的更改影响交易ID,但并不能阻止对交易的所有可能修改。
  • 单独的见证交易 ID (wtxid) 涵盖包含见证数据在内的完整交易。

SegWit交易的工作原理

  1. 发送方的钱包根据先前的交易信息构建一个交易。 UTXOs 并输出收件人地址和金额。
  2. 原生见证人输入使用空的 scriptSig;P2SH 封装的见证人输入包含赎回见证人程序。混合交易中的其他输入仍然可以使用传统的 scriptSig。(来源: Bitcoin Core SegWit 钱包开发)
  3. 该交易序列化时会包含一个标记字节 (0x00) 和一个标志字节 (0x01),用于指示 SegWit 格式。
  4. txid 对非见证序列化进行哈希处理,包括实际的 scriptSig 字段;这些字段并非全部为空。
  5. wtxid 是通过对包含见证数据的完整序列化交易进行哈希运算计算得出的。
  6. coinbase 交易中的见证人承诺会承诺到见证人 Merkle 根,以及区块的普通交易 Merkle 根结构。
  7. 节点在验证区块时,会同时验证标准交易的有效性和见证数据的完整性。

隔离见证地址类型

  • P2SH封装的SegWit:主网地址以3开头,但相同的前缀也代表非SegWit的P2SH脚本。BIP49规定了一种通用的封装钱包派生约定。
  • 原生版本-0 SegWit:主网地址以 bc1q 开头,并使用 Bech32。费用节省取决于输入和输出类型、数量和费率。
  • Taproot:主网版本 1 的地址以 bc1p 开头,并使用 Bech32m。其他未来的见证版本也使用 Bech32m,但无需以 bc1p 开头。

闪电网络启用

  • 闪电网络依赖于预先签名的交易,这些交易引用特定的交易ID。
  • SegWit 之前的可延展性意味着交易 ID 可能在广播后发生变化,从而违反支付通道合约。
  • 取消基于见证的交易 ID 可塑性有助于构建稳健的通道;闪电网络仍然存在流动性、监控和协议方面的风险。
  • Lightning 实现采用兼容的资金和支出格式;运营一个通道需要的不仅仅是选择一个 SegWit 地址。

优点缺点

优势缺点
容量核算——见证折扣可以在重量限制内容纳更多有用的交易;收益取决于工作量。推广工作——钱包和服务需要实施和互操作性变更。
潜在的费用节省——较小的虚拟空间大小可以降低相同 sat/vB 费率下的费用;具体百分比取决于交易情况。开发人员的复杂性新的交易格式、权重计算和地址类型增加了钱包和服务开发人员的实现复杂性。
延展性降低——仅见证人更改不会改变 SegWit 交易的 txid。向后兼容性的权衡软叉方案需要精巧但复杂的工程设计(“人人都能消费”的技巧),一些批评家认为这是一种权宜之计,而非彻底的重新设计。
支付通道支持 — 在相关假设下,稳定的参考数据支持 Lightning 通道设计。并未结束规模化争论批评人士认为,隔离见证(SegWit)的容量提升不足以弥补损失,仍然需要直接增加区块大小,这导致了比特币现金(Bitcoin Cash)的分叉。
升级可扩展性——见证版本控制支持新规则,但技术兼容性并不能消除治理方面的争论。工作负载依赖性——容量效益会随着实际包含的交易量而变化。
改进的脚本版本控制引入了见证程序版本(v0 代表 SegWit,v1 代表 Taproot),为未来的比特币脚本增强功能创建了清晰的升级机制。地址混淆多种地址格式(传统地址、P2SH 封装地址、bech32 地址、bech32m 地址)会导致用户困惑,并且在钱包类型之间发送资金时偶尔会出现兼容性问题。
加强安全性原生 SegWit bech32 地址通过 bech32 编码方案内置了错误检测功能,从而降低了向错误地址发送资金的风险。感知到的集中化担忧一些社区成员认为,SegWit软分叉是由一小群Core开发者强行推进的,违背了相当一部分矿工的意愿。

风险管理

地址兼容性风险

  • 旧版钱包和部分交易所可能不支持向 bech32 (bc1) 地址发送资金
  • 请确认发送服务支持接收方的地址类型和网络。封装的 SegWit 在某些情况下可能兼容,但不要假定所有以 3 开头的地址都是 SegWit 钱包。
  • 请查阅最新的服务文档,而不是想当然地认为旧的采用日期仍然有效。

部分领养费风险

  • 发送方需支付交易手续费,费用取决于所花费的输入数据和整个交易。接收 SegWit 输出可以降低之后花费该输出的成本。
  • 在适当情况下使用兼容的原生 SegWit 输出,并比较实际虚拟大小和费用估算。

证人数据和资源利用

  • 使用大量见证信息的交易可以在权重限制内生成更大的序列化区块。使用允许的见证空间本身并不构成协议漏洞。
  • 共识权重和脚本规则限制了区块;节点中继和挖矿策略则施加了额外的、不同的限制。策略限制不应与共识限制混淆。
  • 2023 年的序数和铭文趋势体现了这种动态,因为大量的见证数据有效载荷被用于在链上铭刻图像和数据。

服务业的迁移风险

  • 从传统地址格式迁移到 SegWit 地址格式的交易所和支付处理商必须谨慎处理过渡过程,以避免资金损失或会计错误。
  • 缓解措施:迁移期间并行运行传统系统和隔离见证系统;在主网部署前,在测试网上进行全面测试。

文化相关性

被称为“区块大小之战”的扩容之争涉及技术和治理方案的竞争。比特币现金于2017年8月1日分裂;比特币隔离见证于8月24日在区块高度481,824时激活。这是两个独立的事件。

“UASF”(用户激活软分叉)一词成为SegWit支持者的口号,他们主张节点运营商无论矿工是否发出信号,都应强制激活SegWit。BIP148 UASF运动展现了经济节点(交易所、企业、用户)在决定比特币升级路径方面对矿工的影响力,并为未来协议变更的评估方式树立了先例。

SegWit的启用也标志着比特币治理的一个转折点。此前提出的纽约协议(SegWit2x)的失败——该协议提议启用SegWit并将区块大小增加2MB——进一步强化了这样一个原则:任何行业参与者之间的闭门协议都不能在没有更广泛的社区共识的情况下左右比特币协议的变更。

在开发者文化中,SegWit 被誉为一种优雅的工程解决方案,它通过一次向后兼容的更改,同时解决了扩展性、可塑性和可升级性等多个问题。它引入的见证版本控制系统已成为部署后续升级的主要机制,其中 Taproot(见证版本 v1)是最显著的例子。

乔纳森·比尔在其著作《区块大小之战》(2021 年)中对“区块大小之战”进行了详尽的记录,该书已成为任何想要了解比特币治理模型和去中心化协议发展的社会动态的人的推荐读物。

实际例子

  1. 隔离见证和事务批处理
  • 场景:某服务希望降低多次提现的总链上成本。
  • 机制:隔离见证(SegWit)可以降低输入权重,而批处理则可以将交易开销分摊到多个输出端。这些是不同的优化方案。
  • 结果:隔离见证和批量处理都能降低成本,但它们的优势取决于交易结构和费率。批量处理分摊开销;隔离见证改变符合条件的输入数据的权重。
  1. SegWit 助力闪电网络发展
  • 场景:支付通道协议需要可靠的资金和承诺交易参考。
  • 实施: 闪电网络节点通过在比特币底层创建 2-of-2 多重签名隔离见证 (SegWit) 交易来打开支付通道。通道内的后续支付通过链下更新的承诺交易进行,这些交易引用原始隔离见证资金交易的交易 ID (txid)。
  • 结果:SegWit 支持 Lightning 的交易设计,但通道容量、路由流动性、节点数量和支付成功率是不同的衡量标准。该协议没有设定固定的 2026 年容量或美元估值。
  1. 2021年牛季期间,孟菲斯港交通拥堵缓解措施
  • 场景: 在 2021 年比特币牛市期间,交易量激增,导致内存池严重拥堵和手续费上涨。
  • 机制:在相同的费率下,较小的虚拟区块大小会降低总费用。区块是否被包含仍然取决于费率、祖先区块包、矿工策略和可用区块空间。
  • 结果:隔离见证技术提高了特定类型交易的区块空间效率。但它并不能保证交易被包含在下一个区块中,也不能保证普遍获得两倍或三倍的费用优势。
  1. 利用见证空间的序数和铭文
  • 场景: 2023年初,开发商凯西·罗达莫尔推出了 序数协议它利用 SegWit 的见证数据空间,将任意数据(图像、文本、HTML)直接写入比特币区块链。
  • 机制:铭文数据包含在 Taproot 脚本路径见证数据中,并获得见证权重。其他区块和交易数据仍然会占用权重,因此有效载荷不能在不考虑开销的情况下占用完整的 4,000,000 字节。
  • 结果:碑文表明,碑文大量用于见证用途,并引发了关于资源分配的新一轮争论。碑文数量和采用率数据需要使用带有日期信息的数据集。

对比表

特性SegWit(比特币 BIP141)比特币现金(自适应区块限制)以太坊 Blob 数据可用性
缩放方法见证数据分离 + 重量折扣直接增加块大小斑点数据和可用性抽样
有效区块容量4,000,000 WU;字节大小不一自适应限制于2024年5月引入(来源: 比特币现金 2024 年 5 月自适应区块限制)容量由活动 blob 参数控制
向后兼容性是的(软叉)不需要(需要硬叉)以太坊网络升级;不同的架构
交易延展性修复是的(核心功能)规则不同;并非比特币隔离见证。不适用(架构不同)
二层启用支持兼容的支付渠道设计不同的协议和应用生态系统汇总(乐观和零知识)是主要的 L2 层级。
地址格式封装的 P2SH,原生 v0 Bech32,v1 Bech32mCashAddr(比特币现金:q…)0x 十六进制以太坊地址
网络采用按日期交易/输入指标进行衡量如果没有明确的衡量标准,则无法直接比较。以太坊主网 + L2 生态系统

相关条款

  • 比特币改进提案(BIP) — 比特币协议变更的正式提案和记录流程;SegWit 通过 BIP141、BIP143 和 BIP144 实现。
  • 交易延展性 — 更改交易标识符而不改变其预期付款的更改;SegWit 在特定条件下处理基于见证的形式。
  • 闪电网 — 比特币的主要二层支付通道网络,可实现即时、低手续费的交易;由 SegWit 的延展性修复直接实现。
  • 软叉 — 向后兼容的协议升级,未升级的节点仍然接受来自已升级节点的区块;SegWit 被部署为软分叉,以避免网络分裂。
  • 块重量 — SegWit 引入的指标,取代了传统的块大小限制,以重量单位 (WU) 衡量,每个块的最大重量为 4,000,000 WU。
  • Bech32 — 用于本地见证版本 0 的地址编码;Bech32m 用于版本 1 及更高版本。
  • 直根 — 2021 年比特币升级,基于 SegWit 的见证版本 1,引入了 Schnorr 签名、MAST 和增强的复杂交易隐私。
  • UTXO(未使用交易输出) — 比特币的基本会计模型;SegWit 交易修改了 UTXO 支出条件的结构和验证方式。
  • 见证程序 — SegWit 引入的 scriptPubKey 格式,用于指定见证版本和程序哈希,从而实现对支出条件的隔离验证。
  • Bitcoin Cash — 比特币的一个硬分叉,由支持更大区块且不同意 SegWit 扩容方法的比特币支持者于 2017 年 8 月 1 日创建。
  • 区块大小之争——比特币社区就扩容问题展开了多年的辩论,最终导致 SegWit 的激活和比特币现金的分叉,从而塑造了比特币的治理文化。
  • Ordinals 协议——一种利用 SegWit 的见证空间折扣在比特币上写入任意数据的协议,从而在比特币区块链上实现类似 NFT 的功能。

常见问题解答

问:用通俗易懂的语言来说,“隔离证人”到底是什么意思?

“隔离”指的是分离,“见证”指的是用于证明交易已获授权的加密签名。因此,“隔离见证”字面意思就是将签名与主要交易数据分离。签名仍然包含在区块中用于验证,但它们被放置在一个单独的结构中,在计算区块容量时会以折扣价计算。

问:与传统交易相比,SegWit 交易可以节省多少手续费?

节省金额取决于脚本类型、输入输出数量和手续费率。在固定 sat/vB 费率下,较小的虚拟货币容量成本更低。请将实际交易的预估费用与钱包估算费用进行比较,而不是假设存在统一的折扣。

问:比特币用户是否必须采用隔离见证(SegWit)?

用户仍然可以接收和使用旧版输出,但旧节点无法强制执行所有新的共识规则。需要支持 SegWit 的软件才能进行正确的见证验证并支持相应的支出格式。目前使用该软件无需达到一定的普及率。

问:SegWit是如何实现闪电网络的?

Lightning 依赖于预先签名的交易,这些交易引用资金输出。SegWit 在特定条件下移除基于见证的交易 ID 更改,从而增强这些引用的可靠性。但它并不能完全消除 Lightning 的所有安全性和可用性风险。

问:bech32 地址和 bech32m 地址有什么区别?

在比特币主网上,版本 0 的见证地址以 bc1q 开头,并使用 Bech32 编码。Taproot 版本 1 的地址以 bc1p 开头,并使用 Bech32m 编码。Bech32m 编码适用于版本 1 至 16;更高版本使用其他前缀,并且不自动代表 Taproot。(来源:BIP350 Bech32m 地址编码)

问:SegWit 是否解决了比特币的可扩展性问题?

SegWit提高了权重效率并支持支付通道设计,但它并不能提供无限的吞吐量。容量提升取决于交易构成,而分层系统也会带来自身的运行权衡。

问:为什么有些人批评SegWit?

批评者提出了多项反对意见。一些人认为,直接增加区块大小会更简单有效。另一些人则认为,软分叉部署机制(利用“任何人都可以花费”的技巧来实现向后兼容)是一种不够优雅的变通方案。Ordinals 的争议再次引发了关于见证数据折扣是否会鼓励人们将区块空间用于非货币用途(而非 SegWit 设计者最初设想的用途)的辩论。

结语

SegWit 通过见证人隔离和区块权重计算改进了比特币的交易设计。它使用兼容的软件和地址格式,并根据实际交易收取费用,而不是假设固定节省或无限容量。

来源

BIP141 隔离证人

Bitcoin Core SegWit 钱包开发

BIP350 Bech32m 地址编码

BIP144 见证序列化

序数铭文数据

比特币现金 2024 年 5 月自适应区块限制

新闻