什么是比特币中的手续费替换(RBF)?

RBF 是一种实用而强大的机制,增强了比特币的灵活性。

New to Nervos? Start here.

Explore the guide
什么是比特币中的手续费替换(RBF)?

手续费替换(Replace-by-Fee,RBF)是比特币中的一种机制,允许用包含更高手续费的新版本,替换一笔尚未确认的交易。

这项功能帮助交易竞争有限的区块空间,让发送者在网络拥堵时能够加快确认。RBF 的核心作用是让比特币网络保持灵活和高效,尤其是在内存池拥挤、矿工优先处理高费交易时。

理解比特币交易的基本概念

比特币交易本质上是一条经过签名的消息,将价值从一方转移给另一方。交易广播到网络后,矿工决定是否将其纳入下一个区块。这个决定很大程度上取决于交易附带的手续费,因为矿工倾向于选择能最大化其回报的交易。

比特币内存池是所有待处理交易的等候区。网络活动增加时,成千上万笔交易竞争有限的区块空间。低费交易可能长时间得不到确认,有时需要等待数小时甚至数天。在严重拥堵期间,具有竞争力的手续费是争取及时确认的最有效方式。

在比特币早期,交易一经广播,手续费选择就被视为已定,事后没有简单直接的方法提高费用。这让用户感到困扰,尤其是低费交易卡在内存池中时。

RBF 正是为解决这一问题而引入的。它提供一种可预测、安全的方法来修改未确认交易,让交易更好地适应不断变化的网络状况。

什么是手续费替换(RBF)?

RBF 允许用支付更高手续费的新交易,替换一笔未确认的比特币交易。新交易实际上覆盖了旧交易,让矿工更有动力将其纳入下一个区块。

最早形式的 RBF 由比特币创造者中本聪(Satoshi Nakamoto)引入。他设计了一种主动选择加入的机制,允许交易在特定条件下被替换。此后,这一概念不断完善和更新,并在 BIP 125(比特币改进提案 125)中正式规定,成为如今所称的选择性 RBF(opt-in RBF)。

RBF 的核心用途是手续费提升(fee bumping)。当交易因费用过低而滞留内存池时,发送者可以发出费用更高的替代交易。这能避免交易卡住,并帮助比特币手续费市场高效运作。由于发送者可以纠正过低的出价,RBF 已成为现代比特币交易管理的重要组成部分,在高需求时期尤其如此。

RBF 的类型:选择性 RBF 与完全 RBF

RBF 主要有两种形式:选择性 RBF(Opt-in RBF)和完全 RBF(Full RBF)。二者体现了对比特币交易在确认前应有多大灵活性的不同理念。

选择性 RBF 是使用最广泛的形式。在该机制下,只有发出可替换信号的交易才有资格被替换。该信号嵌入在序列号字段中。因此,除非发送者明确作出不同选择,大多数交易在广播时就保持最终确定状态。这保留了人们对交易最终性(transaction finality)的传统预期,同时为希望获得灵活性的用户提供选择。

完全 RBF 则允许替换任何未确认交易,无论它是否发出可替换信号。这种方式将所有内存池交易都视为在确认前尚未完成,让发送者拥有随时修改手续费的最大灵活性。

RBF 的底层运作方式

RBF 通过交易结构、内存池策略和节点规则共同运作。在基础层面,每笔比特币交易都包含一个名为 nSequence 的字段。这个序列号最初与锁定时间有关,BIP 125 则用它来发出可替换信号。如果序列号低于某个阈值,该交易就选择了 RBF,节点会将其理解为允许考虑替代交易。

替代交易必须遵循严格规则。它必须支付更高的费率和更高的绝对手续费,还必须花费原交易中至少一个相同的输入。这能防止用户以可能扰乱网络行为的方式替换无关交易。新交易不得引入违反节点策略的冲突。这些要求让 RBF 行为可预测,并降低被滥用的可能性。

节点策略略有不同。选择性 RBF 严格遵循 BIP 125。一些节点采用的完全 RBF 则允许在没有选择加入信号的情况下替换交易。在完全 RBF 配置中,先见优先规则(first-seen rule)不适用,因此确认前任何高费交易都可以替换低费交易。一些实验性变体要求替代交易保持输出不变,或在交易达到一定时间后延后替换。完全 RBF 虽然存在争议,但仍是每个节点运营者可以独立选择的策略。

内存池在其中发挥核心作用。节点收到替代交易后,会检查 BIP 125 规则或自身配置的策略。如果可以接受,就从内存池移除旧交易,加入新交易。新交易随后在网络中传播。矿工看到更高的手续费,通常会选择它而不是旧版本。新交易进入区块后,原交易就被永久丢弃。

RBF 与零确认交易

比特币中的零确认(zero-confirmation,zero-conf)交易,是已经广播但尚未被纳入区块的交易。一些商家过去接受零确认支付,以实现快速结账,零售场景尤其如此。但这些交易本身就有风险,因为在矿工确认前,它们还不是分布式账本的一部分。

RBF 对零确认支付有显著影响。如果一笔零确认支付发出了可替换信号,它就可以在确认前被替换,因此不适合依赖即时且不可逆最终性的支付场景。

即使没有 RBF,零确认支付仍容易受到双重支付(double-spending)尝试的影响,因为发送者可以创建另一笔花费相同币的交易,希望矿工接受第二个版本而不是第一个。RBF 并没有制造这一风险,而是将它正式化并更明确地揭示出来,使零确认交易在某些应用场景中吸引力下降。

如今,一些商家仍对小额交易采用零确认支付,依赖的是对行为的假设,而不是技术保证。在这些情况下,对 RBF 的顾虑成为经营决策的一部分。

RBF 的操作流程与实际例子

只要钱包支持,RBF 就很容易使用。用户先以标准手续费广播交易。如果网络变得拥堵,或等待确认的时间超过预期,钱包会提供提高手续费的按钮或菜单选项。钱包随后构造一笔花费相同输入、但手续费更高的新交易。用户批准后,钱包广播替代交易。节点验证该交易,如果满足策略要求,就将其在网络中传播。

例如,Blockchain.com 钱包提供加速(Speed Up)按钮。交易停滞时,用户点击按钮,钱包就会根据当前内存池状况计算合适的费率、构造替代交易并自动广播。这种设计将技术细节隐藏在直观界面之后,让初学者也能方便地提高交易手续费。

RBF 与其他提高手续费的方法

RBF 不是提高比特币交易手续费的唯一方法。另一种常用方法是子为父偿(Child-Pays-for-Parent,CPFP)。RBF 和 CPFP 都能提高费用,但运作机制不同,适用场景也不同。

RBF 通过用手续费更高的新版本替换原交易来修改它。CPFP 则创建一笔新交易,花费卡住的交易的输出。新交易支付较高手续费,激励矿工将父交易与子交易一并处理。

最重要的区别是,RBF 要求原发送者发起手续费提升。CPFP 则可由接收者,或任何控制卡住交易的某个输出的参与方使用。当发送者无法或不愿修改原交易时,这让 CPFP 更有优势。

发送者控制输入、只需调整原交易时,RBF 往往更高效。当控制权在接收者手中时,CPFP 更有用,尤其是在商户收款、交易所或托管服务场景中。二者共同促成了一个能够适应网络状况变化的灵活手续费市场。

结论

RBF 是一种实用而强大的机制,增强了比特币的灵活性。它允许用更高的手续费更新未确认交易,避免交易在网络状况变化时卡住。

随着比特币持续发展、区块空间更加宝贵,灵活管理手续费变得越来越重要。RBF 直接推动了这一发展,为应对波动的手续费提供实用方法,并提升比特币网络的整体效率。

Share
CKB

OP_RETURN 详解:比特币如何在支付之外锚定数据

OP_RETURN 操作码虽小,却是比特币脚本系统中极为重要的组成部分。

6 min read

Gossip 协议详解:它们如何在区块链中运作

Gossip 协议以精巧的方式解决了分布式计算的一项根本难题:如何在没有中心化协调的情况下,高效传播信息。

6 min read

理解比特币交易中的找零地址

在比特币网络庞大的架构中,找零地址看起来只是一个小小的技术细节,却对系统的正常运转、隐私和效率起着出人意料的重要作用。

4 min read
See all articles
↑