自私挖礦是一種針對比特幣等工做量證實(PoW)機制區塊鏈的挖礦策略,簡單說就是挖到區塊先不公佈,而是繼續挖礦,而後根據策略擇機公佈。而這種策略,根據研究者們的探討,實際上會下降網絡驗證區塊的速度,同時會削弱誠實礦工的盈利能力,而在難度調整以前,這也會對自私礦工自己帶來不利影響。算法
能夠說,在這種狀況下,自私挖礦至關因而「殺敵一千 自損八百」的「七傷拳」。而只有在難度調整以後,自私挖礦纔多是有利可圖的。api
由此,咱們認爲自私挖礦是針對比特幣協議的一種攻擊方式,這種攻擊利用了比特幣難度調整公式的缺陷。它在實際狀況下雖然難以實現,但較51%攻擊而言倒是更可行的。對此,研究者CYRIL GRUNSPAN和RICARDO PEREZ-MARCO’提出了一種新的難度調整公式,它雖然沒法消除自私挖礦的可能性,但即便是在發生難度調整的狀況下,自私挖礦較誠實挖礦也不會具備優點。安全
論文標題:關於自私挖礦的盈利能力網絡
論文做者:CYRIL GRUNSPAN和RICARDO PEREZ-MARCO’electron
摘要:咱們探討了比特幣網絡當中可能存在的自私挖礦策略,並正確評估其攻擊成本及盈利能力。預期的攻擊持續時間,在不少相關文獻中被忽略掉了,但這是關鍵的。咱們證實了,這種策略只有在網絡調整難度後纔可以盈利。所以,這是一種針對難度調整算法的攻擊。咱們提出了一種改進協議,可以使比特幣網絡免受自私挖礦攻擊的可能。區塊鏈
比特幣協議[7]的穩定性, 依賴於其規則符合網絡參與者的自身利益。它的基本規則之一是,區塊一旦獲得驗證,礦工們就會選擇公佈它們。而「自私挖礦」則是一種異常的挖礦策略 [5],其中主要的礦工運營者選擇扣留挖礦區塊,並採起定時策略將其公佈,以使網絡其他礦工開採的最大數量區塊無效。文獻[5]的做者毫無根據地稱自私挖礦策略會破壞比特幣協議 [4],但在實踐當中,咱們並無觀察到這種現象。spa
其餘研究人員則提出了其它被認爲是「最佳的」自私挖礦策略[9]。自私挖礦策略以課程和教科書的形式,呈如今比特幣書籍當中,例如 [1](該書籍的第5章內容,被稱爲「臨時扣塊攻擊」)或者[10]。3d
然而,這些文獻都沒有對自私挖礦攻擊的成本進行適當的分析,而且,更重要的是,它們忽略了時間考慮。更確切地說,這些論文中使用的馬爾可夫模型,從一開始就是存在缺陷的,由於它沒有歸入攻擊持續時間分析。而本文的主要目標,是實現分析自私挖礦的盈利能力,這是在文獻當中沒有的。事實證實,在沒有難度調整的狀況下,這種自私挖礦策略是靠不住的。orm
咱們描述了文獻[5]中提出的自私挖礦策略。自私礦工經過驗證和不廣播區塊實施攻擊,而後繼續在這個區塊的頂部祕密地進行挖礦。而後這名礦工會以下進行操做:cdn
(1)若是自私礦工的優點是1個區塊,當誠實的礦工發現了一個區塊,而後自私礦工當即偷偷地廣播他已祕密挖到的區塊。而後接下來就是一場競賽,自私礦工在他公佈的區塊上進行挖礦任務。自私礦工與網絡的其它參與者是有充分聯繫的,所以,誠實網絡的0 ≤ γ ≤ 1佔比部分會接受他的區塊提議,並開始在他的區塊上進行挖礦任務。
(2)若是自私礦工的優點是2個區塊,當誠實礦工發現了一個區塊,而後自私礦工當即偷偷地廣播他已祕密挖到的區塊。而後,整個網絡就會切換到他所在的分叉鏈。
(3)若是自私礦工的優點大於2個區塊,當誠實礦工發現一個區塊時,則自私礦工可公佈區塊,以釋放一條子鏈,與新的誠實區塊進行競爭。而自私礦工可在他的祕密鏈上繼續挖礦。
(4)除了(1)以外,自私礦工均可以在他的分叉鏈上偷偷地進行挖礦。
請注意,若是自私礦工的優點區塊大於2,那麼在某個時刻,他的優點將等於2個區塊(由於咱們假設他的算力小於50%,或者其它更有效的攻擊是可能的),而後,根據第2點,整個網絡最終採用自私礦工提出的分叉鏈。所以,當他的優點區塊老是大於2時,自私礦工所公佈的區塊,老是會被網絡所接受。而第3點則是有些無關的,由於當自私礦工佔據優點時,重要的是強迫他驗證的區塊被歸入到區塊鏈當中。他能夠忽略掉誠實礦工的區塊驗證,除非當區塊優點只有2時,而後自私礦工只能釋放整個祕密分叉鏈。
在文獻[5]中,做者們假設了γ佔比始終保持不變。這是不許確的,由於γ取決於網絡新區塊被挖掘的時間,所以它是沒法保持不變的。但在[5]中所運用的馬爾可夫鏈模型,就須要假設γ是不變的,所以,這些做者提出了這種假設。這種分析是不許確的。可是,更重要的是,他們沒有核算這種攻擊的成本。對於這樣的流氓策略而言,計算盈利能力是十分重要的。時間分析對於估計盈利能力而言,也是相當重要的,但這些做者也都選擇了忽略。
3.1. 文獻中的盈利能力。大多數關於自私挖礦策略的文章,都沒有考慮挖礦成本因素,或只是含蓄地進行了表達。在 文獻[5]中,這個因素乾脆被忽略掉了。而在 文獻[3]等文章當中,咱們能夠看到使人驚訝的陳述:
成本。每一個礦工m都有可配置的參數Cm, 即表示礦工m進行挖礦任務的成本(即電力)。對於咱們的模擬結果而言,咱們老是設置Cm = 0,由於咱們不會看挖礦的這方面。
顯然,若是挖區塊沒有任何能源成本的話,任何人均可嘗試逆轉比特幣交易的歷史,並嘗試雙花攻擊,也不會有尊重比特幣協議的經濟激勵。能源成本使得僞造區塊鏈是昂貴的,這是比特幣安全的基礎!
其餘做者,如[2],則以如下方式來描述自私挖礦:
「自私挖礦確實在短時間內會減小攻擊者的收入,但它確實會大大減小其餘人的收入,所以中立節點就有動力加入攻擊者的聯盟,以增長本身的收入。最終,攻擊者的聯盟將擴大到50%以上的規模,可能會使攻擊者對網絡形成很大的控制影響力。」
換句話說,根據這種解釋,一個損失錢的礦工會被攻擊吸引,而後加入到另外一個損失錢礦工的隊伍當中。而這僅僅是由於攻擊者礦工損失的錢更少,因此攻擊者可以說服那些誠實礦工!撇開誠實礦工沒法確切知道雙方盈利能力差別這一事實不談,這種天真的情景,能夠說是使人難以置信的。
從這個角度來看,自私挖礦僅僅是做爲控制網絡的51%攻擊的一種預備行爲。實際更可能的結果是,誠實礦池會注意到某些礦工在作自私挖礦,他們將採用明顯的防護策略,並開始本身的自私挖礦,這會使網絡停滯不前。這個結果對於全部人而言都會是不利的。納什均衡的一種形式正在發揮做用,這避免了上述描述的場景。
除了這些創造性的解釋以外,文獻中的真正缺少的,是對自私挖礦攻擊成本的正確覈算和理解,以及適當的時間分析。
3.2 挖礦成本。爲了正確評估自私挖礦盈利能力的關鍵思路,是將其與誠實挖礦的盈利能力進行對比。咱們假設礦工從事挖礦業務,是由於運營成本(設備和能源),是可由新生成的比特幣區塊獎勵+交易費用獲得補償的。
所以,若是算力是以滿負載運行的,單位時間的挖礦成本與策略是無關的。因此咱們就有了CS = CH,其中CS 和 CH是自私挖礦以及誠實挖礦策略每單位時間的挖礦成本。咱們表示C0 = CS = CH. 請注意,此成本不只獨立於策略,但也表示挖到的區塊,會仍是不會被網絡所接受。
3.3 收益和損失。咱們的目標是評估損益狀況(PnL),並對比自私挖礦和誠實挖礦的PnL。損益(PnL)的算法是收入R減去成本C:
PnL = R − C .咱們採起一種保守,但足夠的設置,其中區塊獎勵被減小到(b > 0) 新生成的比特幣(所以,咱們不考慮交易費用)。除非另有說明,咱們假設咱們沒有接近獎勵減半,因此獎勵b是保持不變的。
對於任何業務而言,重要的是每單位時間的P nL,而不是每區塊解決或被網絡接受的P nL。值得注意的是,每區塊或每單位時間的P nL是不相等的,這是因爲採用的自私挖礦策略,延遲了網絡中區塊的驗證速度。
3.4 每單位時間的損益。一種不間斷的攻擊策略,如自私挖礦,包括了一系列連續的「攻擊週期」。
在自私挖礦的狀況下,它是當自私礦工和誠實礦工都在同一區塊鏈上進行工做時發生的。自私礦工的目標是利用他們祕密挖取的區塊鏈。若是,一開始,誠實礦工找到了新區塊,則進入一個新的週期。若是自私礦工成功創建了優點,而後週期會持續至誠實礦工追遇上進度,並強迫自私礦工釋放他們祕密挖取到的區塊。而後開始新的循環。對於這種具備重複效應的策略遊戲,每單位時間的漸進P nL ,P nLt∞ ,是能夠進行評估的。而這是下列定理當中的內容。
6.1. 問題的根源。基本上,這種攻擊利用了難度調整規則。當前的比特幣協議低估了網絡中的實際算力,因爲其僅考慮了被歸入(官方)區塊鏈的區塊。 在存在自私礦工的狀況下,孤塊會不斷增加,大量誠實算力會丟失。網絡用於驗證的平均時間會增長。在2016個區塊以後,自動完成的難度調整會無視孤塊的生產。儘管網絡總算力是保持不變的,但新的難度會低於應有的水平,而且區塊驗證時間會減小。因此,單位時間的自私挖礦收入會增長,並使得攻擊變得有利可圖。
6.2. 一個新的難度調整公式。爲了減輕這種攻擊,一種想法是在難度調整公式中加入孤塊數量的因素。這可經過礦工們來實現,即指示他們挖到的區塊中存在「uncle」(經過包含它們的區塊頭,及對等節點中繼這些數據)
只要誠實礦工發出信號就足夠了。節點就不須要廣播整個孤塊,而只是廣播它們的區塊頭。這有可能會激勵礦工在他們的區塊中歸入uncle存在證實(經過一個規則,在兩個具備相同高度區塊之間競爭的狀況下,節點應該始終廣播擁有最多工做量證實的區塊,即包含最多uncle存在證實的區塊)。根據[11],這一規則在誠實礦工與自私礦工發生競爭時,它也是對誠實礦工有利的。在n0 = 2016 區塊驗證週期結束後,難度調整的新公式將會是
其中n’是在這段時間內挖到的孤塊總數,而Sn0是網絡用於驗證n0區塊的時間 (並使用公式Sn0 = Tn0-T1,其中Ti表示區塊 i區塊頭的時間戳。)
6.3. 分析公式 . 設 ω 是在τ0= 600秒時間段內被觀察到的孤塊平均數。因此,平均而言,每τ0時間,都會有ω孤塊和(1 – ω)非孤塊。只有最後一個會被添加到官方區塊鏈。網絡用於增長區塊鏈的時間爲
自私挖礦是一種減慢網絡並減小挖礦難度的一種技巧。這種攻擊會削弱誠實礦工的盈利能力,而在難度調整以前,這也會對自私礦工自己帶來不利影響。而只有在難度調整以後,自私挖礦纔會變得有利可圖。自私挖礦是針對比特幣協議的一種攻擊,但不少相關文獻中的論點沒有正確地證實這種攻擊的合理性。他們缺少對攻擊成本和每單位時間的損益進行適當的分析。
爲了比較不一樣挖礦策略的盈利能力,咱們就須要計算它們的週期平均長度和收入比率,這是本文中提到的新概念。
這種攻擊利用了難度調整公式的缺陷。用於更新挖礦難度的參數,應該是衡量網絡的實際算力。而當前的參數,在存在自私礦工的狀況下,是再也不適用的。咱們提出了一個公式,經過考慮這一點來糾正這種生產孤塊的異常現象。咱們建議,協議應指定官方區塊鏈包含的是最多工做量證實(帶有最多uncle存在證實)的區塊。若是這一擬議公式獲得採用,雖然它不會消除自私挖礦的可能性,但即便是在發生難度調整的狀況下,自私挖礦較誠實挖礦也不會具備優點。所以,這會使得我的激勵措施與協議規則保持一致,而這符合比特幣最初成立時的意圖[7]。
[1] J. Bonneau, E. Felten, S. Goldfeder, A. Miller , A. Narayanan. Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction, Princeton University Press, NJ, USA, 2016.
[2] V. Buterin. Selfish mining: a 25% attack against the bitcoin network, bitcoinmagazine.com/ articles/selfish-mining-a-25-attack-against-the-bitcoin-network-1383578440, 2013.
[3] M. Carlsten, H. Kalodner, A. Narayanan , S. M. Weinberg. On the instability of bitcoin without the block reward, Proc. ACM SIGSAC Conf. Comp. and Comm. Sec., p.154-167, NY, 2016. 14 C. GRUNSPAN AND R. PEREZ-MARCO ´
[4] I. Eyal, E. G. Sirer. Bitcoin is broken, hackingdistributed.com/2013/11/04/bitcoin-is-broken/ (accessed 1/2018), 2013. [5] I. Eyal, E. G. Sirer. Majority is not enough: bitcoin mining is vulnerable, Int. Conf. Financial Cryptography and Data Security, Springer, p.436-454, 2014.
[6] C. Grunspan and R. P´erez-Marco. Double spend races. ArXiv:1702.02867, 2017.
[7] S. Nakamoto. Bitcoin: a peer-to-peer electronic cash system. Bitcoin.org, 2008.
[8] S. Ross. Introduction to Probability Models 10th Edition. Academic Press Inc, 2012
[9] A. Sapirshtein, Y. Sompolinsky , A. Zohar, Optimal selfish mining strategies in bitcoin, International Conference on Financial Cryptography and Data Security, Springer, p.515-532, 2016.
[10] R. Wattenhofer. Distributed Ledger Technology: The Science of the Blockchain, 2nd Ed., Create Space Independent Publishing Platform, 2017.
[11] R. Zhang, B. Preneel. Publish or perish: a backward-compatible defense against selfish mining in bitcoin. In Topics in Cryptology – The Cryptographers Track at the RSA Conference 2017, Springer, p.277-292, 2017.
原文:https://arxiv.org/pdf/1805.08281.pdf做者:CYRIL GRUNSPAN 和 RICARDO PEREZ-MARCO 編譯:灑脫喜稿源(譯):巴比特資訊(http://www.8btc.com/selfish-mining-profitability)