比特幣的區塊時間戳保護規則

Published: Dec 8, 2019 by Cypherpunks Core

摘要: 我們檢查了比特幣鮮為人知的兩個規則,這些規則用於防止不法礦工操縱區塊時間戳以獲得不公平的高額挖礦報酬。我們討論了為什麼可能選擇類似2小時MAX_FUTURE_BLOCK_TIME值之類的常數,以及該值會對比特幣現金有何特定的影響。我們得出的結論是,考慮到實施規則時缺乏功能網路,比特幣的時間保護規則似乎相當有效,令人讚嘆。6 NOVEMBER 2019, BITMEX RESEARCH

比特幣的時間問題

人們可能認為時間對於比特幣網路並不是一項重要的考慮因素,因為每個區塊都引用前一個區塊的 hash 值,所以這些區塊已經有先後順序。比特幣區塊還包含交易(輸入、輸出和值)、推導區塊頭的默克爾樹(Merkle Tree)和區塊 hash 值本身,用於證明工作量。從表面上看,這對於交易和一致性系統也許已經足夠。但是,存在調整難度的問題如果太多的礦工加入網路,區塊時間可能變得太快,又或者如果太多的礦工離開,區塊時間可能變得太慢,使得網路不可靠。為了解決這個問題,每兩星期調整一次採礦難度,以實現區塊之間十分鐘的目標時間。遺憾的是,為了對兩星期的時間進行計算,需要將時間概念引入區塊鏈並成為一致性系統的一部分。因此區塊必須含有時間戳,人們可以將比特幣看作世界上第一個分佈式電子時鐘。

區塊時間戳安全規則

在比特幣區塊產生時,實質上涉及兩個時間:

  1. 區塊頭中的時間,是由礦工放置的
  2. 區塊產生的實際時間。

當然,這兩個時間應當幾乎相同。畢竟,礦工們肯定有合理準確的時鐘,他們為什麼會在時間上撒謊呢?

礦工的確存在在時間上撒謊的誘因。比如,不法礦工可能會添加一個將來的時間戳。舉例,如果生產一個區塊要10 分鐘,礦工可以通過向將來添加5 分鐘的時間戳來聲稱花了15 分鐘。如果這種增加5 分鐘的做法在整個兩星期的難度調整週期都持續,平均區塊時間會看起來像是15 分鐘,而實際上比這要短。那麼下一個週期的難度可能會向下調整,由於區塊時間加快,增加採礦收入。當然,這種方法的問題在於,比特幣時鐘的移動繼續與真實時間越來越遠。

為了解決或減輕上述問題,比特幣有兩個機制防止礦工篡改時間戳。

  1. 過去時間中值(MPT)規則 -時間戳必須比過去11個區塊的中值更靠前。11個區塊的中值意味著可以對6個區塊進行重組並且時間仍不會向後移動,有人可能認為這與Meni Rosenfeld的2012年報告中提供的例子是一致的,即對於擁有10%網路算力的攻擊者,必須進行六次確認才能將攻擊的成功概率降低到0.1%以下。

  2. 未來區塊時間規則根據 - MAX_FUTURE_BLOCK_TIME常量,相比來自同等節點的中值時間,時間戳不能出現在未來2小時以上。節點提供的時間與當地系統時鐘之間的最大允許差是90分鐘(又一個安全保障措施)。需要注意的是,不同於上面的MPT規則,這不是一個完全達成共識的規則。具有在未來太遠時間點的時間戳的區塊是無效的,但隨著時間向前移動它們可能變得有效。

規則一確保區塊鏈在時間方面繼續向前移動,而規則二確保區塊鏈不會向前移動太遠。這些時間保護規則並不完美,例如,礦工仍可以在兩星期時間內通過生成未來的時間戳,從而將時間戳向前移動,但這種操作的影響有限。

如上文的比率所示 ,由於兩個小時只是兩星期中很小的一部分,此操作對網路可靠性和挖礦盈利能力的影響可能有限。這相當於在難度調整後的兩星期內,將區塊之間的時間從10 分鐘減少至9 分54 秒。而且,它只是一次性變動,因為一旦發生了兩小時的時間移動之後,除非先向後移動,否則無法再次發生前移。與此同時,礦工在向前移動兩個小時之前,可能會考慮安全邊際,以減少區塊被網路拒絕的風險。

據我們判斷,這些規則在防止礦工以惡意方式篡改比特幣時間戳方面,已經證明具有合理的有效性。

比特幣現金的理論區塊時間問題

如我們最先在2017年9月所提及,比特幣現金是2017年8月從比特幣分叉出來的一種替代貨幣,它的主要目的是提高區塊大小限制。當時比特幣現金開發者的擔憂之一,就是很多礦工不會開採比特幣現金,因此區塊之間的時間差可能太大。因此實施了所謂的“緊急難度調整”(EDA),以減輕這種擔憂。我們在此不會進行詳細討論,但足以說明此機制非常複雜並且證明存在根本的瑕疵。這種算法意味著,如果在特定時期內沒有找到特定數量的區塊,難度將會降低。此政策尤其激進,因為它意味著區塊之間的時間差越長,難度向下調整的幅度就越大。礦工可以故意留下大的時間差操縱網路,導致難度大幅變動,隨後出現以非常高頻率生成區塊的低難度期。然後網路變得不可靠。

由於這種瑕疵,生成的比特幣現金區塊超過預期,並且礦工在此期間的收入增加。比特幣現金建立了基於比特幣的大約5,000 條區塊引線,一條引線至今依然存在。幾個月後,在2017 年11 月,最終進行了修復。EDA 被移除並且被一個新的難度調整系統(更簡單的24 小時滾動系統)取代。但是,這仍然與比特幣的兩星期窗口系統不同。比特幣現金的系統更加動態並且調整速度更快。雖然這意味著比特幣現金可能在短期擁有更波動的難度,但此貨幣對變化的調整速度更快,而比特幣中的時間差糾正可能需要花費更長時間。

幣種 計算期 難度調整 說明
比特幣 2 星期 每2 星期 遭遇區塊時間差的可能性更低時間差需要更長時間解決
比特幣現金 1 天 每個區塊 遭遇區塊時間差的可能性更高時間差的解決速度更快

(來源: BitMEX Research)

在比特幣現金的新難度調整算法中很多人可能忽略了一件事情,就是它與兩小時時間保護規則的相互關係。據我們所知,比特幣現金保留了2小時常數。

兩小時時間現在是計算期的8.3% 。這相當於將區塊之間的時間從10 分鐘減少至9 分10 秒。這確實似乎具有潛在的重要意義,並且如果加以利用,可能導致礦工盈利能力的變化。因此比特幣現金在礦工篡改時間戳方面可能具有一定脆弱性,或者至少比比特幣更加脆弱。另一方面,雖然比特幣現金面對礦工時間戳篡改攻擊時比比特幣更加脆弱,但對問題的解決速度更快。

結論

比特幣現金的時間保護規則的明顯脆弱性,可能未被利用,顯示出比特幣的時間保護規則的思考是如此完善。據我們所知,這些時間保護規則自2009 年比特幣推出時就已經存在。在設計系統時,中本聰必須至少在三個深度層面進行創新:

工作系統的驗證→ 難度調整系統→ 完善的時間保護規則

雖然這在今天我們看來可能不是特別精巧,但我們對這些系統已經有了10 年經驗。我們認為,中本聰在沒有任何此類網路之前對此進行了全面思考,是非常了不起的。

Latest Posts

MuSig:一個新的多重簽名標準
Cosmos 區塊鏈的工作原理,Part-1:比較Cosmos 與比特幣、以太坊
Cosmos 區塊鏈的工作原理,Part-1:比較Cosmos 與比特幣、以太坊

編者注:本文對 Cosmos 網路中區塊鏈和比特幣、以太坊進行了鉅細靡遺的比較。作者先從區塊鏈系統的棧層出發,分析了比特幣、以太坊在不同棧層上的技術要點,最後迴歸到 Cosmos 網路中的區塊鏈,概念解釋尤為清晰,是不可多得的解釋文。

多媒體區塊鏈:分散式且防竄改之媒體交易框架
多媒體區塊鏈:分散式且防竄改之媒體交易框架

當前多媒體發佈不會保留可自我檢索的訊息交易或內容修改之歷史記錄,經常對原始媒體進行編輯以獲取創意內容準備或篡改通過社交媒體進行錯誤宣傳,然而現在沒有可信任之機制可以輕鬆檢視交易記錄或修改歷史。