Verge 挖礦(或:當五種算法不如一種算法時)

使用工作量證明的加密貨幣區塊的計算通常使用單一算法,最常見的是 SHA-256 算法。然而,Verge 允許礦工任意使用五種不同算法(你要真想了解,我不妨直說,Verge 使用的五種算法是 Scrypt,X17,Lyra2rev2,myrgroestl 以及 blake2 s。)使用多種挖礦算法的基本理由如下:

一些對比特幣持批評態度的人認爲,隨着時間推移,比特幣礦場變得過於專業化和中心化,例如,比特幣大部分區塊都是由 Bitcoin ASIC 礦機(這種礦機專門設計用於挖比特幣)產生,並且許多比特幣是由少數礦池挖出來的,礦池是由許多礦工組成,這些礦工將計算資源整合到一起,並按比例獲得收益。這些批評者認爲,不同類型的「中心化」趨勢,已經與無需許可的加密貨幣的基本主張背道而馳。使用多種挖礦算法產生加密貨幣能夠避免這種趨勢。該觀點認爲,在硬件、工業和資源管理方面控制五種不同的算法,肯定比只控制一種算法更難,從而促進 Verge 挖礦經濟朝着更分佈式、去中心化的方向發展。

所以,他們決定:唯一保證系統正常運行的方法是,每個算法都有 自己 的挖礦難度參數,並且獨立於其餘四個算法進行調整,這意味着,Scrypt 的挖礦難度將調整到每 30 秒產生一個區塊,X17 及其他三種算法亦然。從而整個 Verge 網絡才能保證每 30 秒產生一個區塊、保持全部五種算法的收益對於礦工來說都是均衡的,並確保沒有一種算法佔優勢地位(否則使用五種算法就毫無意義了)。

這意味着僞造的時間戳並沒有降低整個網絡挖礦難度,他僅僅只是降低了五個算法中的 Scrypt 一個算法的挖礦難度。因此,當 Scrypt 礦工的挖礦難度很低時,其他四種算法的礦工依舊得像之前一樣努力工作,那麼它們的哈希算力對於維護網絡安全就沒用了。更重要的是,攻擊者僅需要使用 Scrypt 算法挖礦,並且僅需要與也使用 Srypt 挖礦的人競爭。因此,攻擊者控制網絡所需的哈希算力從當初的超過 50%(在整個網絡中佔多數),下降到僅需超過 10%(在 Scrypt 礦工中佔多數)。

現在,事情看起來確實有點投機,但實際情況比現在看起來的更糟糕。鑑於挖礦難度調整的性質,我們可以大致估計每種挖礦算法的經濟資源分配(算力分配)是相同的,得出的 10% 僅僅是一個估計值。然而,現實往往是拒絕遵循自由市場經濟規則的。根據社區裏的討論,由於多方面原因的存在——有的 Scrpyt ASIC 礦機尚未部署,可通過 Nicehash 租閒置資源等,意味着在攻擊的時候,控制 Scrypt 會遠比其餘四種算法的成本更低。我們可以放心的假設,攻擊所需算力一定是遠遠小於 10% 的,Reddit 論壇上有人粗略地估計,這個數字甚至低至 0.4%。

綜上所述,時間戳造假可以極大的降低挖礦難度,Verge 使用了五種共識算法,意味着可以針對某一個算法降低其挖礦難度,這也就使得控制整個網絡變得更加容易。這一特殊挖礦算法(Scrypt)的經濟 / 工業狀況造成其更容易控制。極地的挖礦難度最終造成區塊間隔大幅度減少,並使得此次攻擊所獲得的利潤是正常挖礦情況下的 30 倍以上。

經驗教訓

從此次攻擊中可以得到什麼樣的經驗教訓呢?可以預見,此次黑客攻擊的短期內會給網絡帶來很大混亂。大約幾天之後,核心開發者開發出一些 Bug 快速修復程序,當然這些程序內部仍有可能存在 Bug,Verge 網絡最終也是經歷了一次硬分叉,這次分叉也許並不是意外。在黑客攻擊一週內,世界範圍內的 Verge 幣價漲了 30%,並在接下來的一週,該公司宣佈 Verge 將支持 pronbub.com 的訂閱支付服務。近期最大的協議級加密貨幣攻擊,怎麼會使得該加密貨幣價格反而上漲,且之後又宣佈與互聯網上訪問量最大的……建立合作伙伴關係呢?這個問題我不知道如何解釋,我個人的初步見解是,這個世界也許是毫無道理可言的,人們也完全失去了理智。

言歸正傳。從更廣的角度來看,確實有一些我們應該汲取的經驗:

首先,使用時間戳來人爲降低難度的方法很早之前就已爲人所知,我們給它起個名字——「時間扭曲」漏洞。具體信息可以查看幾年前比特幣論壇中關於攻擊者向量的討論。在某種意義上,攻擊之所以能夠在 Verge 網絡中生效是由於其使用了更新的、更華麗的暗重力井(Dark Gravity Well,以下簡稱 DGW)難度調整算法。與比特幣協議裏每 2016 個區塊調整一次難度不同,在這種算法中每產生一個區塊都會調整挖礦難度。在這種間隔調整挖礦難度,乍一看這些離散增量像是一種奇怪的決策,但在此次黑客攻擊後可以明顯看出這是一種安全防護。在比特幣中,如果想採取某些措施略微降低挖礦難度,攻擊者每兩週僅能嘗試一次且效果可忽略不計,但在 Verge 中攻擊者每 30 秒就可以發起一次攻擊。

有趣的是,據說 DGW 算法的好處之一是它能夠免疫時間扭曲漏洞。鑑於這種說法已經被證明是無效的,其他使用該算法的貨幣至少應該有些警惕了。

由於使用了五種挖礦算法:從長遠角度看,有助於從經濟上鼓勵去中心化,但也帶來了新的複雜性,不可避免地增加了出現不可預見的漏洞的可能性。

這兩種情況,黑客攻擊行爲都有力的證明了:當涉及用戶金融資產時,應更傾向於事實證明更行之有效的東西,並防止事情變得過於複雜,從而帶來不必要的風險。我想這對比特幣團隊來說意味着兩點。

有一個更大的問題是:軟件開發者,儘管我們不願意承認,在最終分析中只有人類。即使底層安全協議看起來非常完美,但也總有出錯的可能。出現意想不到的攻擊向量,trade-off 的預估結果很差等等,當然,總有一些老式 Bug。軟件也不一直是按照我們的預期運行,這類故障會導致資金損失,這在 2018 年應該不會讓人感到特別震驚。但事實上,當資金在軟件上流動時,就應該增加預防措施。

考慮到我們中大多數沒有時間對我們投資的每個項目進行徹底的代碼審計,預防災難的最好的方法是更加信任已證明安全的控件,並且開發理念轉向保守一些。與此同時,如果你想投資開發迅速、突破性強且資金回報快的項目,你也應該清楚其中存在的風險。最重要的是,來自社區的壓力激發地努力減弱未來災難的努力是系統安全最好的保障。我相信 Gerorge Santayana 所說的:「那些沒有從過去的漏洞中吸取教訓的人最終還會遇到這些漏洞」,這句話我們要謹記,以免當我們意識過來地時候已經再次處於時間扭曲的邊緣。

來源鏈接:blog.theabacus.io