什麼是加密貨幣挖礦中的扣塊攻擊?

買賣虛擬貨幣
扣塊攻擊有兩種,一種是為了“雙花”而發起的攻擊,由比特幣鏈上交易的第一位接受者halfinney提出,因此這種攻擊也被稱為“芬尼攻擊”。第二種扣塊攻擊是指礦工找到合法的區塊之後,私自把區塊扣下不對外發布。


01 扣塊攻擊

要說扣塊攻擊,得從礦池的概念說起。礦池就相當於專案經理,接入礦池的算力就是服從專案經理工作安排的專案組員。專案是挖礦,儘快找到符合比特幣系統要求的解。所有的專案組成員,都按照專案經理的安排推進工作任務,並提交工作成果,專案經理按照“多勞多得”的方式,根據專案成員完成任務的具體情況進行獎勵。
扣塊攻擊的問題就出在提交工作成果上。
找到符合比特幣系統要求的解,對於單獨的礦工來說,是極小概率事件。礦池為了更好衡量礦工們的工作量,會給礦工們設定一個合理的提交工作成果(share)的門檻。
挖礦這個過程類似一個拋256枚硬幣的遊戲,假設系統規定挖出新區塊需要從第一枚硬幣開始至少連續20枚硬幣正面朝上,這個難度對於單個礦工來說太難了,礦池為了更好衡量礦工們的工作量,規定礦工只要從第一枚硬幣開始至少連續10枚硬幣正面朝上的結果,便計作該礦工的有效工作量證明。
扣塊攻擊是指,惡意礦工在找到滿足礦池要求結果,但不滿足比特幣系統要求的結果時,正常向礦池提交工作證明;一旦得到滿足比特幣系統要求的結果時,也就是真的挖到區塊時,則把這個結果私自扣下,不向礦池提交,礦池便因此損失了對應的獎勵。

02 扣塊攻擊的危害

扣塊攻擊對礦池的傷害很大。第三次產出減半之後被扣下一個塊,就損失了6.25枚btc(忽略打包礦工費),按目前價格,約¥40萬。礦池持續遭受扣塊攻擊,礦池的幸運值長期偏低,蒙受巨大損失,嚴重的甚至會導致礦池的倒閉。
為什麼說發起扣塊攻擊對惡意礦工幾乎不會有影響呢?這要從礦池的結算方式說起。目前主流的結算方式是fpps和pps+。礦池根據礦工提交的工作量證明,也就是按照理論產出給礦工結算收益。
欲對礦池發起“扣塊攻擊”的惡意礦工,肯定也是選擇這樣的結算方式。對於惡意礦工來說,提交滿足礦池要求的工作量證明(share)與提交滿足比特幣系統要求工作量證明,這兩者的頻次之比是相當懸殊的,初略估計前者是後者的數十萬倍,也就是說,礦工向礦池提交數十萬次工作量證明,才會有機會碰到一次扣塊攻擊,10萬次有效的工作量變成了9.9999萬次,這對礦工收益的影響可以忽略不計。但這個行為頻次雖然很低,但每次都是數十萬元的損失,這對礦池的損害特別大。
那麼問題來了,礦工為什麼要發起扣塊攻擊這種“損人不利己”的行為呢?答案是礦池之前的惡性競爭。礦池是一個競爭非常激烈的賽道。有的礦池為了搞垮競爭對手,會把自己的算力“臥底”到其他礦池,意圖發起扣塊攻擊,給對方造成經濟損失,削弱競爭者的實力。

03 扣塊攻擊可以預防嗎?

因為比特幣底層協議的原因,目前在技術層面上,礦池對扣塊攻擊沒有有效的預防手段。礦池只能在察覺到幸運值異常之後,再去核對單個使用者的出塊情況。如果發現某些使用者出塊資料顯著低於平均水平,就把這些有明顯嫌疑的礦工移出礦池。當然,這種做法是有可能會錯殺的,把沒有發起過扣塊攻擊礦工判定為惡意礦工,但礦池要截斷虧損,只能把嫌疑礦工踢出礦池,這也是不得已而為之。
礦池可以透過改變收益的分配模式來防止礦工發起扣塊攻擊。礦池把分配模式從pps類換成pplns,pplns的分配模式下,礦池和礦工的關係相當於公司與公司合夥人,合夥人與公司是命運共同體,盈虧與公司同步。

原文:彩雲位元

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;