在比特幣挖礦機制中發現了一個零日漏洞 - ForkLog:加密貨幣、人工智能、奇點、未來

BTClogo# 在比特幣挖礦機制中發現零日漏洞

自從啟動以來,比特幣的挖礦算法中存在一個計算錯誤,這個錯誤允許以極高的速度挖掘區塊。研究員 Loïc Morel 如此透露。

Satoshi 發錯了。

從第一天起,比特幣的挖礦就有一個漏洞。這是 Satoshi 一個簡單的計算錯誤,可以被利用來以瘋狂的速度挖掘區塊。這是 BIP-0054 (討論中) 解決的漏洞之一。我們… pic.twitter.com/GurNv3qKrZ

— Loïc Morel (@Loic_Pandul) 2026年4月11日

根據發布內容,該故障與難度調整機制有關

每 2016 個區塊 (大約每兩週),節點會重新計算目標值,以確保每 10 分鐘產生一個區塊,無論礦工的計算能力如何。為了進行這個調整,節點會測量上一個周期的持續時間,並將其與目標值 (2016 x 600 = 1,209,600 秒) 比較,然後相應地調整難度。

「正是在這些計算中存在錯誤。為了測量過去周期的區塊時間,節點比較的是第一個區塊的時間戳與最後一個區塊的時間戳。直覺上這似乎合理,但實際上這是一個錯誤,因為在第一個和最後一個區塊之間只有 2015 個間隔,而不是 2016 個」,— Morel 解釋道

如果用 t0 表示第一個區塊的時間戳,t2015 表示最後一個區塊的時間戳,節點會計算經過的時間為 T = t2015 — t0。這樣就得到了 2015 個間隔 (從 t0 到 t1 > 從 t1 到 t2 > … > 從 t2014 到 t2015)。

為了得到 2016 個間隔,應該使用另一個公式:T = t2015 — t-1,其中 t-1 是上一個周期最後一個區塊的時間戳。

這被稱為「偏移一個單位」的錯誤。這個漏洞導致誤差約為 0.05%,使難度略微偏高。

但真正的問題在於另一個方面。這個缺陷導致調整周期不重疊——上一個周期的最後一個區塊的時間戳在計算下一個周期時未被考慮。

時間操控

這個差距使得「時間扭曲攻擊」成為可能。其原理如下:

  1. 控制大部分計算能力的礦工開始為該周期 ((除了最後一個)) 所有區塊設置最小的時間戳。
  2. 在該周期的最後一個區塊中,人工設置最大允許的時間戳。
  3. 周期結束後,調整難度。由於攻擊者操控時間戳,測得的周期長度比實際更長,導致難度降低。
  4. 攻擊者在下一個周期重複類似操作。由於周期不重疊,第二個周期的第一個區塊可以有一個遠古的時間戳,而前一個區塊的時間戳則在未來。這個差距會隨著周期增加。

多次重複此過程,攻擊者理論上可以將挖礦難度降低到每秒產生六個區塊 (而不是每 10 分鐘一個)。

「後果將是可怕的:區塊時間鎖將失效,網絡過載,重組次數增加,交易確認失去價值。這一切都會讓攻擊者以瘋狂的速度獲得區塊獎勵」,— 研究員補充。

如果第一個和最後一個區塊在兩個連續周期中相符,攻擊將變得不可能。

如何修復這個錯誤?

Morel 指出,可以通過 BIP-0054 框架內的軟分叉來修復此問題。

該方案規定,新周期的第一個區塊的時間戳不得超過上一周期最後一個區塊的時間戳超過兩個小時。

這個限制恢復了周期之間的「某種連續性」,防止時間操控,並使「時間扭曲攻擊」變得不可行。

提醒一下,去年 2 月,Castle Island Ventures 的合夥人 Nick Carter 預測比特幣可能因量子威脅而出現「企業接管」。

BTC1.56%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 打賞
  • 留言
  • 轉發
  • 分享
留言
請輸入留言內容
請輸入留言內容
暫無留言