BIP-125: 選擇性費用替換 (RBF)
定義交易如何選擇加入 Replace-By-Fee 機制,允許以更高費用替換未確認交易。
125
Standards Track
Proposed
2015-12-04
摘要
Replace-By-Fee (RBF) 允許未確認的交易被另一個支付更高費用的交易替換。 BIP-125 定義了「選擇性 RBF」,只有明確標記的交易才能被替換, 這是通過將輸入的 nSequence 設置為小於 0xFFFFFFFE 的值來實現的。
動機
在比特幣網路擁塞時,低費用交易可能長時間無法確認。RBF 提供了一種機制, 允許用戶提高交易費用以加速確認,而不必等待原交易被遺忘。
選擇加入機制
交易被視為可替換的條件:
任一輸入的 nSequence < 0xFFFFFFFE (4294967294)
這意味著只要有一個輸入的序號小於 0xFFFFFFFE,整個交易就標記為可替換。
替換規則
替換交易必須滿足以下條件:
- 1. 花費相同輸入:至少花費一個與原交易相同的輸入
- 2. 更高費率:每 vbyte 的費用必須更高
- 3. 更高總費用:總費用必須比原交易加上最低中繼費更高
- 4. 不新增未確認輸入:不能引入新的未確認依賴
- 5. 替換數量限制:最多替換 100 筆交易
費用計算範例
原交易
大小:250 vbytes,費用:500 sats
費率:2 sat/vbyte
替換交易要求
費率:必須 > 2 sat/vbyte
總費用:必須 > 500 + (250 × 1) = 750 sats
(假設最低中繼費為 1 sat/vbyte)
RBF vs CPFP
| 特性 | RBF | CPFP |
|---|---|---|
| 操作者 | 發送者 | 接收者 |
| 機制 | 替換交易 | 新增子交易 |
| 效率 | 較高(不增加區塊空間) | 較低(需要額外交易) |
| 要求 | 標記可替換 | 有可花費的輸出 |
Full RBF
Bitcoin Core 24.0 引入了 mempoolfullrbf 選項, 允許節點接受對任何未確認交易的替換,無論其是否標記為可替換。 這是為了提高網路的經濟效率,但也引發了關於零確認交易安全性的討論。
錢包支援
- ✓ Bitcoin Core:完整支援
- ✓ Electrum:完整支援
- ✓ Sparrow:完整支援
- ✓ BlueWallet:支援
注意: RBF 不是共識規則,而是節點的記憶體池策略。 礦工可以選擇不遵循這些規則,但大多數節點和礦工都實現了標準的 RBF 規則。
相關資源
- • BIP-68:nSequence 相對時間鎖
- • Bitcoin Core 費用估算文件
延伸閱讀: 查看 GitHub 上的完整 BIP-125 文件