v3 交易与临时锚点:比特币给钉住问题装的新闸门 图 1
v3 交易与临时锚点:比特币给钉住问题装的新闸门 · 图 1

先回到钉住问题

闪电等合约协议可能预先签署未来才广播的交易。签约时估计的手续费,未必适合实际广播时的拥堵程度;交易又可能受时间锁约束,不能无限等待。参与者因此需要费用提升通道。然而,节点的祖先、后代数量限制与替换条件组合起来,可能让一笔关键交易难以追加子交易或完成替换。这类问题称为交易钉住,背景见 交易钉住与费用提升的边界。TRUC 的目标是缩小其中一部分拓扑风险,不是保证交易按时确认。

v3 的限制究竟限制什么

BIP431 用交易版本号 3 表达选择 TRUC 策略。在这套策略中,一笔未确认交易最多有一个未确认祖先、一个未确认后代;未确认的祖先和后代也必须采用 TRUC。已确认输出不受这一继承条件束缚,因此可以用已确认的普通输出为相关交易提供资金。规范还限制交易的虚拟大小,并对带未确认祖先的子交易设置更紧的大小限制。这里讨论的是内存池接纳与中继条件,不是新增区块共识规则。

拓扑变小之后,节点更容易比较替换前后的手续费激励,也能限制一个对手通过大量后代抬高替换成本的空间。TRUC 交易会被视为可替换,即使没有通过 BIP125 的序列号方式表达这一点;但这不等于取消所有费用门槛,更不等于支付任意费用都可以替换。具体替换仍须符合节点所实现的政策。数量、体积、费用和冲突集合是不同条件,不应压缩成一句“放弃费差保护”。

锚点不是 OP_RETURN 指纹

费用提升中的锚点是供后续交易花费的输出,用于让子交易承担手续费。OP_RETURN 输出不可花费,不能充当这种供子交易消费的锚点。Bitcoin Core 28.0 发行说明引入的 P2A 是一种支持无密钥花费的标准见证输出类型;它与给多方交易刻写指纹没有关系,也不能被解释为必须由特定人签名授权的输出。

另一个相关但不能混用的概念是临时尘埃。Bitcoin Core 29.0 发行说明允许零手续费交易带一个尘埃输出;若要花费该交易的未确认输出,还必须一起花费那个尘埃输出。这使尘埃在包里被创建又被花费,而不是长期留下难以经济花费的小额输出。P2A 描述输出类型,临时尘埃描述接纳条件,TRUC 描述未确认交易拓扑,三者分属不同层次。

按发行版本定位实现,而不是猜部署进度

本文依据明确的历史版本说明作区分:Core 28.0 将符合 TRUC 策略的版本 3 交易视为标准交易,并加入 P2A 与有限包替换;Core 29.0 说明了临时尘埃政策;Core 30.0 才在钱包更新部分明确记载创建和花费 TRUC 交易的支持。不能把“节点会中继某种交易”写成“所有钱包已经会创建这种交易”,也不能把某个 Core 版本的功能推广成所有闪电实现已经采用。

这些版本材料用于限定本文的技术结论,不是对文章发布日期的全网部署统计。BIP 文本、发行代码、钱包适配和矿工接纳是不同证据对象。某个客户端支持特性,并不能证明你的通道协议使用该特性;需要查看所用实现的具体版本、交易构造方式与测试结果,提案与部署的区别见 BIP 提案与实现的生命周期

一个费用提升场景怎么读

假设一笔预签名父交易包含可花费的锚点,广播时费用不足。具备相应能力的钱包可以构造花费锚点的子交易,并加入可用资金支付手续费,让节点按允许的包形状进行评估。锚点是父交易中的输出,不是凭空增加的另一笔“指纹父交易”。构造前还要核对子交易大小、资金输入是否已确认,以及包是否满足目标节点的接纳条件。

如果已经存在一个竞争子交易,需要进一步分析替换或同胞驱逐条件,不能假定任何新子交易都能入池。即便本地测试接纳,远端节点可能采用不同政策,矿工也可能有不同选择,网络拥堵仍可能造成确认延迟。与时间锁有关的业务不能只看本地返回成功,应监控传播与确认,并预留处置时间,背景见 闪电通道强制关闭与时间窗口

对普通用户的边界

不要手工把交易版本号改成 3 就认为获得完整保护,也不要据此关闭原有监控。旧软件可能把相关交易视为非标准而不转发;“共识上有效”不意味着“每个节点都会中继”。使用新交易结构前,应在测试环境演练正常接纳、竞争替换、重组与费用不足等路径,并核对钱包是否正确处理输出权限。TRUC 缓解的是特定策略限制下的钉住问题,不负责消除全部协议风险,也不承诺更便宜或更快到账。本文不构成投资建议。