部分签名比特币交易(PSBT)是一种标准化格式,便于创建、签名和传递涉及多个参与方或设备的比特币交易。

部分签名比特币交易(Partially Signed Bitcoin Transaction,PSBT)由比特币改进提案(BIP)174引入,增强了不同钱包和软件之间的互操作性,让多重签名配置、CoinJoin 和离线交易等复杂交易更易于管理。
什么是 BIP 174(比特币改进提案 174)?
BIP 174 旨在解决比特币交易涉及的复杂性和安全问题,尤其是需要多个签名或协同提供输入的场景。PSBT 将交易创建与签名角色分离,确保私钥可以保持离线,显著增强了冷存储方案和硬件钱包的安全性。
PSBT 格式包含几个关键要素。首先,它引入了一种传递未签名或部分签名交易的标准方式,让不同参与方更容易在不损害安全性的前提下共同完成交易。例如,可以创建包含输入、输出等所有必要交易详情,但不含任何签名的 PSBT。随后,可以将这笔未签名交易分享给负责添加签名的其他参与方或设备。
这一过程涉及多个角色:创建者(creator)、更新者(updater)和签名者(signer)。创建者用未签名交易初始化 PSBT,并指定输入和输出。更新者添加 UTXO、赎回脚本(redeem scripts)和 BIP 32 派生路径等额外信息。签名者随后为交易输入提供必要签名,在签名前确保所有必需数据齐全且正确。
PSBT 如何用于比特币交易?
要理解 PSBT 的工作方式,最好借助一个实例,看看多方如何协同创建、签名和广播一笔比特币交易,同时始终不暴露各自的私钥。
假设 Alice、Bob 和 Charlie 决定创建一个签名要求为 2-of-3 的多重签名钱包。这意味着,从共享钱包支出的任何交易,都必须得到其中至少两人的批准。
Alice 需要从她的多重签名钱包向一家商户发送 1 BTC。她先使用比特币钱包创建交易,从多重签名钱包中选择用作交易输入的 UTXO,并将商户的比特币地址指定为输出,金额设为 1 BTC。
接着,Alice 的钱包向 PSBT 添加额外信息。这一步会加入 UTXO 详情、赎回脚本和 BIP 32 派生路径等相关元数据。完成后,PSBT 就可以交由所需参与方签名了。
随后,Alice 将 PSBT 发给 Bob,因为他们还需要至少一个签名,才能满足 2-of-3 的要求,将交易发送给商户。Bob 收到 PSBT 后,将其导入自己的比特币钱包。钱包核验交易详情,然后提示他签名。Bob 检查并确认交易后,钱包将他的签名加入 PSBT。
此时,包含 Bob 签名的部分签名 PSBT 被发送回 Alice。Alice 的钱包合并带有 Bob 签名的 PSBT,并加入她自己的签名,满足 2-of-3 的签名要求。PSBT 现已包含授权交易所需的全部签名。签名齐全后,Alice 的钱包将其转换回标准比特币交易格式。随后,完整签名的交易被广播到比特币网络,在那里接受验证,并最终被纳入区块链上的一个区块。
PSBT 中的专有数据
BIP 174 还规定了如何在 PSBT 中加入专有数据(proprietary data),让组织可以附加内部流程所需的额外信息,同时不影响整体标准化。这一功能尤其适用于需要在交易中加入自定义元数据的企业或服务。
假设一家比特币交易所需要加入交易元数据,以便进行内部审计。它可能需要记录发起交易的客户、交易目的,以及合规和记录保存所需的其他相关信息。
为此,交易所可以针对提现请求创建 PSBT,在标准交易详情之外,加入包含客户 ID、提现请求 ID 和其他相关审计信息的专有数据字段。这些字段使用 BIP 174 规定的专有键类型(0xFC)标记,在 PSBT 中可能表示为:0xFC <length of identifier> <identifier> <subtype> <key data>。例如,可以将客户 ID 加入专有键中,让交易所在内部系统中追踪这次具体提现。
包含专有数据的 PSBT 随后被发送至冷存储钱包进行签名。冷钱包核验交易详情并添加必要签名,无需理解或处理专有数据。交易完成全部签名并广播后,专有数据帮助交易所核对内部记录与链上交易,确保每次提现都在其系统中得到正确记录和追踪。
加入专有数据的能力,使组织能够在使用标准化 PSBT 格式的同时满足运营要求,增强互操作性和功能。
PSBT 的优势
增强安全性
增强安全性是 PSBT 的主要优势之一。将交易创建与签名过程分离,让私钥在交易创建阶段可以保持离线。这对使用硬件钱包或冷存储方案尤其有益。用户可以在联网设备上创建交易,再使用离线设备签名,尽可能降低私钥暴露于潜在线上威胁的风险。
改善互操作性
PSBT 规范了未签名和部分签名交易的处理方式,促进了比特币钱包软件与硬件之间的互操作性。这种标准化确保交易可以在一个钱包中创建、在另一个钱包中签名,再由第三个钱包广播,而不会出现兼容性问题。这种互操作性对整合各种比特币服务和工具至关重要,也让用户更容易在不同钱包和平台之间切换。
方便复杂交易
PSBT 简化了多重签名和 CoinJoin 等复杂交易的执行。在需要多个签名授权交易的多重签名配置中,PSBT 允许各方独立添加签名,简化流程,减少所有参与方同时在场的需要。同样,在多个用户合并交易以增强隐私的 CoinJoin 交易中,PSBT 支持顺畅协作,而不暴露各自的私钥。
离线签名与灵活性
PSBT 支持离线签名,这对维持高安全标准至关重要。用户可以在联网设备上创建交易,再使用硬件钱包离线签名。这种灵活性也延伸到多方交易:不同签名者可以位于不同地点,各自独立、安全地签署交易。这让 PSBT 能灵活适应多种使用场景,包括安全要求严格的场景。
更好的用户体验
PSBT 简化了交易创建、签名和广播过程,改善了整体用户体验。用户可以放心创建交易,知道自己的私钥仍然安全。PSBT 的标准化格式还意味着,用户可以在不同钱包和服务中使用一致的流程与界面,减少困惑和潜在错误。
结语
部分签名比特币交易(PSBT)引入了支持多重签名和 CoinJoin 等复杂交易类型的标准化格式,显著改善了比特币交易的管理和安全性。
通过分离交易创建和签名,PSBT 确保私钥保持离线,增强了硬件钱包和冷存储的安全性。这种标准化也改善了不同钱包和平台之间的互操作性,简化用户体验并减少兼容性问题。
总的来说,PSBT 是一种增强比特币交易灵活性、安全性和效率的强大工具。