改變懲罰機制之後,攻擊者還有辦法執行51%算力攻擊嗎?
區塊鏈大本營/phyro-Tomaz Kariz/Guoxi/張詠晴編譯
2019-03-11 15:59

 

區塊鏈選擇規則不僅可以考慮已完成的工作量,還可以考慮礦池的前後一致性。我們可以透過將 chainScore 的定義更改為以下公式來加入礦池的影響:

 

chainScore = parentChain.score +(block.PoW_score * PCI)

 

其中 parentChain.score 為前序區塊鏈的評分,block.PoW_score 為該區塊鏈所做的工作量, PCI(礦池前後一致性指數,Pools Consistency Index)為介於0和1之間的值。

 

這裡的 PCI 表示礦池的前後一致性。讓我們來看一個使用礦池訊息來評估區塊鏈「健康」程度的一個實現。

 

13

 

在最後 3000 個區塊上使用滑動窗口來衡量工作量前後一致性的示例。

 

chainScore 函數的代碼實現如下所示:

 

14

 

滑動窗口礦池前後一致性增量的參考實現

 

當網路中多個區塊鏈共存時,我們認為最可能成為共識鏈的,會是那些礦工在持續挖礦的區塊鏈。這種說法並不是百分百正確,但對於大多數情況都是如此,除非出現掌握超過 51% 哈希算力的礦池叛變的情況。

 

這種結合礦池訊息的方法可以預測區塊鏈的未來是什麼樣的,並懲罰那些惡意行為者,而這些在過去是不可能實現的。當我們對礦池的前後不一致設置非常高的懲罰時,會出現以下兩種情況:

 

  1. 網路中僅存在一個區塊鏈,一些礦池停止挖礦。由於對於所有的礦工而言,他們的 PoW 值都會相應的降低,所以這對礦工來說無關緊要,因為區塊鏈評分 chainScore 很低並不會影響他們的挖礦收益。
  2. 網路中多個區塊鏈共存,在這種情況下,礦池前後一致性較低的區塊鏈(通常是 51% 算力攻擊)將受到懲罰。

 

那麼,這種方法在上面所提到的幾種51%算力攻擊面前效果如何?

 

使用算力租賃服務(例如 NiceHash )來執行攻擊

 

由於其他礦池不會在他的區塊鏈上繼續挖礦,隨著時間的推移攻擊者會受到礦池前後不一致懲罰。

 

兩個共掌握全網 60% 哈希算力的礦池聯合執行攻擊

 

為了解決這個問題,我們不僅需要考慮礦池的哈希算力,還需要考慮在區塊鏈上挖礦的礦池的數量。如果我們有大於 10 個具有大致相同哈希算力的礦池,那麼這個問題就會變得更容易解決。

 

兩者的結合

 

例如一個掌握全網 40% 哈希算力的礦池,又租用了全網 30% 的哈希算力執行攻擊。

 

隨著時間的推移,攻擊者會受到礦池前後不一致懲罰。值得注意的是,即使攻擊者將租用哈希算力挖出區塊的礦工地址設置為原本礦池的地址也無濟於事,因為我們會查看已挖出區塊過去的數據。

 

使用專用積體電路(ASIC)執行攻擊

 

這看起來像是長期的 51% 算力攻擊。攻擊者會隨著時間的推移受到礦池前後不一致懲罰,但如果他能繼續堅持下去,他就可能會成為我們參考的「過去的礦池」。在這種情況下,問題演變成了如果一個礦池叛變。

 

雖然這種方法並沒有解決 51% 算力攻擊,但它能使攻擊者的攻擊成本變得更加高昂,因為攻擊者會在很長一段時間內持續受到懲罰(很多個區塊時間)。

 

如果幾個礦池突然停止挖礦,監控系統可以發覺這種情況,社群會有一些時間來做出反應,例如開始自己挖礦(但由於懲罰機制的存在他們必須小心)或者只是在發生這種情況時,等待更多後續區塊的確認。

 

基於這些情況,我們先做了以下假設:

 

  • 將礦池作為網路的一部分從而加強區塊鏈的安全性。當然了如果一個礦池可以透過各種手段掌握全網 51% 的哈希算力,那麼他還是可以執行 51% 算力攻擊,不過這並不是我們引起的新問題,就我目前的瞭解,業界還沒有針對這種問題的解決方案。
  • 一旦礦池 A 挖出了一個區塊,所有接下來的 29 個區塊都將獲得礦池 A 的前後一致性獎勵,無論這些區塊是由誰挖出的,因此,與其他人相比,礦池 A 並沒有獲得任何優勢。
  • 「牆頭草」礦工仍然受歡迎,但如果他們突然開始挖出大量區塊,他們可能會受到懲罰。如果他們有些前後一致性,我們不會對他們進行大量懲罰,他們可以輕鬆地挖出新的區塊。有人可能會說這樣會降低安全性,但我的預感是,你從獲得礦池前後一致性指數獲得的收益,遠遠超過沒有「牆頭草」礦工而失去的收入。
  • 只要每個新區塊保證為區塊鏈添加一些積極價值,挖礦就可以在沒有礦池存在的情況下繼續運行。
  • 由於獨自挖礦的礦工很難開採出一個區塊,因此懲罰對他們的影響基本上為零。我認為他們中的大多數人都希望參與到礦池之中。
  • 新來的更大的礦池將不得不逐漸加入區塊鏈中,否則它們會因為礦池挖礦前後不一致導致其挖出的區塊受到懲罰。
  • 礦池前後一致性公式( PCI )以及區塊鏈評分 chainScore 可以有多種定義方法。
  • 對於具有較低區塊間隔時間的區塊鏈,這種方法可以更好地工作,因為同樣的一段時間裡,這種區塊鏈可以獲得更多有關礦池一致性的訊息。

 

接下來,我們需要用博弈論的方法來對這個假設進行驗證。需要注意的是,可以考慮不調整 PoW 的值,而是使用 PCI 作為附加值來保持 PoW 一致。

 

本文為巴比特資訊授權刊登,原文標題為「以太坊經典被51%攻擊之後, 國外大神用礦池讓攻擊者付出代價