冷热钱包之间的中转文件:PSBT里不只有金额 图 1
冷热钱包之间的中转文件:PSBT里不只有金额 · 图 1

离线签名流程里最让人放松警惕的环节,往往不是冷设备上那一次签名,而是那份在联网机和签名机之间来回传递的”中转文件”:它不带签名、不带私钥,于是很多人默认它无害,扫码、上传、转发都随手来。这类文件的标准形态叫PSBT——按 Partially Signed Bitcoin Transaction 的规范名称译为”部分已签名比特币交易”,规范是BIP-174,它的自述设计动机就是把”联网的、可能有恶意的主机”和”持有秘密的、离线的主机”在流程上隔离开。值得单独写一篇文章的原因是:这份文件里装的东西,远不止收款地址和金额两行字;而它的”无害”直觉,恰好掩盖了它该被怎样对待。本文面向使用硬件钱包或离线签名流程的普通用户,只谈防御,不构成投资建议。

先拆它装了什么。PSBT是一条交易的”半成品”,按规范它包含:你要付出的输出(地址与金额)、手续费的差额空间,以及最容易被人跳过的完整输入元数据——这一笔到底在花费哪些此前未花费的输出(UTXO)、每个输入的锁定脚本长什么样、对应的公钥以哪条派生路径产生、还有见证脚本等完整数据。换句话说,任何一个拿到这份文件的人,都能读到你这笔交易动用的每一块资金来源与结构。未签名的PSBT本身确实不能直接搬走你的钱——这正是设计意图——但它完整刻画了你某一部分持仓的画像;如果配合多个输入地址,暴露面还会继续扩大。更实际的风险方向是反向的:输入和手续费字段在规范上就允许后续参与者改动和补充,如果签名方不在最后一步逐字段核对、只信任联网屏幕上”已经填好的样子”,那么签下去的可能已经不是最初那份意图。冷钱包流程里”设备屏显复核”这一关被跳过,出事往往就出在这里。

操作纪律三条。第一,把PSBT当作敏感文件对待:只经由你指定的介质(二维码或专用存储介质)在两台机器之间传递,不经过云盘、聊天软件、邮箱草稿——这些通道会让一份”看起来没钥匙的文件”被第三台设备读走,暴露面与其他敏感文件的云端残留是同一类问题。第二,冷端签名前做逐字段复核:收款地址逐字对照自己地址簿或设备记录,金额与找零核对到最小单位,手续费确认在合理区间;设备如果展示派生路径或脚本类型,与你台账里的记录对得上才继续,出现从未见过的字段、陌生输入或异常大的手续费,立即中止而不是”先签了再看”。第三,一份PSBT只对应一次意图:不要把新旧文件混着批量签;发现某份文件生成时间较早、输入状态已随新的收支变化,就废弃重做,而不是抱着旧文件反复尝试。

两个边界要说清。第一,PSBT是”部分已签名”的容器,格式本身不保证内容正确,它的价值在于隔离联网风险和签名风险,而不是替你免掉人工核对——工具再自动化,最后一关仍然是人眼与设备屏幕的对账。第二,载体形式(二维码、base64文本、文件)只影响你复制的方式,不改变核对标准:任何情况下都以冷端设备屏显为最终依据,而不是联网软件渲染出来的预览界面。万一你已经签了一份被改动过的交易:第一步是停止继续同一路径的操作,保留PSBT原文件、设备截图与交易哈希;随后按被盗处置的常规路径留证、向相关方报案与报链上地址,绝不建议先去搜索”区块链交易恢复工具”——事件后的第二刀几乎总从这类广告里出来。中转文件不神秘,也不危险,前提是每一次传递和签名,你都按”它带着我的画像、也可能被人动过手”来对待。

冷热钱包之间的中转文件:PSBT里不只有金额 图 2
冷热钱包之间的中转文件:PSBT里不只有金额 · 图 2