BIP-141隔离见证改变了什么? 图 1
BIP-141隔离见证改变了什么? · 图 1

隔离见证同时改变交易标识、区块承诺和容量计量。见证数据不进入txid但进入wtxid;它也不是“所有字节四分之一价格”的简单折扣。

本文用序列化和权重算例解释BIP-141,不延伸到Taproot的签名规则。

一个权重算例

设某交易基础序列化大小为150字节,包含见证后的总大小为250字节。权重是150 × 3 + 250 = 700 WU,虚拟大小为ceil(700/4)=175 vB。只有新增见证部分按权重结构获得折扣,基础字段仍按更高权重计算。

标识哈希覆盖范围典型用途
txid不含marker、flag和见证栈的传统序列化UTXO引用与兼容系统
wtxid包含完整见证序列化见证承诺与完整交易识别

区块把所有wtxid形成的见证Merkle根,与coinbase输入的见证保留值一起写进特定OP_RETURN承诺。验证者不仅检查普通Merkle根,还要检查这条见证承诺链。

操作前后逐项勾选

  • 分别序列化基础交易和完整见证交易
  • 计算txid与wtxid并确认二者覆盖范围
  • 用基础大小和总大小复算weight与vsize
  • 验证coinbase见证保留值和OP_RETURN承诺
  • 先识别见证版本,再选择对应脚本验证规则

三个必须保留的事实

  1. txid与wtxid:BIP-141把见证数据与传统交易序列化分离,txid不包含见证而wtxid包含完整见证序列化。
  2. 见证承诺链:区块通过coinbase输入见证保留值和OP_RETURN承诺绑定所有交易wtxid形成的见证Merkle根。
  3. 区块权重公式:区块权重按基础大小乘3再加总大小计算并限制为四百万单位;见证折扣不是把所有交易字节统一按四分之一计费。

txid与wtxid如何做双盲复核

作者先依照“分别序列化基础交易和完整见证交易”收集一份不含结论的证据包,内容包括目标对象、网络或版本、完整返回、查询时点和使用的工具。复核者收到材料后,按“计算txid与wtxid并确认二者覆盖范围”自行解释见证承诺链。双方最后才交换结果;如果结论不同,优先比较原始字段与口径,不能用页面颜色或多数意见裁决。

接着建立反例包。反例一只模拟“把wtxid用于前序输出引用,破坏兼容语义”,反例二只模拟“用总字节数直接除以四估算费用”。每个反例必须说明预期拒绝点和实际拒绝点。程序若把错误输入修正后继续执行,应把修正动作完整展示;静默修正会让用户误以为原输入有效,因此仍判为不通过。

为了覆盖见证版本边界,还要在状态改变前后各保存一次“用基础大小和总大小复算weight与vsize”的结果。两份证据必须有独立时间和上下文,不能只留最终快照。若变化由缓存、节点或索引造成,报告应注明观察层级,而不是直接断言链上事实改变。

上线页面把原始证据、解释规则和结果状态拆开呈现。原始栏不做舍入和自然语言改写;解释栏写清公式、版本或字段映射;结果栏允许已确认、被否定和待核验。触发“看到bc1地址就假设一定是version 0 P2WPKH”时,按“验证coinbase见证保留值和OP_RETURN承诺”重新取证,禁止继续自动处理。

三个容易造成错误结论的做法

  • 不要这样做:把wtxid用于前序输出引用,破坏兼容语义
  • 不要这样做:用总字节数直接除以四估算费用
  • 不要这样做:看到bc1地址就假设一定是version 0 P2WPKH

来源、增量与风险边界

  1. Bitcoin Improvement Proposals:正式接口、字段与规范语义。
  2. BIP-144:实现路径、兼容性或安全边界。

本文资料读取于2026-07-20。不同见证版本拥有不同脚本规则,钱包不能仅凭bc1前缀推断脚本类型或可花费性。

站内相邻主题可继续阅读:比特币交易结构Taproot花费路径。不同见证版本的脚本规则不同。钱包构造和签名时必须识别程序版本,不能用BIP-141概览替代具体花费规则。