双侧加急的矛盾
闪电通道的资金交易常由双方出资,谁都有动力在它迟迟不确认时提高有效费率。子付父(CPFP)是标准手段:用自己的新交易花掉资金交易的输出,把费用一起带上,让矿池看到整棵“父子树”合计费率。问题是节点有包限制——一次评估的祖先集合有交易数与体积上限,先手一方如果塞进多个未确认祖先,就会占满名额,后手一方再想加子交易就会被规则挡在门外,形成单方面的“钉住”。

carve out 的规则设计
Bitcoin Core 0.19 引入 CPFP carve out 作为受控例外:在一个交易包内,允许其中一笔恰好只带一个未确认祖先的交易适度突破包的大小与深度限制。也就是说,每个包预留了一个“单祖先加急名额”。这样先手方即使堆满祖先链,后手方仍然保有通过一笔 CPFP 子交易抬费率的通道,双方加急能力恢复对称。相关实现是 PR 15681;同年合入的 PR 16421 进一步允许这类 carve out 交易本身被 RBF 替换,避免例外又变成新的钉住工具。闪电网络的锚定输出方案正是靠这个名额保证通道双方都能对资金交易做费用提升,见 闪电通道链上关闭手续费与锚定输出。
它和包、祖先限制的关系
普通交易送进内存池时,节点会把它的未确认祖先与自身打包评估,祖先数量和包体积都不能越线;被祖先拖累的子交易要等父交易先被确认或淘汰。背景见 交易包与祖先限制。carve out 并不推翻这套限制,只是承诺“每包留一个位置给标准的双人 CPFP 场景”,且同一笔交易想第二次利用这个名额是不行的——防止有人把例外变成常规捷径。
后续演进
2024 年社区讨论过把 RBF 规则套用到 v3 交易上,从而在集群内存池(cluster mempool)体系下移除对 carve out 的依赖;v3 与临时锚点就是这条线上的产物,见 v3 交易与临时锚点。读老资料时要注意版本差异:0.19 之前的节点没有这个名额,同样的交易在不同节点上命运可能不同。对个人用户的实际含义是:如果通道开户交易卡住,先确认自己的实现是否支持带锚定输出的 CPFP,再考虑请对方 RBF,双方都支持交互建交易的 v2 通道还能直接协商换交易,见 闪电 v2 通道双出资。
风险提示:比特币价格与网络状态波动较大,本文仅作技术与安全科普,不构成任何投资建议;涉及资金操作前请小额试转并逐项核对,所有协议参数以官方规范与源码为准。
用户视角的三步排查
如果你的闪电节点报”资金交易未确认且加急失败”,可以按这个顺序走:第一步,看资金交易是否带锚定输出——没有锚定输出的老式开通道交易,CPFP 时你得能控制它的某个输出,双方都没控制权的场景最尴尬;第二步,确认你的 Core 版本不低于引入 carve out 的 0.19,且内存池里没有异常拥堵导致包评估被拒;第三步,若对端支持 v2 的 RBF 协商,直接走 tx_init_rbf 比继续堆 CPFP 更省事。还有一类偶发情况是节点重启后 unbroadcast 集合丢了交易祖先(见 unbroadcast 集合),先把交易重新广播出去再谈加急。把这三步走完,绝大多数”开户卡住”要么解决、要么能明确定位到对端不配合,而不是协议坏了。顺便澄清一个高频误读:carve out 只保证你”有资格加急”,不保证加急一定省钱——它突破的是包的体积与深度限额,费用本身仍要覆盖你新增子交易的带宽成本,费率行情高企时两侧各自堆 CPFP 的实际总花费可能高于一次协商一致的 RBF。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。