跳至主要內容
入門

Bumpfee

學習使用 bumpfee RPC 命令提高卡住交易的手續費,加速確認。

8 分鐘

bumpfee 是 Bitcoin Core 提供的 RPC 命令,用於提高未確認交易的手續費。 當交易因手續費過低而卡在 mempool 中時,這是最簡單的加速方法。

基本用法

# 基本語法
bitcoin-cli bumpfee <txid>

# 返回結果
{
  "txid": "new_txid...",      # 新交易的 TXID
  "origfee": 0.00001000,      # 原始手續費
  "fee": 0.00002500,          # 新手續費
  "errors": []
}

# 指定目標確認塊數
bitcoin-cli bumpfee <txid> '{"conf_target": 6}'

# 指定費率
bitcoin-cli bumpfee <txid> '{"fee_rate": 25}'  # 25 sat/vB

參數選項

參數 類型 說明
conf_target number 目標確認區塊數
fee_rate number 指定費率 (sat/vB)
replaceable boolean 新交易是否可再次替換
estimate_mode string ECONOMICAL 或 CONSERVATIVE

前提條件

交易必須滿足:
1. 是錢包創建的交易
2. 仍在 mempool 中(未確認)
3. 標記為可替換 (RBF)
   - nSequence < 0xfffffffe
   - 或通過 -walletrbf=1 創建

# 檢查交易是否可 bump
bitcoin-cli gettransaction <txid>
{
  ...
  "bip125-replaceable": "yes",  # 必須是 "yes"
  "confirmations": 0,            # 必須是 0
  ...
}

工作原理

bumpfee 內部流程:

1. 驗證原交易可替換
2. 計算需要的新費率
3. 創建替換交易:
   - 相同的輸入
   - 調整找零輸出(減少以增加費用)
   - 或添加新輸入(如果找零不夠)
4. 簽名新交易
5. 廣播新交易

// 費用來源優先級
1. 減少找零輸出
2. 如果找零不夠,添加額外輸入
3. 如果仍不夠,失敗

實際示例

場景:加速卡住的交易

# 1. 發送交易(低費率)
bitcoin-cli sendtoaddress "bc1q..." 0.1

# 返回: abc123... (txid)

# 2. 交易卡住了,檢查狀態
bitcoin-cli gettransaction abc123...
# confirmations: 0, fee: -0.00000141

# 3. 提高手續費
bitcoin-cli bumpfee abc123... '{"fee_rate": 50}'

# 返回:
{
  "txid": "def456...",
  "origfee": 0.00000141,
  "fee": 0.00005600,
  "errors": []
}

# 4. 新交易 def456... 替換了原交易
# 原交易 abc123... 從 mempool 中移除

場景:多次 bump

# 第一次 bump
bitcoin-cli bumpfee abc123... '{"fee_rate": 20}'
# 新 txid: def456...

# 費率還是不夠,再次 bump
bitcoin-cli bumpfee def456... '{"fee_rate": 50}'
# 新 txid: ghi789...

# 注意:每次 bump 都是新交易
# 舊交易會被替換

psbtbumpfee

對於需要外部簽名的錢包,使用 psbtbumpfee:

# 生成 PSBT 而不是直接廣播
bitcoin-cli psbtbumpfee <txid> '{"fee_rate": 30}'

{
  "psbt": "cHNidP8B...",
  "origfee": 0.00001000,
  "fee": 0.00003000,
  "errors": []
}

# 然後用外部設備簽名
# 最後用 finalizepsbt 和 sendrawtransaction 廣播

錯誤處理

# 常見錯誤

# 1. 交易不可替換
bitcoin-cli bumpfee <txid>
# error: Transaction is not BIP 125 replaceable

# 解決: 只能使用 CPFP

# 2. 交易已確認
bitcoin-cli bumpfee <txid>
# error: Transaction has been mined, or is conflicted

# 解決: 無需操作,交易已完成

# 3. 費用不足
bitcoin-cli bumpfee <txid> '{"fee_rate": 5}'
# error: Insufficient fee

# 解決: 使用更高的費率

# 4. 資金不足
bitcoin-cli bumpfee <txid> '{"fee_rate": 1000}'
# error: Unable to create transaction

# 解決: 降低費率或添加更多資金到錢包

費率估算

# 在 bump 前先估算合適的費率
bitcoin-cli estimatesmartfee 6
{
  "feerate": 0.00025000,  # BTC/kvB
  "blocks": 6
}

# 轉換為 sat/vB
# 0.00025 BTC/kvB = 25 sat/vB

# 然後使用這個費率
bitcoin-cli bumpfee <txid> '{"fee_rate": 25}'

# 或直接使用 conf_target
bitcoin-cli bumpfee <txid> '{"conf_target": 6}'

GUI 操作

在 Bitcoin Core GUI 中:

1. 打開「交易」標籤
2. 找到卡住的交易(0 確認)
3. 右鍵點擊交易
4. 選擇「增加交易費用」(Increase transaction fee)
5. 確認新費用
6. 錢包自動創建並廣播替換交易

最佳實踐

  • 啟用 RBF:在 bitcoin.conf 中設置 walletrbf=1
  • 預留找零:確保交易有找零輸出以便 bump
  • 監控 mempool:及時發現卡住的交易
  • 合理估算:使用 estimatesmartfee 確定費率
  • 不要過度 bump:避免浪費手續費

與 CPFP 的比較

特性 bumpfee (RBF) CPFP
前提 交易標記 RBF 有可花費輸出
執行者 發送者 接收者或發送者
效率 更高 需要額外交易
TXID 變化
已複製連結
已複製到剪貼簿