BitcoinTechnical beginner

ビットコインの未確認トランザクションを解決する方法:RBF・CPFP・再ブロードキャスト完全ガイド

ビットコインのトランザクションが未確認のまま止まっていませんか?Replace-By-Fee(RBF)、Child-Pays-for-Parent(CPFP)、再ブロードキャストツールを使った解決方法をステップごとに解説します。

· 2分

ビットコインのトランザクションを送信し、TXIDを確認したのに、何時間も未確認のまま止まっている。メモプールが混雑していて、手数料が低すぎて、トランザクションが滞っている。これはビットコインで最もよくある問題のひとつですが、完全に解決可能です。

このガイドでは、滞ったビットコイントランザクションを解決する3つの方法、それぞれの使い分け、そしてプロセスを簡単にするツールを紹介します。

トランザクションが滞る理由

ビットコインのトランザクションは、メモプールに入った後、マイナーがより高い手数料を支払うトランザクションを優先的に処理するため、繰り返しスキップされると滞ります。これは以下のような場合に発生します:

  • 手数料を低く設定しすぎた — 手数料率(sat/vB)がマイナーが現在優先している水準を下回っている場合
  • メモプールが急に埋まった — ブロードキャスト後に手数料の急騰が発生し、トランザクションがキューの下位に押し下げられた場合
  • ウォレットの推定が不正確だった — 一部のウォレットはリアルタイムのメモプール混雑状況を反映しない古い手数料推定方式を使用している場合

滞ったトランザクションは失われていません。ビットコインは消えていません。単にまだブロックに含まれていないだけです。最終的に確認されるか、約14日間(336時間)後にノードがメモプールから削除し、資金はトランザクションがなかったかのようにウォレットに戻ります。

しかし14日間は長すぎます。今すぐ解決する3つの方法を見ていきましょう。

方法1:Replace-By-Fee(RBF)

最適な場面: 自分で送信したトランザクションで、ウォレットがRBFに対応している場合。

RBFでは、同じインプットを使いながらより高い手数料を設定した代替トランザクションを作成します。新しいトランザクションが古いものを無効にし、マイナーは手数料の高いバージョンを含めます。

条件

  • 元のトランザクションにRBFシグナリングが有効になっている必要があります(シーケンス番号 < 0xfffffffe)。最新のウォレットのほとんどはデフォルトでこの機能を有効にしています。
  • 送信者のみ使用可能です。受信者はRBFを使えません。

実行方法

Bitcoin Coreの場合:

bitcoin-cli bumpfee "your-stuck-txid"

Bitcoin Coreが現在のメモプール状況に基づいて、適切な手数料率の代替トランザクションを自動的に作成します。

ウォレットアプリの場合: ほとんどのウォレット(Sparrow、Electrum、BlueWallet、Nunchuk)は、未確認トランザクションに「Bump Fee」または「Speed Up」ボタンを表示します。ボタンをクリックし、新しい手数料率を選択して確認するだけです。

適切な手数料の選択: mempool.spaceまたはtxid.ukで現在の手数料率を確認してください。代替手数料を「中程度の優先度(medium priority)」以上に設定すれば、数ブロック以内に確認されます。

RBFが有効でない場合

元のトランザクションにRBFシグナリングがなくても、一部のノードはfull RBF(Bitcoin Core 26.0からデフォルトで有効)に基づいて代替を受け入れます。ただし、すべてのマイナーとノードがfull RBFに対応しているわけではありません。RBFが使えない場合は、代わりにCPFPを使用してください。

方法2:Child-Pays-for-Parent(CPFP)

最適な場面: 受信者の場合、またはRBFが使えない場合。

CPFPはRBFとは異なる仕組みです。滞ったトランザクションを置き換えるのではなく、滞ったトランザクション(親)のアウトプットを使う新しいトランザクション(子)を作成します。子トランザクションが親と自身の両方をカバーするのに十分な高い手数料を支払います。マイナーは両方を一緒に確認することが利益になると判断し、パッケージとして含めます。

条件

  • 滞ったトランザクションから使用可能なアウトプットが必要です。送信者ならお釣りアウトプット(change output)、受信者なら受信アウトプットです。
  • ウォレットが未確認UTXOを使用できる必要があります。

実行方法

Bitcoin Coreの場合:

bitcoin-cli sendtoaddress "your-address" 0.001 \
  "" "" false true null "unset" null 25

最後のパラメータ(25 sat/vB)は、親+子の合算手数料率が現在のメモプール優先度の閾値を超えるよう、十分に高く設定してください。

ウォレットアプリの場合: Sparrow Walletで未確認トランザクションを右クリック → 「Accelerate Transaction (CPFP)」を選択します。ウォレットが必要な子トランザクションの手数料を自動的に計算します。

必要な子トランザクション手数料の計算

子トランザクションは親の不足分を補う必要があります:

必要な子トランザクション手数料率 =
  (目標合計手数料 - 親の実際の手数料) / 子のvsize

例:親TXが200 vBで手数料が400 sat(2 sat/vB)の場合、パッケージ平均を10 sat/vBにするには合計目標は2,000 satです。子が1,600 satを支払う必要があります。子が150 vBなら、子単体の手数料率は約10.7 sat/vBになります。

方法3:再ブロードキャスト

最適な場面: メモプールから完全に削除されたトランザクション。

約14日が経過すると、ノードは未確認トランザクションを削除します。トランザクションが削除された場合は、元の生のトランザクションを再ブロードキャストするか、より高い手数料で新しいトランザクションを作成できます。

再ブロードキャストの方法

tx.txid.ukを使用:

  1. tx.txid.uk → Broadcastに移動
  2. 署名済みの生のトランザクションhexを貼り付け
  3. broadcastをクリック — ビットコインネットワークにトランザクションが送信されます

Bitcoin Coreを使用:

bitcoin-cli sendrawtransaction "raw-tx-hex"

公開APIを使用:

curl -X POST https://mempool.space/api/tx \
  -d "raw-tx-hex"

元のトランザクションが削除されている場合、低い手数料の古いトランザクションを再ブロードキャストするよりも、現在の適切な手数料率で新しいトランザクションを作成する方がよい場合があります。

どの方法を使うべきか?

状況方法理由
自分が送信、ウォレットがRBF対応RBF最もシンプル — ほとんどのウォレットでボタン一つで解決
受信者の場合CPFP受信者が使える唯一の方法
RBF未有効、自分が送信者CPFP(お釣りアウトプット経由)お釣りアウトプットを使ってパッケージ手数料を引き上げ
TXがメモプールから削除された再ブロードキャストTXがメモプールにないため再送信が必要
非常に古い未確認TX(14日以上)新しいトランザクション現在の手数料率で新しいTXを作成

トランザクション状態の確認

修正を試みる前に、トランザクションの現在の状態を確認しましょう:

  • txid.ukTXIDを貼り付けて確認状態、手数料率、位置を確認
  • tx.txid.uk — 生のトランザクションのデコードとブロードキャスト
  • mempool.space — メモプール内の位置と確認予想時間を視覚的に確認

トランザクションが確認済みと表示されていれば、問題は自然に解決しています。「not found」と表示される場合はメモプールから削除された可能性があるので、再ブロードキャストするか新しいトランザクションを作成してください。

滞りを防ぐ方法

最も良い解決策は予防です:

  • 送信前に手数料率を確認mempool.spaceまたはtxid.ukで現在の手数料率をチェック
  • 常にRBFを有効に — ウォレットでRBFシグナリングがデフォルトで有効になっているか確認
  • 手数料推定を賢く使う — 迷ったら「エコノミー」ではなく「中程度」や「高い」優先度を選択
  • 手数料急騰時は送信を控える — メモプールが大幅に混雑している場合は解消を待つ
  • トランザクションのバッチ処理 — 複数の支払いを一つのトランザクションにまとめて合計手数料を削減

関連記事

関連記事