Mempool · BIP125 RBF · 2020–2024 · CRITICAL

Pinning · Replacement Cycling · Flood & Loot
Lightning の on-chain settlement 境界を突く攻撃ファミリー

Routing 層の HTLC jamming とは別に、Bitcoin mempool / on-chain 層を突く攻撃クラスが存在する。 Pinning(mempool に居座らせる)、Replacement Cycling(HTLC-Success と HTLC-Timeout を交互に置換)、Flood & Loot(一斉 force-close で mempool 飽和)、 そしてマイナーを買収する Bribe & Fork まで。Anchor Outputs は部分的な対症療法だが、BIP331 package relayv3-transactions の deploy 待ち。

攻撃クラスMempool / On-chain settlement
関連 BIPBIP125 RBF · BIP331 package relay
主要 disclosureRiard 2023 · Harris-Zohar AFT 2020
部分的対策Anchor outputs · v3-tx (TRUC)
85 ch
Flood&Loot 閾値
Oct 2023
Replacement Cycling 0-day
~$125
Bribe&Fork コスト
部分対策
Anchor outputs only partial
§ 1 · Overview — On-Chain Attack Surface

Lightning の "off-chain → on-chain" 移行が攻撃の入口

Lightning の HTLC は off-chain での約束として運用されるが、紛争時には必ず on-chain で決着する必要がある。 この境界線——mempool への TX 投入と confirmation——を狙う攻撃が「mempool / on-chain 層」の攻撃。 jamming(HTLC スロット枯渇)は routing 層の攻撃であり、独立したカテゴリ。

LN Application Layer payment routing / HTLC Mempool Policy Layer BIP125 / package limits / RBF Miner Layer block construction / fee selection Bitcoin Consensus Layer block confirmation / finality ↑ Flood & Loot (一斉 force-close で flood) ↑ Pinning / Replacement Cycling ↑ Bribe & Fork (miner bribery) ↑ 51% / Reorg (極端ケース)

3 つの攻撃クラスタ

A

Pinning ファミリー

RBF Pinning / Replacement Cycling: 攻撃者が mempool に居座る低 feerate TX を仕込み、honest 側の sweep TX を弾く。被害者は CLTV expiry 以内に fee bump できず資金喪失。

B

Flood & Loot

大規模一斉 force-closeで mempool を飽和させ、被害者の HTLC sweep TX が confirm できないようにする systemic attack。Harris-Zohar AFT 2020。

C

Bribe & Fork

マイナー買収でペナルティ TX を censoring させる。Feather fork 脅迫で ~$125 という極めて低コスト。CRAB (CCS 2024) で更に一般化。

§ 2 · Mempool 101

BIP125 RBF / Package Limits / CPFP の最低限

Bitcoin mempool の鍵となるルール

ルール制限背景
Ancestor count≤ 25 tx祖先 tx の総数(自身含む)
Ancestor size≤ 101 KvB祖先 tx の総 vbyte
Descendant count≤ 25 tx子孫 tx の総数
Descendant size≤ 101 KvB子孫 tx の総 vbyte
BIP125 RBF Rule 3新 tx fee ≥ 旧 fee + min_relay_fee × size絶対 fee 増加(! feerate)
BIP125 RBF Rule 4新 tx feerate ≥ 旧 feeratefeerate も増加
BIP125 RBF Rule 5置換される直接子孫 ≤ 100 txDoS 防止

CPFP (Child Pays For Parent)

親 TX が低 fee で stuck している場合、その TX の output を消費する 子 TX を高 fee で submit し、両者を package として承認させるテクニック。 Anchor outputs はこれを LN commitment TX に対して可能にする仕組み。

Parent TX stuck @ 1 sat/vB low priority Child TX 100 sat/vB CPFP bump Block Miner sees package fee = (parent_fee + child_fee) / (parent_vsize + child_vsize) → high effective feerate
§ 3 · Pinning Attack — 基本形

「mempool に居座らせて honest 側を弾く」攻撃の原型

Step 0 / 4
Bitcoin Mempool Disputed UTXO HTLC output Attacker pinning TX low fee, locks UTXO Honest sweep TX tries to bump fee ⚠ BIP125 Rule 3 violated absolute fee not enough ⏰ CLTV expires Attacker wins Pinning TX が UTXO を消費する形で mempool に居座る → 被害者は置換できない → CLTV expiry → 資金喪失
Press Play to see the basic Pinning attack in action.

2 種類の Pinning

① Transaction Pinning

低 feerate の TX を 大量のアウトプットで膨らませ、RBF rule 3(絶対 fee 増加)の閾値を意図的に高くする。被害者が rule を満たす replacement を作るには莫大な fee が必要。

② CPFP Carve-out 悪用

Bitcoin Core の mempool 制限(descendant count ≤ 25)を逆手にとり、honest 側の justice TX を mempool から弾く。BOLT が anchor outputs で対策を試みた。

§ 4 · RBF Pinning — Rule 3 の悪用

BIP125 Rule 3 の構造的弱点

BIP125 Rule 3: 新 TX の 絶対 fee が旧 TX の絶対 fee + min_relay_fee × new_tx_size 以上であること。 これは feerate ではなく絶対値の比較なので、巨大な低 feerate TX を仕込まれると、置き換えに必要な絶対 fee が桁違いに増大する。

# 攻撃者の pinning TX TX_A = { vsize: 100,000 vB, # 巨大 (大量のダミーアウトプット) feerate: 1.1 sat/vB, total_fee: 110,000 sat # ← この絶対値が壁になる } # 被害者が honest sweep を出そうとすると TX_B = { vsize: 200 vB, # 通常の sweep feerate: 1000 sat/vB, # すごく高 feerate total_fee: 200,000 sat # 絶対値も TX_A 超え → ✅ Rule 3 OK? } # しかし Rule 3 厳密には: new_total_fee >= old_total_fee + min_relay_fee * new_size # >= 110,000 + 1 * 200 = 110,200 sat # OK だが、被害者は 200k sat 以上 burn する必要 → 経済的に割に合わない # さらに Rule 5: 置換される子孫の総数 ≤ 100 # 攻撃者が 100 個以上の子 TX を mempool に詰めれば置換不可

本質: feerate ではなく absolute fee

BIP125 Rule 3 は マイナーへの直接的 incentive を保証するための設計だが、 この「絶対 fee 増加」要件が 巨大 TX による wedgeを許す。 Rule 3 の代替として v3-transactions (TRUC, BIP-431)cluster mempool の議論が進んでいる。

§ 5 · Replacement Cycling Attack (Riard 2023)

HTLC-Success ↔ HTLC-Timeout の交互置換で sweep を evict

Antoine Riard Disclosure Oct 2023 all LN impls patched

2023 年 10 月の disclosure

2023 年 10 月、Antoine Riard が公開した責任 disclosure。LN HTLC の HTLC-Success TXHTLC-Timeout TX交互に mempool replacement することで、 honest 側の sweep TX を mempool から evict させ続ける。被害者が CLTV expiry までに sweep を block 内に含められなければ HTLC を失う。

対策: lnd / eclair / ldk が patch リリース。根本解決 は Bitcoin core 側の mempool ポリシー改善(v3-transactions, package relay, cluster mempool)に依存。

Cycling の Step-by-Step

Time ↓ ① Victim broadcasts HTLC-sweep TX 10 sat/vB · in mempool ② Attacker submits HTLC-Success TX higher fee · evicts victim's sweep ③ Attacker replaces with HTLC-Timeout TX different witness · keeps mempool slot ④ Cycle: Success → Timeout → Success ... each replacement evicts victim's re-broadcast ⑤ CLTV expires → victim loses HTLC sweep never confirmed Why both Success & Timeout? • HTLC has 2 spend paths – preimage path (HTLC-Success) – timeout path (HTLC-Timeout) • Different witnesses, but spend same UTXO → conflict • Attacker has both witnesses if preimage was published earlier • Each replacement is RBF-valid (slightly higher fee each time)

なぜこれが新しい問題か

Patch の方向性

Aggressive re-broadcast

LN ノードが sweep TX を mempool 監視で continuously re-broadcast。bandwidth コストとの trade-off。

v3-transactions (TRUC)

BIP-431。limited topology の TX クラス。replacement cycling の根本対策候補だが Bitcoin core 側の deploy 待ち。

Package relay (BIP331)

parent + child を atomic に伝搬。CPFP の信頼性向上に寄与。replacement cycling 対策とは別だが補完的。

Cluster mempool

長期的提案。mempool の TX クラスタ単位での policy を再設計。Pinning 全般への根本対策の可能性。

§ 6 · Flood & Loot (Harris & Zohar AFT 2020)

大規模一斉 force-close で mempool を飽和させる systemic attack

Jona Harris & Aviv Zohar AFT 2020 Hebrew University of Jerusalem

核心の発見

攻撃者が 多数のチャネルを同時に開設して HTLC を保留状態にし、一斉に force-close を引き起こす。 被害者ノードたちは全 HTLC を CLTV 期限内に sweep する必要があるが、mempool が飽和して fee bump が間に合わず、HTLC の一部が永遠に未承認のまま CLTV expiry を迎える。 攻撃者はその間に HTLC-Timeout で資金を回収し、被害者は資金喪失。

攻撃シーケンス

# Phase 1: 開設 attacker.open_channels(victims=N, accept_unknown_peers=True) # Empirical: vast majority of LN nodes accept unknown peer requests # Phase 2: HTLC 保留 for ch in attacker.channels: ch.send_htlc(amount=large, refuse_to_settle=True) # Now N channels each have a pending HTLC # Phase 3: 一斉 force-close attacker.broadcast_force_close(all_channels=True) # Mempool floods with N commitment TXs + N×K HTLC-related TXs # Phase 4: Loot while mempool_saturated: if victim_sweep_TX.confirmation_age > cltv_buffer: attacker.broadcast_HTLC_timeout() if confirmed_first: steal(htlc_amount)

Threshold Curve — チャネル数 × 被害額

同時 force-close チャネル数: 85 channels
Channels attacked → Steal % 0% 25% 50% 75% 100% 10 50 85 (threshold) 130 200 85 ch threshold
~12%
期待奪取率
$1,200
攻撃者コスト
$8,400
攻撃者期待利得
12
影響を受ける被害者数

実装ごとの susceptibility

実装fee bump 戦略susceptibility
LNDaggressive bump部分耐性
c-lightning (CLN)conservative
Eclairmoderate bump部分耐性

注: 上記は AFT 2020 論文時点の値。現在は anchor outputs と他の修正により耐性が向上している。

§ 7 · Anchor Outputs (BOLT #03 Update)

Force-close TX の fee を後から bump できるようにする部分対策

Anchor outputs は BOLT #03 への追加で、commitment TX に 意図的に消費可能な小さな output を付与する。 これにより force-close 時に commitment TX の fee が低くても、anchor output を消費する CPFP child TX で fee bump できる。

Before / After

Before — anchor outputs なし

  • commitment TX の fee は 事前に固定
  • force-close 時の mempool feerate と乖離があれば commit TX が stuck
  • HTLC sweep も親 TX が confirm しないと意味がない

After — anchor outputs あり

  • commitment TX に 2 つの dust anchor (Alice 用, Bob 用)
  • 各 party は自分の anchor を消費する CPFP child TX で fee bump 可能
  • Bitcoin Core の CPFP carve-out 例外を活用

Anchor output の Script

scriptPubKey for anchor output: <funding_pubkey> OP_CHECKSIG OP_IFDUP OP_NOTIF # 16 blocks 後は誰でも sweep 可能 OP_16 OP_CSV OP_ENDIF # Output amount: 330 sats (dust limit) — 経済的価値はほぼゼロ # 目的は "CPFP できる UTXO を提供すること" それ自体

限界 — Anchor outputs は完全な答えではない

  • Replacement Cycling は防げない: 異なる UTXO を消費する TX 同士の置換は anchor では防御できない
  • Dust budget: 330 sat × 2 = 660 sat の "ロス"。小さなチャネルでは比率が大きい
  • CPFP carve-out 依存: Bitcoin Core の特定のポリシーに依存
  • HTLC output 自体の pinning は依然可能
§ 8 · Bribe & Fork (AFT 2024)

マイナーを買収する $125 攻撃

Avarikioti et al. AFT 2024 + CRAB CCS 2024

核心: feather-fork 脅迫で bribe コストを 10¹⁰× 削減

従来の miner bribery は「全マイナーを買収」が前提で、コストは millions of dollars 級だった。 Bribe & Forkfeather fork の脅迫を使い、1 つの大手 mining pool が「特定の TX を含めるブロックを reject する」と公言するだけで成立する。 現実的なシェア分布の下で ~$125 でこの threat が組成可能と試算された。

Cost Comparison

Naive 51% bribery: ~$10,000,000+ Suborn channels (FC 2022): ~$250,000 Bribe & Fork (AFT 2024): ~$125 ★

攻撃シーケンス

  1. 攻撃者が 大手 mining pool に bribe を提示(feather fork 脅迫)
  2. 攻撃者が古い commitment TX を broadcast
  3. 被害者の watchtower / 自身が justice TX を mempool に提出
  4. Bribed pool が justice TX を含むブロックを reject(feather fork)
  5. その他のマイナーも信憑性の高い脅迫に従う(バランス均衡)
  6. Dispute window 経過 → 攻撃者が古い state で channel を closed

CRAB との関連

CRAB (CCS 2024)Byzantine party + rational miner + offline victim の三者モデルに一般化。 Bribe & Fork はこの中の rational miner + bribery 側面を実証的に示した形。両者を組み合わせた防御設計は未確立。

§ 9 · Defense Matrix

各攻撃 × 各防御の対応関係

セルをクリックで詳細表示。緑=防御済み / 橙=部分対策 / 赤=未解決

 
Anchor Outputs
Package Relay (BIP331)
v3-tx (TRUC)
Eltoo
Re-broadcast
Pinning (基本形)
部分
解決
解決
部分
部分
RBF Pinning
未対策
部分
解決
部分
未対策
Replacement Cycling
未対策
部分
解決
部分
部分
Flood & Loot
部分
部分
部分
部分
未対策
Bribe & Fork
未対策
未対策
未対策
理論的
未対策
セルをクリックすると詳細が表示されます。
§ 10 · Open Problems

2026 時点の未解決課題

★★★

Package Relay (BIP331) deployment

parent + child を atomic に伝搬する仕組み。Bitcoin Core への merge は進行中だが ecosystem-wide deploy は未達。これが入れば CPFP の信頼性が劇的に向上。

★★★

v3-transactions (TRUC, BIP-431)

Pinning 全般への根本対策候補。limited topology の TX クラス。LN を含む multi-party protocol が直接利用想定。Bitcoin Core への deploy 待ち。

★★★

Eltoo & ANYPREVOUT (BIP-118)

penalty 機構を排除し最新 state を最良と扱う。Bribe & Fork の動機そのものを根絶する究極解だが、Bitcoin community 合意が停滞。

★★

Miner-incentive countermeasures

Bribe & Fork に対し、マイナーが正直に振る舞うことが支配戦略になる Script レベルの設計。CCS / S&P 級の研究テーマ。

★★

Sweep TX quality monitoring

LN ノードが mempool 状況を継続監視し、sweep TX が evict された際にすぐ再 submit する automated 仕組み。bandwidth/cost trade-off。

★★

Cluster mempool

長期的提案。mempool TX クラスタ単位での policy 再設計。Pinning 全般への根本対策の可能性。Bitcoin core devs によって議論中。

★★

Cross-attack 統合分析

Pinning + Flood & Loot + Bribe & Fork の組み合わせ攻撃の formal model。3 攻撃が独立に分析されているが、複合攻撃の閾値は未研究。

Mempool-aware fee policy

LN ノードが Bitcoin mempool の dynamics を考慮した HTLC 受諾 / 拒否 policy。jamming 系研究と接続する。

§ 11 · Resources & Related Pages

関連する HTML / wiki / 論文

本サイト内のビジュアル解説

主要論文リファレンス

  • 📄 Harris & ZoharFlood & Loot: A Systemic Attack on the Lightning Network AFT 2020
  • 📄 Mizrahi & ZoharCongestion Attacks in Payment Channel Networks FC 2021
  • 📄 Pérez-Solà et al.LockDown: Balance Availability Attack against Lightning Network Channels FC 2020
  • 📄 Avarikioti, Köppelmann, WattenhoferSuborn Channels: Incentives Against Bribery FC 2022
  • 📄 Aumayr et al.Securing Lightning Channels Against Rational Miners (CRAB) CCS 2024
  • 📄 Avarikioti et al.Bribe & Fork: A Re-examination of Timebomb Attacks on PCNs AFT 2024
  • 📰 Antoine RiardReplacement Cycling Attacks Disclosure Oct 2023

Bitcoin BIP & spec

  • 📜 BIP-125 — Opt-in Replace-by-Fee
  • 📜 BIP-331 — Package Relay (in progress)
  • 📜 BIP-431 — TRUC v3-transactions
  • 📜 BOLT #03 — Anchor Outputs
  • 📜 BOLT #05 — On-chain Transaction Handling