协议演进 / BIP/比特币改进提案 / BIP-392

BIP-392 静默支付输出脚本描述符

为静默支付定义 sp() 描述符与 spscan、spspend 两种密钥编码,让静默支付钱包能纳入现有的描述符备份与互操作体系。本 BIP 目前处于草案状态。

一、档案卡

档案卡
编号BIP-392
标题Silent Payment Output Script Descriptors
作者Craig Raw <[email protected]>
指定日期2026-02-06
层级Applications(应用)
类型Specification(规范类)
状态Draft(草案)
依赖BIP-341、BIP-350、BIP-352、BIP-380
阅读版https://bips.dev/392
官方原文https://github.com/bitcoin/bips/blob/master/bip-0392.mediawiki

二、放在哪一族

输出描述符与静默支付两族的交汇处。BIP-352 定义了静默支付:用一个静态地址收款,链上却不留下可关联的痕迹;BIP-380 定义了输出脚本描述符框架,钱包靠它统一表示“该派生哪些脚本”、实现互操作与备份恢复。BIP-392 做的就是把前者接入后者。

它依赖的文档:

BIP-341:Taproot,描述符最终产出的输出类型

BIP-350:Bech32m 编码,两种新密钥编码都用它

BIP-352:静默支付协议本身,定义扫描密钥与花费密钥的角色

BIP-380:输出脚本描述符总框架

此外,花费密钥还可以是 BIP-390 定义的 musig() 聚合密钥表达式(见第四节)。

三、它要解决什么

BIP-352 只定义了静默支付协议本身,没有规定钱包该如何用描述符来表示一个静默支付钱包。结果是:各钱包若各写各的表示方法,静默支付钱包就无法像普通描述符钱包那样跨软件导入导出、统一备份恢复。

BIP-392 补上这一层:给出一种标准化的描述符写法,让静默支付输出能纳入既有的描述符基础设施,钱包互操作与备份恢复都沿用现成机制。

四、规则本身

4.1 两种新密钥编码

原文定义两种密钥表达式,都采用 Bech32m 编码,数据部分先是一个字符 q(表示静默支付版本 0),再跟载荷;序列化规则沿用 BIP-352 的定义。

区别在于是否含花费私钥:只有 spscan 的一方能发现收款、不能动钱;spspend 则扫描与花费都能做。

4.2 sp() 表达式

新增顶层脚本表达式 sp(),只能用作顶层描述符,不能嵌进 sh()、wsh() 等其他表达式。

单参数形式 sp(KEY):KEY 必须是 spscan 或 spspend 编码的密钥,可带密钥来源信息(指纹与派生路径);若带来源信息,它所指的,是按 BIP-352 推荐的子路径派生扫描与花费密钥的深度——扫描用 1h/0,花费用 0h/0。

双参数形式 sp(KEY,KEY):第一个是扫描密钥,必须是单个私钥(例如 WIF 压缩私钥或 xprv 扩展私钥)——因为扫描必须用到扫描私钥;第二个是花费密钥,可以是 BIP-380 或其他密钥表达式 BIP 定义的任一表示单个密钥的表达式,公钥私钥均可,例如 BIP-390 的 musig() 聚合密钥。

任何 sp() 表达式下都不允许未压缩密钥,因为 BIP-352 只允许压缩公钥。

4.3 产出什么脚本

sp() 描述符与发送方的输入公钥结合后,按 BIP-352 产出 P2TR 输出脚本,即 BIP-341 的 Taproot 输出。原文指出,这些输出在链上与普通 Taproot 输出无法区分。

4.4 用法

五、谁必须动

普通持币人:无直接变化。是否使用静默支付收款仍取决于钱包是否支持 BIP-352;本 BIP 影响的是钱包如何记录与备份这种钱包。

钱包开发者:需实现 sp() 顶层表达式、spscan/spspend 的编解码与校验(包括拒绝未压缩密钥、拒绝嵌套使用),才能让静默支付钱包以描述符形式导入导出。

全节点与矿工:不涉及。产出的是标准 Taproot 输出,节点无感。

共识层:不修改任何共识规则。

六、现在算不算数,以及一个常见误读

状态为 Draft。原文的参考实现与测试向量两节都标注 TBD(待定),说明这份规范还远未定型:写法已成文,但钱包是否、以及何时按它实现,原文没有给出任何采用情况,不应臆测。它也不改变 BIP-352 本身的地位——静默支付协议与它的描述符表示是两件事。

常见误读:

“有了 BIP-392,静默支付就有了新地址格式。”

不对。spscan、spspend 与 sp() 都是给钱包内部与备份用的描述符语法,不是对外收款的地址;收款方对外给出的仍是 BIP-352 的静默支付地址,最终上链的也只是普通 Taproot 输出。

七、延伸

本页内容整理自 bitcoin/bips 仓库与 bips.dev,事实已与仓库核对;解读仅供学习参考。