协议演进 / BIP/比特币改进提案 / BIP-433
BIP-433
一种无钥锚点输出:不需要任何签名或见证数据就能花费,专为预签交易事后靠 CPFP 补手续费而设。本 BIP 目前处于草案状态。
一、档案卡
| 编号 | BIP-433 |
|---|---|
| 标题 | Pay to Anchor (P2A) |
| 作者 | Gregory Sanders <[email protected]> |
| 指定日期 | 2025-12-08 |
| 讨论日期 | 2024-06-27 |
| 层级 | Applications(应用) |
| 类型 | Informational(信息类) |
| 状态 | Draft(草案) |
| 阅读版 | https://bips.dev/433 |
| 官方原文 | https://github.com/bitcoin/bips/blob/master/bip-0433.mediawiki |
二、放在哪一族
锚点输出与合约协议加费族。“锚点”(anchor)是闪电网络等第二层系统里常用的模式:在预签交易上留一个专门的输出,日后靠它做 CPFP 加费。BIP-433 把其中一种形态固定成标准输出脚本 P2A。
它与同族文档的关系,原文分得很清楚、互不依赖:
BIP-431:TRUC 交易,限制未确认交易的拓扑,能给任何人都能花的 P2A 提供防钉保护;拿不准时原文建议与 TRUC 搭配使用
临时粉尘(Ephemeral Dust):一项转发政策,允许一笔交易带一个粉尘输出,前提是它在同一个交易包裹中被花掉;它与 P2A 是实现层面的相邻概念
临时锚点(Ephemeral Anchors):历史上指 P2A 输出类型与临时粉尘的组合;带钥锚点加临时粉尘同样是被接受的模式,因此几个概念保持分开
三、它要解决什么
第二层协议的交易常常要提前很久预签好,签名时还不知道未来广播时的费率水平。锚点输出就是留给未来的“挂钩”:等到真正广播时,再花掉这个锚点、挂一笔子交易,用 CPFP 把整包交易的手续费补到当时的行情。
原文指出,当钱包用户不在乎“由谁来加费”、只要有人加就行时,P2A 这种无钥形态有两个好处:
- 输出本身与花费它的输入占用都极小,省手续费;
- 无钥意味着加费不需要任何特权密钥材料,像瞭望塔(watchtower)这类代管服务也能替人加费,互操作性更好。
代价原文同样写明:若不采取防钉措施,选这种输出可能招致恶意骚扰(griefing)——毕竟任何人都能花它。若拿不准,原文的建议是与 BIP-431 的 TRUC 交易搭配使用。
四、规则本身
4.1 输出脚本
P2A 输出的 scriptPubKey 固定为:
OP_1 <0x4e73>
即见证版本 1 加两字节的见证程序 0x4e73。原文注脚说明:原生 SegWit 输出的见证程序至少要有两字节且不能全为零,而这两个字节是特意选的——用 bech32m 编码后恰好拼出 “fees” 一词。
它对应的地址在各网络上是固定不变的同一串:
- 主网:
bc1pfeessrawgf - 公共测试网:
tb1pfees9rn5nz - regtest:
bcrt1pfeesnyr2tx
因为脚本完全固定,P2A 没有“每个人的锚点地址”之说,全网都是这一个。
4.2 花费规则
P2A 是“无钥”(keyless)输出:花费它不需要任何签名,也不需要任何见证数据。本 BIP 规定:不附带见证数据的 P2A 输入,在 Bitcoin Core 中视为标准——避免无意义地填充见证数据。原文强调,共识含义不变,变的只是标准性政策。
实现出处为 Bitcoin Core PR #30352,文件头中的讨论条目亦指向该 PR。
4.3 与临时粉尘的关系
原文在相关工作中交代了实现细节:P2A 的粉尘阈值默认设为 240 satoshis,其他输出的粉尘水平不变,且带粉尘的交易必须是零手续费;任何输出脚本类型都可以有低至 0 价值的输出。这使 0 价值的 P2A 锚点(即临时锚点用法)在政策上成为可能,但粉尘政策本身是与 P2A 分开的概念。
五、谁必须动
普通持币人:不要把 P2A 地址当收款地址用——它不是给个人收款的,任何人都能花走其中的币。它只出现在合约协议的交易结构内部。
钱包与第二层协议开发者:在预签交易中留 P2A 输出作为加费挂钩;构造花费时不附带见证数据。同时应评估恶意骚扰风险,必要时与 BIP-431 的 TRUC 搭配。
全节点(策略层):按本 BIP,花费 P2A 且见证为空的输入应视为标准、予以转发。创建 P2A 输出则早在 SegWit 部署时就已被视为标准;此前非标准的是花费它的交易,因为该脚本形态原本被保留为升级挂钩。
共识层:不修改任何共识规则。原文明确“共识含义不变”。
六、现在算不算数,以及一个常见误读
状态为 Draft,类型为信息类:它描述的是一种已在 Bitcoin Core 中有实现(PR #30352)的标准输出类型与相应的标准性处理,并把“创建早已标准、花费现规定为标准”这一事实写成文档。向后兼容方面原文称:未发现与既往用法的冲突。
常见误读:
“P2A 是一种新的个人收款地址,和 Taproot 地址一样可以发给别人打款。”
不对。P2A 的脚本是写死的一串字节,对应地址全网唯一且人人可花:没有私钥、没有所有者。把钱打进普通 P2A 输出而不做后续安排,等于把币放在谁都能拿走的地方;它的正当用途只有一个——在合约协议的预签交易里当加费锚点,并配合防钉措施使用。
七、延伸
- 阅读版:https://bips.dev/433
- 官方原文:https://github.com/bitcoin/bips/blob/master/bip-0433.mediawiki
- 相关:BIP-431 针对钉住攻击的拓扑限制(TRUC)
- 仓库总目录:https://github.com/bitcoin/bips
