ビットコインの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はシンプルです:トランザクションの送信者が、メンプール内の未確認トランザクションを、同じインプットを使用するがより高い手数料を支払う新しいトランザクションに置き換えることを許可します。置換トランザクションは元のものを無効化します - 同じUTXO(未使用トランザクション出力)を消費するため、両方が確認されることはありません。
ノードが置換トランザクションを受信すると:
すべての条件が満たされると、ノードは元のトランザクションをメンプールから排除し、置換を受け入れます。
サトシ・ナカモトによるビットコインの元の実装には、実は基礎的な置換メカニズムが含まれていました - トランザクションには置換を許可するためのnSequenceフィールドがありました。しかしこの機能は初期に無効化されました。攻撃者が追加手数料なしで無制限にトランザクションを置換でき、ネットワークのメンプールリレーにDoS攻撃ができたためです。
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をオプトインにすれば、加盟店が置換可能なトランザクションと置換不可能なトランザクションを区別できるという論理でした。
実際には、この区別は常にやや幻想的でした。マイナーはオプトインシグナルに関係なく、最も高い手数料を支払うトランザクションを含めることが経済的にインセンティブがあります。オプトインフラグはノードが施行するリレーポリシーであり、ブロックチェーンが施行するコンセンサスルールではありません。
2023年5月にリリースされたBitcoin Core 25.0はmempoolfullrbfオプション(デフォルトfalse)を導入し、ノードオペレーターがオプトインシグナルに関係なく置換トランザクションを受け入れられるようにしました。Bitcoin Core 28.0(2024年末)では、フルRBFがデフォルト動作になりました。
フルRBFへの移行が重要な理由:
Bitcoin Coreのウォレットはバージョン0.12.0からRBFをサポートしています:
# RBF有効で送信(最近のバージョンではデフォルト)
bitcoin-cli sendtoaddress "bc1q..." 0.01
# 未確認トランザクションの手数料を引き上げ
bitcoin-cli bumpfee "元のトランザクションのtxid"
手数料推定は将来のメンプール状態を予測する必要があるため、本質的に不完全です。最良の手数料推定器でも、突然の需要急増時には過小推定する可能性があります - 取引所出金、エアドロップ請求、Ordinals上のNFTミント、市場イベント中の同時買い注文など。
RBFはセーフティネットです。控えめな(低い)手数料率で開始し、希望の時間内に確認されない場合にのみ引き上げることができます。
時間制限のある購入(コンサートチケット、限定セール)での支払い状況です。トランザクションがメンプールで滞っています。RBFで手数料を現在の高速確認レートに引き上げれば、次のブロックに含まれます。
経験豊富なユーザーは低手数料期間に小さなUTXOを統合します。1 sat/vBで一括統合したが手数料が急上昇した場合、RBFで統合を放棄せずに手数料を引き上げることができます。
アリスに0.1 BTCを送ったが、ボブに送るつもりだったことに気づきました。トランザクションがまだ未確認なら、代わりにボブに0.1 BTCを送るRBF置換を作成できます。
重要な注意:これは元のトランザクションが未確認の間のみ機能します。トランザクションがブロックにマイニングされたら、最終的かつ不可逆です。
一部のビジネス、特に実店舗やPOS加盟店は、速度のためにゼロ確認トランザクションに依存していました。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ドル。
Child-Pays-for-Parent(CPFP)はRBFとは異なるメカニズムで機能する代替手段です:
元のトランザクションを置換する代わりに、CPFPは滞ったトランザクション(親)のアウトプットを使用する新しいトランザクション(子)を作成します。子は親子パッケージの結合手数料率がマイナーにとって魅力的になるほど十分に高い手数料を支払います。
| シナリオ | RBF使用 | CPFP使用 |
|---|---|---|
| 送信者の場合 | 推奨 | 可能(お釣りアウトプット経由) |
| 受信者の場合 | 不可能 | 推奨 |
| 多数のアウトプットがある場合 | 動作する | 動作する |
| RBFシグナルなしのトランザクション | 一部ノードでリレーされない可能性 | 常に動作 |
核心的な違い:RBFは送信者が使用し、CPFPは送信者(お釣りアウトプット経由)または受信者の両方が使用可能です。