PSBT为何适合离线签名
PSBT(部分签名比特币交易)适合离线签名,是因为它将"构建交易"和"签名"两个步骤彻底分离。冷设备只需要处理不含私钥的交易数据包,签名后再传回热设备广播,全程私钥不触网。
PSBT解决了离线签名的两个核心难题
离线签名最大的两个风险是:冷设备看不到交易的完整信息(比如不知道要转多少、转给谁),以及热设备在广播前篡改已签名的交易数据。
PSBT是一种携带完整交易元数据的标准化格式(BIP-174),每个输入都包含UTXO详情、金额、公钥和派生路径等信息。冷设备拿到PSBT后,不需要联网查余额或地址,所有信息都封装在这个数据包里,可以独立验证每一笔输入和输出的合法性。签名完成后,PSBT结构会锁定已签名的部分,热设备无法修改签名内容后再广播——只能提取并广播。
离线签名操作步骤
前置条件:
一台联网设备(热端,用于查看余额和发起交易)
一台冷设备(冷端,如气隙钱包或硬件钱包,私钥存储于此,从未联网)
两设备之间通过二维码或micro-SD卡传递数据,不能使用USB、蓝牙、Wi-Fi等任何可能被攻破的通信方式
第1步:在热端创建PSBT
打开支持PSBT的比特币钱包(如Electrum、Bitcoin Core、Sparrow等)。输入接收地址和转账金额,选择"创建PSBT"或"导出部分签名交易"。钱包会生成一个未签名的PSBT文件或Base64字符串。热端没有私钥,无法完成签名。
做到什么程度算完成: 已导出PSBT文件/字符串,准备转移到冷设备。
第2步:通过离线通道传输到冷设备
用热端生成二维码,或用micro-SD卡保存PSBT文件,物理传递到冷设备。不要通过蓝牙、Wi-Fi或USB传输——所有无线和有线连接都可能被侧信道攻击。
做到什么程度算完成: 冷设备已成功读取PSBT内容,能看到交易金额、地址和每笔输入的UTXO详情。
第3步:在冷设备上验证并签名
冷设备解析PSBT,核验每笔输入的UTXO金额是否与交易预期一致。确认无误后,用冷设备内的私钥对交易进行签名。签名完成后,导出已签名的PSBT(仍包含部分或完整签名信息)。
做到什么程度算完成: 已导出签名后的PSBT,准备回传热端。
第4步:回传热端并广播
通过二维码或micro-SD卡将签名后的PSBT传回热端。热端导入PSBT,验证所有需要的签名已收集完毕,然后提取完整交易并广播到比特币网络。
做到什么程度算完成: 交易已在区块链浏览器上显示"已确认"(通常需要1-6个区块确认,约10-60分钟,视网络拥堵情况而定)。
常见失败原因
失败原因1:PSBT中的UTXO信息不完整
如果热端创建PSBT时没有提供每个输入对应的UTXO详情(如witness_utxo缺失),冷端无法验证金额,会拒绝签名或签名后交易无效。解决方式:在创建PSBT的钱包中确保UTXO信息完整导出。
失败原因2:冷设备未正确解析PSBT
不同钱包对PSBT的实现程度不同。如果冷设备显示"无法解析"或"未知全局字段",可能是PSBT包含该设备不支持的扩展字段。尝试用支持BIP-174标准的钱包重新创建PSBT。
失败原因3:签名顺序错误(多签名场景)
多签名交易需要指定签名顺序。若签名者使用SIGHASH_SINGLE|ANYONECANPAY等组合,合并时需要按特定顺序组合,否则交易会被网络拒绝。
风险提醒
物理通道安全:二维码和micro-SD卡是物理传递,但仍要防止被他人截获或替换。签过名的PSBT若被篡改,广播可能导致资产损失。
验证不足:冷设备必须显示完整的交易金额和接收地址。如果你不仔细核对,可能签名了一笔发往攻击者地址的交易。
PSBT文件泄露:未签名的PSBT不含私钥,泄露最多让对方看到你准备转账,资金不会被盗。但签名后的PSBT包含完整签名数据,泄露后任何人都可以提取并广播,等同于你的交易被提前曝光。
如何确认签名已完成
导入签名后的PSBT,钱包会显示"交易已完成"或"可广播"状态。如果部分输入未签名,会提示"签名不足"。确认所有输入后的签名状态栏全部显示绿色对勾,再点击广播。
下一步: 把签名后的PSBT文件从热端删除,避免被误用。保留冷设备的私钥备份(如金属助记词板),不要因为完成了一次离线签名就放松对冷设备的物理安全要求。
