實驗結果:改變機制後,51%攻擊的成本將更加昂貴
區塊鏈大本營/phyro-Tomaz Kariz/Guoxi/張詠晴編譯
2019-03-11 16:09

 

我透過模擬出一個理想的區塊鏈,從而在一系列的連續區塊中,檢測礦池前後一致性的想法。

 

雖然結果顯示,使用滑動窗口礦池前後一致性增量與最長區塊鏈機制(當前被大部分區塊鏈採用)相比, 51% 算力攻擊的成本會更加昂貴,但應該注意的是,由於測試過程中可能存在瑕疵,代碼中可能存在錯誤,或者是模擬出的環境過於理想/簡單/錯誤,這樣的結論可能會存在問題,因此離在區塊鏈上實際使用可能還有很長的路要走。

 

在這次實驗中我創建了大約 5500 個區塊(過程持續了 5500 * 14 秒),攻擊者在高度為4850的區塊處進行分叉。默認情況下,區塊的間隔時間約為 14 秒,在代碼上我做了很多的簡化,並沒有完全符合在當前區塊鏈中使用的邏輯(例如,區塊時間的計算不一樣,沒有叔塊)。

 

儘管存在差異,但我認為這個實驗足以檢驗我們的想法。實驗結果如下所示,結果中 Ratio (比值)表示主鏈和攻擊者在區塊高度 4850 處生成的分叉鏈之間區塊鏈評分 chainScore 的比值,如果這個比值低於 1.0 意味著主鏈的區塊鏈評分 chainScore 的總和低於攻擊者分叉鏈的總和。

 

我們還可以從圖中看到兩個區塊鏈達到的高度。

 

15

 

實驗結果

 

從圖中我們可以看出,較傳統的最長鏈方法,滑動窗口礦池前後一致性增量方法更容易選中主鏈,不過即使這種方法獲勝很多,在真實的區塊鏈環境中這種方法的效用還有待檢驗。

 

從上面這個結果表中我們可以看到,在所有的情況下分叉鏈最終都挖出了更多的區塊,但在滑動窗口評分方法中分叉鏈的評分 chainScore 從未超過主鏈(這並不完全正確,因為它可能在開始時獲得了更高的分數,但在這次測試中,分叉鏈最少領先主鏈 30 個區塊,並且評分也更高)。

 

如果攻擊者能夠堅持足夠長的時間,他就有可能成為「礦池歷史」的一部分,隨著時間的推移分叉鏈的評分 chainScore 會超過主鏈。

 

當然了,這次實驗代碼除了我以外還沒有任何人檢查過。如果你發現了代碼中存在的問題,請向我提交。

 

已知的攻擊向量:51%算力攻擊

 

儘管如此,攻擊的成本可能要貴得多。

 

礦池冒充攻擊

 

攻擊者可以挖出更長的區塊鏈,並在其中插入其他礦池的礦工地址,從而將攻擊者挖出區塊的礦池分布調整為與攻擊前大致相同的分布。

 

為了防範這種情況,我們需要為礦工提供某種形式的身份證明。這可以透過在區塊頭中添加名為 minerSig (礦工簽名)的身份驗證訊息來解決。 minerSig是使用礦工私鑰簽名的前序區塊哈希值 parentHash 和該區塊的隨機數 nonce ,為了使區塊有效,我們需要檢查這個驗證。

 

攻擊者加入主網路

 

攻擊者可以加入主網路並挖出一些區塊,以避免以後被識別出突然大量挖礦。

 

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