MSTR Cat

区块链/等级 II · 运作机制/2.2 交易/课程 6

手续费替换(RBF)与子为父付(CPFP)

追加手续费与交易钉住(pinning)攻击

材料能够显示交易祖先关系的区块浏览器(例如 mempool.space)支持提高手续费的钱包

好奇

  1. 当交易因手续费过低而卡住时,发送方能做些什么?
  2. 收款方如何为一笔尚未收到的付款买单?
  3. 当交易对手故意将你的资金扣在内存池中时,会发生什么?

探索

  1. 以过低费率广播的交易可能数天都得不到确认,甚至完全从内存池中消失,而支付更高手续费的交易则在它周围陆续得到确认。有两种技术可以在广播后提高实际手续费:发送方可以用支付更高手续费的版本替换该交易,或者收款方可以以较高的手续费花费它的某个输出,使矿工将两笔交易一并打包。
  2. 手续费替换(RBF)让发送方能够修正低估的手续费。BIP125引入了通过输入的nSequence字段发出可替换信号的机制。根据Bitcoin Core的替换规则,替换交易支付的手续费至少要等于其所取代的全部交易的手续费总和,再加上按其自身大小计算的额外中继费,并且费率要高于与其直接冲突的交易。Bitcoin Core 24版本加入了“full RBF”(完全RBF)接受模式,即使没有明确信号也将交易视为可替换,该模式在28版本中成为默认设置。
  3. 子为父付(CPFP)适用于无法修改入账付款的收款方。收款方创建一笔新交易,花费卡住的父交易中尚未确认的输出,并为这笔子交易附上高额手续费。矿工按祖先费率评估整个交易包;打包子交易就必须同时打包父交易,因为只有当父交易在同一区块或更早的区块中得到确认时,子交易才有效。
  4. 其经济逻辑依赖于总价值。如果父交易支付1 sat/vB,而一笔体积较大的子交易支付50 sat/vB,那么这个交易包对矿工来说就是一个同时确认两笔交易的有利可图的机会。这使得收款方即使尚未掌控已确认的币,也能实际上补贴矿工打包其卡住的入账付款;这需要精确计算总权重和手续费。
  5. 交易钉住(pinning)是这一体系中的一个严重漏洞。交易对手可以故意在内存池中保留一笔带有大量后代交易的低费率交易,以阻止时间敏感的交易在截止时间之前得到确认。在闪电网络这类协议中,通道关闭依赖于特定的时间锁;如果攻击者钉住了你的关闭交易,而你被迫等待超过安全时限,攻击者就有可能盗取资金。
  6. 开发者的应对措施包括:近期Bitcoin Core版本中的策略豁免(carve-out)、第3版('TRUC')交易和交易包中继,以及在Bitcoin Core 28和29中推出的临时锚点(pay-to-anchor输出)。这些机制让低手续费的父交易可以与高手续费的子交易作为一个交易包一起传播。这些缓解措施降低了、但并未完全消除恶意行为者钉住时间敏感交易的能力;钉住影响的是转发策略,而非共识。

关键事实

  • 子为父付(CPFP)让收款方能够通过以高手续费花费入账付款的输出,来加速这笔付款的确认。
  • BIP125允许通过交易输入中的nSequence字段发出可替换信号。
  • RBF替换交易支付的手续费至少要等于其所取代的全部交易的手续费,再加上按自身大小计算的额外费用,并且费率更高。
  • CPFP之所以有效,是因为矿工按合并后的祖先费率来评估父子交易包。
  • Bitcoin Core 28版本将接受full RBF设为节点的默认行为。
  • 近期的Bitcoin Core版本加入了交易包中继和TRUC(第3版)交易,使追加手续费在面对钉住攻击时更加可靠。

练习 九、六、三、一

9收集列出9种交易确认速度至关重要的场景:从零售购物到闪电网络通道关闭。注明截止时间以及错过截止时间的后果。
6归类按谁能加速交易,将这9种情况分为6类:发送方、接收方、双方均可、第三方、协议规则,或无人能加速。
3提炼将这6类归纳为交易在超出预期确认时间后仍滞留在内存池中的3个根本原因。
1凝结用1句话解释:CPFP如何在两个互不信任的交易方之间建立起经济上的依赖关系。

事实核查

日期、数字及数据均依据下方列出的已发表资料进行核实。

在互动学院中打开 →

EN PT ES JA KO RU DE FR MS