RBF(Replace-By-Fee):ビットコイン手数料の再設定
ビットコインのReplace-By-Feeメカニズムの技術的深掘り — BIP-125オプトインRBF、フルRBF、ウォレットでの使い方、メンプール動態、加盟店への影響。
ビットコインのトランザクションを送信したところです。メンプールを確認し、手数料が比較的低いことを確認して、手数料率を5 sat/vBに設定しました。しかし「送信」ボタンを押してからトランザクションがブロードキャストされるまでの10秒の間に、人気取引所が大規模なUTXO統合を開始しました — 8〜12 sat/vBの数千のトランザクションがメンプールに殺到しました。あなたの5 sat/vBトランザクションは、優先度キューの最下部に位置しています。現在のブロック生成速度では、確認に数時間、あるいは数日かかるかもしれません。メンプールが混雑し続ければ、デフォルトの336時間後に完全に削除される可能性もあります。
これが**Replace-By-Fee(RBF)**が解決する問題です。RBFは、未確認トランザクションの新しいバージョンをより高い手数料で作成し、マイナーのトランザクション選択アルゴリズムにおいてより高い優先順位に効果的に「引き上げる」ことを可能にします。ビットコインで最も実用的に重要な機能の一つですが、依然として広く誤解されています。
RBFが実際にすること
本質的にRBFはシンプルです:トランザクションの送信者が、メンプール内の未確認トランザクションを、同じインプットを使用するがより高い手数料を支払う新しいトランザクションに置き換えることを許可します。置換トランザクションは元のものを無効化します — 同じUTXO(未使用トランザクション出力)を消費するため、両方が確認されることはありません。
ノードが置換トランザクションを受信すると:
- 置換が元のトランザクションと同じインプットの少なくとも1つを消費していることを確認します。
- 置換が元のトランザクションより厳密に高い絶対手数料を支払っていることを確認します。
- 置換が置換リレーの帯域幅コストをカバーするのに十分な手数料率を支払っていることを確認します(増分リレー手数料、通常は置換サイズの1 sat/vB)。
- 置換が元のトランザクションに存在しなかった新しい未確認インプットを導入していないことを確認します(ピニング攻撃の防止)。
- 置換される元のトランザクション数(子孫を含む)が100を超えないことを確認します。
すべての条件が満たされると、ノードは元のトランザクションをメンプールから排除し、置換を受け入れます。
歴史:BIP-125とオプトイン論争
サトシ・ナカモトによるビットコインの元の実装には、実は基礎的な置換メカニズムが含まれていました — トランザクションには置換を許可するためのnSequenceフィールドがありました。しかしこの機能は初期に無効化されました。攻撃者が追加手数料なしで無制限にトランザクションを置換でき、ネットワークのメンプールリレーにDoS攻撃ができたためです。
BIP-125:オプトインRBF(2015)
2016年2月、BIP-125がBitcoin Core 0.12.0に実装されました。オプトインRBFを導入しました:トランザクションが任意のインプットのnSequence値を0xFFFFFFFE(4294967294)未満に設定することで、置換可能であることをシグナルします。具体的には:
nSequence < 0xFFFFFFFE→ オプトインRBFシグナル(置換可能)nSequence = 0xFFFFFFFE→ 相対タイムロックシグナル(RBFではない)nSequence = 0xFFFFFFFF→ 最終トランザクション(RBFではない、タイムロックなし)
「オプトイン」設計は政治的妥協でした。ビットコインコミュニティの多くの人々 — 特にゼロ確認(zero-conf)トランザクションに依存する加盟店や決済処理業者 — は、無制限の置換が二重支払いを容易にすると反対しました。RBFをオプトインにすれば、加盟店が置換可能なトランザクションと置換不可能なトランザクションを区別できるという論理でした。
実際には、この区別は常にやや幻想的でした。マイナーはオプトインシグナルに関係なく、最も高い手数料を支払うトランザクションを含めることが経済的にインセンティブがあります。オプトインフラグはノードが施行するリレーポリシーであり、ブロックチェーンが施行するコンセンサスルールではありません。
フルRBF(2022-2023)
2023年5月にリリースされたBitcoin Core 25.0はmempoolfullrbfオプション(デフォルトfalse)を導入し、ノードオペレーターがオプトインシグナルに関係なく置換トランザクションを受け入れられるようにしました。Bitcoin Core 28.0(2024年末)では、フルRBFがデフォルト動作になりました。
フルRBFへの移行が重要な理由:
- プロトコルの正直さ:オプトインRBFが真のセキュリティ保証ではなかったという現実を認めました。
- シンプルなメンタルモデル:ユーザーはトランザクションがRBFを「シグナル」しているかどうか心配する必要がなくなりました。すべての未確認トランザクションは潜在的に置換可能です。
- 改善された手数料市場効率:フルRBFは最も高い手数料を支払うトランザクションが常に優先されることを保証します。
実際にRBFを使う
Bitcoin Coreで
Bitcoin Coreのウォレットはバージョン0.12.0からRBFをサポートしています:
# RBF有効で送信(最近のバージョンではデフォルト)
bitcoin-cli sendtoaddress "bc1q..." 0.01
# 未確認トランザクションの手数料を引き上げ
bitcoin-cli bumpfee "元のトランザクションのtxid"
Sparrow Walletで
- トランザクションタブに移動します。
- 未確認トランザクションを右クリックします。
- 「Increase Fee」(または資金を自分に戻すには**「Cancel Transaction」**)を選択します。
- 手数料スライダーで新しい手数料率を設定します。
- 署名してブロードキャストします。
Electrumで
- 履歴タブで未確認トランザクションを右クリックします。
- **「Increase fee」**を選択します。
- 新しい手数料率を設定します。
- 署名してブロードキャストします。
モバイルウォレットで
- Blue Wallet:未確認トランザクションをタップ → 「Bump Fee」
- Muun:サブマリンスワップメカニズムを通じて自動的に手数料引き上げを処理(従来のRBFではないが同じ効果)
- Phoenix(Lightning中心):オンチェーンアンカートランザクションに手数料引き上げを使用
RBFが必要な場面
シナリオ1:手数料推定の失敗
手数料推定は将来のメンプール状態を予測する必要があるため、本質的に不完全です。最良の手数料推定器でも、突然の需要急増時には過小推定する可能性があります — 取引所出金、エアドロップ請求、Ordinals上のNFTミント、市場イベント中の同時買い注文など。
RBFはセーフティネットです。控えめな(低い)手数料率で開始し、希望の時間内に確認されない場合にのみ引き上げることができます。
シナリオ2:時間的制約のある支払い
時間制限のある購入(コンサートチケット、限定セール)での支払い状況です。トランザクションがメンプールで滞っています。RBFで手数料を現在の高速確認レートに引き上げれば、次のブロックに含まれます。
シナリオ3:低手数料期間のUTXO統合
経験豊富なユーザーは低手数料期間に小さなUTXOを統合します。1 sat/vBで一括統合したが手数料が急上昇した場合、RBFで統合を放棄せずに手数料を引き上げることができます。
シナリオ4:ミスの修正
アリスに0.1 BTCを送ったが、ボブに送るつもりだったことに気づきました。トランザクションがまだ未確認なら、代わりにボブに0.1 BTCを送るRBF置換を作成できます。
重要な注意:これは元のトランザクションが未確認の間のみ機能します。トランザクションがブロックにマイニングされたら、最終的かつ不可逆です。
RBFとゼロ確認セキュリティ
加盟店のジレンマ
一部のビジネス、特に実店舗やPOS加盟店は、速度のためにゼロ確認トランザクションに依存していました。RBFに対する反対論は、加盟店に対する二重支払いを容易にするというものでした。
ゼロ確認が安全でなかった理由
現実として、RBF以前でもゼロ確認は強いセキュリティ保証ではありませんでした:
- どのマイナーでもリレーポリシーに関係なく競合するトランザクションを受け入れることができました。
- レース攻撃(競合するトランザクションをネットワークの異なる部分に同時にブロードキャスト)は常に可能でした。
- フィニー攻撃(マイナーが競合するトランザクションを含むブロックを事前にマイニング)は理論的に実行可能でした。
即時決済確認が必要なビジネスには、ライトニングネットワークが暗号学的セキュリティ保証付きの真の即時最終性を提供します — オンチェーンゼロ確認トランザクションより根本的に優れたソリューションです。
メンプール動態とRBF
マイナーのトランザクション選択方法
マイナーはブロックサイズ制限(約400万ウェイトユニット、実データで約1.5〜2.5 MB)内で手数料収入を最大化するようにメンプールからトランザクションを選択してブロックを構築します:
- 手数料率(仮想バイトあたりのサトシ):高い手数料率 = 高い優先度。
- 祖先手数料率:トランザクションが未確認の親に依存する場合、祖先パッケージ全体の結合手数料率を評価。
- トランザクションサイズ:大きなトランザクションは手数料単位あたりより多くのブロックスペースを消費。
手数料市場としてのメンプール
メンプールはブロックスペースのリアルタイムオークションとして機能します。mempool.spaceのようなツールがメンプールのリアルタイム可視化を提供します。
RBFを使えば、このオークションに合理的に参加できます。最初に低すぎる入札をした場合、入札を上げることができます。オーストリア経済学の観点から、これは美しく純粋な自由市場メカニズムです。ブロックスペースは希少な資源であり、手数料市場はいかなる中央権力も価格を指示することなく効率的に配分する価格発見メカニズムです。
手数料率の計算
RBFで手数料を引き上げる際、単位を理解する必要があります:
手数料率 = 総手数料(サトシ)/ トランザクションサイズ(仮想バイト)
典型的な単一インプット、二重アウトプットのSegWitトランザクションは約141 vBytesです。20 sat/vBの手数料率の場合:
総手数料 = 20 × 141 = 2,820サトシ ≈ 0.00002820 BTC
ビットコイン価格約95,000ドル(2026年初頭)では、約2.68ドルです。高混雑時の100 sat/vBでは:13.40ドル。
CPFP:RBFの代替手段
**Child-Pays-for-Parent(CPFP)**はRBFとは異なるメカニズムで機能する代替手段です:
元のトランザクションを置換する代わりに、CPFPは滞ったトランザクション(親)のアウトプットを使用する新しいトランザクション(子)を作成します。子は親子パッケージの結合手数料率がマイナーにとって魅力的になるほど十分に高い手数料を支払います。
CPFP vs. RBFの使い分け
| シナリオ | RBF使用 | CPFP使用 |
|---|---|---|
| 送信者の場合 | 推奨 | 可能(お釣りアウトプット経由) |
| 受信者の場合 | 不可能 | 推奨 |
| 多数のアウトプットがある場合 | 動作する | 動作する |
| RBFシグナルなしのトランザクション | 一部ノードでリレーされない可能性 | 常に動作 |
核心的な違い:RBFは送信者が使用し、CPFPは送信者(お釣りアウトプット経由)または受信者の両方が使用可能です。
実践的なヒント
-
ウォレット設定で常にRBFを有効にしてください。 デメリットはありません。
-
緊急でないトランザクションでは控えめな手数料で始めてください。 mempool.spaceなどで現在の状況を確認し、範囲の下端に手数料率を設定します。
-
手数料率と絶対手数料を区別してください。 sat/vBの手数料率ではなくBTCの総手数料に注目するのはよくある間違いです。
-
可能な限りトランザクションをバッチ処理してください。 単一トランザクションで複数の受信者に送信する方が手数料効率的です。
-
「キャンセル」にもRBFを使用してください。 間違ったアドレスにビットコインを送り、トランザクションが未確認の場合、全額を自分のウォレットに戻すRBF置換を即座に作成できます。
関連リソース
- ビットコイン手数料ガイド — ビットコイントランザクション手数料の理解と最適化
- メンプールとは? — トランザクション待合室の仕組み
- ライトニングネットワーク — 即時・低手数料のビットコイン決済