BIP-174 PSBT字段怎么分类? 图 1
BIP-174 PSBT字段怎么分类? · 图 1

PSBT是键值映射容器,不是“带签名的交易文件”这么简单。全局、每个输入和每个输出都有独立映射,角色只能添加自己负责的信息,未知字段还必须保留。

本文专门讲字段归属、六种处理角色与v0/v2边界;一般多签步骤请参考站内PSBT流程页。

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

  • 不要这样做:合并时丢弃“不认识”的字段导致下游信息消失
  • 不要这样做:在错误输入映射写入签名或脚本
  • 不要这样做:只改字符串版本号就把v0当成v2

三类映射怎样分工

映射常见信息不应放错的位置
Globalv0未签名交易、版本、扩展全局字段某个输入的签名
Input MapUTXO、sighash、脚本、派生、部分签名、最终见证其他输入的字段
Output Map输出脚本、派生路径、赎回或见证脚本输入UTXO

文件先以psbt魔术字节和0xff分隔符开头。每个映射由键值对组成,完整key必须唯一,以零长度key结束。创建者放入交易骨架,更新者补UTXO和脚本,签名者只加可验证签名,合并者合并不冲突字段,最终化者生成最终scriptSig/见证,提取者才输出可广播交易。

解析器遇到未知专有key时应原样保存。把v2字段直接塞进声明为v0的容器,可能让硬件钱包错误理解交易骨架。

事实与证据边界

核验项可确认结论
三类映射BIP-174文件以psbt魔术字节和0xff分隔符开头,随后按全局、每个输入、每个输出组织键值映射。
六种角色流水线创建、更新、签名、合并、最终化和提取角色只应补充自己负责的信息;同一映射中的完整key必须唯一。
未知字段保留解析器与合并器要保留无法识别的专有或未来字段,BIP-370的PSBT v2改变全局交易表达,不能把两个版本字段直接混用。

从输入到验收

阶段动作
准备先验证魔术字节、版本和每个映射终止符
读取检查同一映射是否存在重复完整key
解释按输入索引核对UTXO、金额、脚本和派生
复核处理一轮后比较未知字段是否原样保留
收尾最终化前保存原始PSBT,提取后重新计算txid

把v0与v2边界写进回归测试

回归用例先准备一份黄金样本:对象、网络、版本和预期结果均已知。脚本完成“先验证魔术字节、版本和每个映射终止符”后只保存原始数据,再由独立模块执行“检查同一映射是否存在重复完整key”。黄金样本的作用是发现实现变化,不代表其他对象天然安全;测试报告必须注明它覆盖的具体范围。

负向用例至少两条。第一条构造“合并时丢弃“不认识”的字段导致下游信息消失”,第二条构造“在错误输入映射写入签名或脚本”。两条用例分别运行,禁止同时改变多个字段。合格实现会保留原始错误并停止在对应层级;自动切换网络、猜测未知字段或引用旧缓存都应让用例失败。

状态用例在动作前取得三类映射快照,执行“按输入索引核对UTXO、金额、脚本和派生”后再次取证,并对照六种角色流水线和未知字段保留。如果状态由节点视图、缓存或索引延迟造成,结果应注明观察来源。A时点和B时点必须各自保留,不能只存一条被覆盖的最终记录。

发布前由人工检查结果页是否同时显示原始字段、推导规则、单位或版本以及三态结论。触发“只改字符串版本号就把v0当成v2”时,系统必须建议“处理一轮后比较未知字段是否原样保留”并停止自动动作。回归记录由此覆盖正常、错误、状态变化和人工接管四条路径。

来源、增量与风险边界

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

本文资料读取于2026-07-20。硬件钱包支持的PSBT版本与字段集合不同,传递前应校验版本并保存未经修改的原始文件。

站内相邻主题可继续阅读:PSBT签名流程输出描述符。PSBT可能包含地址、余额和派生信息。传输前应保护隐私,硬件钱包不支持的版本不得强行降级。