高級
Selfish Mining
了解自私挖礦攻擊策略,其對網路的影響,以及比特幣的防護機制。
12 分鐘
自私挖礦(Selfish Mining)是一種攻擊策略,攻擊者通過策略性地延遲區塊廣播 來獲得超過其算力佔比的區塊獎勵。這種攻擊在 2013 年由 Eyal 和 Sirer 首次描述。
攻擊原理
誠實挖礦策略:
1. 挖到區塊立即廣播
2. 收到新區塊立即切換到新鏈
自私挖礦策略:
1. 挖到區塊暫時保留(私有鏈)
2. 繼續在私有鏈上挖礦
3. 策略性地釋放區塊以浪費誠實礦工的算力
目標: 使誠實礦工在即將被廢棄的區塊上浪費算力 攻擊流程
狀態 0: 私有鏈 = 公開鏈
攻擊者挖到區塊 → 進入狀態 1(領先 1 個區塊)
狀態 1: 私有鏈領先 1 個區塊
情況 A: 誠實礦工挖到區塊
→ 攻擊者立即釋放私有區塊
→ 競爭傳播(gamma 決定誰贏)
→ 回到狀態 0
情況 B: 攻擊者再挖到區塊
→ 進入狀態 2(領先 2 個區塊)
狀態 2: 私有鏈領先 2 個區塊
誠實礦工挖到區塊時:
→ 攻擊者釋放全部私有鏈
→ 誠實礦工的區塊被孤立
→ 回到狀態 0(攻擊者獲得 2 個區塊獎勵)
狀態 n (n >= 2): 私有鏈領先 n 個區塊
維持優勢,逐步釋放 關鍵參數
| 參數 | 含義 |
|---|---|
| α (alpha) | 攻擊者算力佔比 |
| γ (gamma) | 競爭時攻擊者區塊被接受的概率 |
| 1 - α | 誠實礦工算力佔比 |
收益分析
// 自私挖礦收益公式(簡化)
攻擊者收益 = f(α, γ)
// 當 γ = 0(攻擊者網路劣勢)
// 攻擊者需要 α > 1/3 才能獲利
// 當 γ = 1(攻擊者網路優勢)
// 攻擊者只需要 α > 0 就能獲利(理論上)
// 當 γ = 0.5(中立網路)
// 攻擊者需要 α > 1/4 才能獲利
實際閾值(考慮網路延遲):
α_threshold ≈ (1 - γ) / (3 - 2γ)
γ = 0: α_threshold = 1/3 ≈ 33.3%
γ = 0.5: α_threshold = 1/4 = 25%
γ = 1: α_threshold = 0 為什麼現實中很少見?
- 高算力門檻:需要至少 25-33% 算力
- 機會成本:失敗時損失大量電力成本
- 可檢測:異常的孤塊率會引起注意
- 協議改進:更好的區塊傳播減少 γ 優勢
- 聲譽風險:大礦池攻擊會損害比特幣價值
防護機制
1. 快速區塊傳播
// Compact Blocks (BIP-152)
減少區塊傳播時間:
- 傳統區塊: 數秒
- Compact Blocks: 毫秒級
效果: 降低 γ 值,使網路更「公平」
// FIBRE (Fast Internet Bitcoin Relay Engine)
專用中繼網路,進一步減少延遲 2. 分叉選擇規則
// 當前規則: 最長鏈(最多累積 PoW)
// 這使得自私挖礦仍然可能
// 提議的改進:
// Freshness Preferred
優先選擇「更新」的區塊(先收到的)
缺點: 增加網路分裂風險
// Unforgeable Timestamps
使用 VDF 等證明區塊創建時間
缺點: 複雜性高
// 目前: 沒有完美解決方案 變體攻擊
Stubborn Mining
// 更激進的自私挖礦變體
Lead Stubborn:
- 即使落後也不放棄私有鏈
- 希望能追上並超過公開鏈
Equal Fork Stubborn:
- 在競爭狀態時繼續挖私有鏈
- 而不是立即切換
Trail Stubborn:
- 落後時也繼續嘗試
- 高風險高回報 FAW Attack (Fork After Withholding)
// 結合礦池的攻擊
攻擊者加入誠實礦池:
1. 提交部分工作量證明給礦池
2. 找到完整區塊時保留
3. 等待其他礦工找到區塊
4. 發布自己的區塊造成分叉
效果:
- 從礦池獲得獎勵(基於提交的 shares)
- 同時破壞礦池的區塊 檢測指標
// 可能表明自私挖礦的跡象
1. 孤塊率異常
正常: ~0.1%
異常: > 1%
2. 區塊時間戳分布異常
正常: 大致符合泊松分布
異常: 集中或異常間隔
3. 區塊傳播模式
正常: 均勻來源
異常: 大量區塊來自同一來源
// 監控命令
bitcoin-cli getchaintips
# 查看分叉情況 對去中心化的影響
自私挖礦的存在意味著:
1. 大礦池有額外優勢
- 網路位置優勢 (高 γ)
- 更容易達到閾值算力
2. 可能導致算力集中
- 小礦工加入大礦池更有利
- 獨立挖礦相對不利
3. 博弈論影響
- 如果大家都自私挖礦,網路效率下降
- 納什均衡可能不是「全部誠實」 研究論文
- Majority is not Enough (2014) - 原始論文
- Stubborn Mining (2015) - 變體分析
- Optimal Selfish Mining (2016) - 最優策略
已複製連結