ブロックチェーン/レベル II · 仕組み/2.2 トランザクション/レッスン 6
Replace-by-Fee(RBF)とChild-Pays-for-Parent(CPFP)
手数料の引き上げ(フィーバンプ)とピニング攻撃
用意するものトランザクションの系譜を表示するブロックエクスプローラー(例:mempool.space)手数料の引き上げ(フィーバンプ)に対応したウォレット
問い
- 手数料が低すぎてトランザクションが滞留したとき、送信者には何ができるのでしょうか?
- まだ受け取っていない支払いの費用を、受取人はどのように負担できるのでしょうか?
- 取引相手が意図的にあなたの資金をメンプール内で人質に取ると、何が起こるのでしょうか?
探究
- 手数料率が低すぎる状態でブロードキャストされたトランザクションは、何日も未承認のまま放置されたり、メンプールから完全に消えたりすることがあり、その間にもより高い手数料を払うトランザクションが次々と承認されていきます。ブロードキャスト後に実質的な手数料を引き上げる手法は2つあります。送信者がより高い手数料を払うバージョンにトランザクションを置き換えるか、受取人がそのアウトプットの1つを十分な手数料で使用し、マイナーに両方をまとめて取り込ませるかです。
- Replace-by-Fee(RBF)により、送信者は低く見積もりすぎた手数料を修正できます。BIP125は、インプットのnSequenceフィールドを使って置き換え可能であることをシグナルする仕組みを導入しました。Bitcoin Coreの置き換えルールでは、置き換え後のトランザクションは、置き換えられるすべてのトランザクションの手数料合計に、自身のサイズ分の追加リレー手数料を加えた額以上を支払い、かつ直接競合するトランザクションよりも高い手数料率でなければなりません。Bitcoin Coreバージョン24では「フルRBF」の受け入れが追加され、明示的なシグナルがなくてもトランザクションを置き換え可能として扱えるようになり、これがバージョン28でデフォルトになりました。
- Child-Pays-for-Parent(CPFP)は、受け取る支払いを変更できない受取人のための手法です。受取人は、滞留している親トランザクションの未承認アウトプットを使用する新しいトランザクションを作成し、この子トランザクションに高い手数料を付けます。マイナーは、祖先を含めた手数料率でこのパッケージ全体を評価します。子トランザクションは、親トランザクションが同じブロックかそれ以前に承認されている場合にのみ有効なので、子を含めれば必然的に親も含まれることになります。
- この経済的な仕組みは合計価値に基づいています。親が1 sat/vB、大きな子が50 sat/vBを支払う場合、パッケージ全体としては、マイナーにとって両方を同時に承認する価値のある機会になります。これにより受取人は、まだ承認済みのコインを手にしていないにもかかわらず、滞留している着金をマイナーがブロックに含めるための費用を実質的に肩代わりできます。ただし、総ウェイトと手数料を正確に計算する必要があります。
- トランザクションピニングは、この仕組みにおける重大な脆弱性です。取引相手は、多数の子孫を持つ低手数料率のトランザクションを意図的にメンプールに留めておくことで、期限のあるトランザクションが期限内に承認されるのを妨げることができます。チャネルのクローズが特定のタイムロックに依存するライトニングネットワークのようなプロトコルでは、あなたのクローズトランザクションをピニングした攻撃者は、あなたがセキュリティ上の猶予期間を過ぎるまで待たされた場合、資金を盗める可能性があります。
- 開発者たちは、最近のBitcoin Coreリリースにおけるポリシー上の例外規定(カーブアウト)、バージョン3(「TRUC」)トランザクション、パッケージリレー、そしてBitcoin Core 28と29で実装されたエフェメラルアンカー(pay-to-anchorアウトプット)で対応してきました。これらにより、低手数料の親トランザクションが高手数料の子トランザクションとパッケージとして一緒に伝播できるようになります。こうした対策は、悪意ある者が期限のあるトランザクションをピニングする能力を軽減しますが、完全には排除しません。ピニングが影響するのはリレーポリシーであり、コンセンサスではありません。
重要な事実
- Child-Pays-for-Parentでは、受取人が着金のアウトプットを高い手数料で使用することで、その支払いの承認を早めることができます。
- BIP125は、トランザクションのインプットにあるnSequenceフィールドによって、置き換え可能であることをシグナルできるようにします。
- RBFの置き換えトランザクションは、置き換えるすべてのトランザクションの手数料に加え、自身のサイズ分を上乗せした額以上を、より高い手数料率で支払わなければなりません。
- CPFPが機能するのは、マイナーが親子のパッケージを、祖先を含めた合算の手数料率で評価するからです。
- Bitcoin Coreバージョン28で、フルRBFの受け入れがノードのデフォルト動作になりました。
- 最近のBitcoin Coreのバージョンでは、ピニングに対して手数料の引き上げをより確実にするため、パッケージリレーとTRUC(バージョン3)トランザクションが追加されています。
演習 九・六・三・一
9集める小売店での買い物からライトニングチャネルのクローズまで、トランザクションの承認速度が重要になる場面を9つ挙げてください。それぞれの期限と、それに間に合わなかった場合の結果を記録してください。
6まとめる9つを、誰がトランザクションを加速できるかによって6つに分類してください:送信者、受取人、どちらでも、第三者、プロトコルのルール、誰もできない。
3絞り込む6つを、トランザクションが想定される承認時間を過ぎてもメンプールに滞留し続ける3つの根本的な理由に絞り込んでください。
1結晶化するCPFPが、互いを信頼していない2者の間にどのように金銭的な依存関係を生み出すのかを、1文で説明してください。
事実確認
日付、数字、主張は、下記に記載された公表資料と照合して確認しました。