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

BIP-433 Pay to Anchor(P2A)

一种无钥锚点输出:不需要任何签名或见证数据就能花费,专为预签交易事后靠 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 这种无钥形态有两个好处:

代价原文同样写明:若不采取防钉措施,选这种输出可能招致恶意骚扰(griefing)——毕竟任何人都能花它。若拿不准,原文的建议是与 BIP-431 的 TRUC 交易搭配使用。

四、规则本身

4.1 输出脚本

P2A 输出的 scriptPubKey 固定为:

OP_1 <0x4e73>

即见证版本 1 加两字节的见证程序 0x4e73。原文注脚说明:原生 SegWit 输出的见证程序至少要有两字节且不能全为零,而这两个字节是特意选的——用 bech32m 编码后恰好拼出 “fees” 一词。

它对应的地址在各网络上是固定不变的同一串:

因为脚本完全固定,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 输出而不做后续安排,等于把币放在谁都能拿走的地方;它的正当用途只有一个——在合约协议的预签交易里当加费锚点,并配合防钉措施使用。

七、延伸

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