這兩天關於黑客盜幣後,是否應該通過重組區塊來取回資金的討論非常熱烈。一方認爲技術上可以通過區塊重組取回資金,而另外一方則認爲這會導致社區分裂和並損害人們對比特幣不可逆轉交易的信心。而這裏最關鍵的問題不是要不要重組,而是能不能重組,或者重組在實踐上是否可行,這也是大家需要關心的地方,因爲它事關比特幣和 PoW 鏈的未來。從實踐上,除非行動非常迅速,在事件發生後的少數幾個區塊時採取行動,否則從博弈論角度,重組不是一個理性行爲選擇。

原文標題:《How to bribe miners to re-org?》
原文作者:Tamas Blummer,知名比特幣開發者
翻譯:藍狐筆記社羣 SL

區塊重組的核心問題並非「要不要」,而在「能不能」Tamas Blummer,知名比特幣開發者

通過給礦工激勵重組區塊

鑑於幣安黑客盜幣事件,關於重組區塊來恢復比特幣交易被提起。從技術和 PoW 經濟學角度,他們可以做到。以下是關於通過給予礦工好處,然後他們可以聯合起來重組。

比特幣交易只有記錄在最多工作量的鏈上纔有經濟上的意義。截止到撰寫本文時,包含幣安黑客盜幣交易的區塊上已經新構建了 111 個區塊,基本上,這 7000btc 交易很難追回了。

區塊重組的核心問題並非「要不要」,而在「能不能」

區塊 575011 包含了黑客的交易,隨後的區塊照常在它上面增加。如果礦工在包含黑客交易的區塊之前構建另一條替代的鏈,則有機會重新取回被黑客盜走的比特幣。這條替代延續鏈不會包含黑客的交易,並且必須比當前鏈增長更快,並在某個時間點它展示出更多的工作量,並且所有的比特幣客戶端都重組它。在重組後,該黑客交易將不會存在於網絡中。也就是說,區塊 575012 和其之後的區塊將不會在網絡中存在。

區塊重組的核心問題並非「要不要」,而在「能不能」

對於網絡來說,用更多工作量(算力)重組到替代鏈本身並不特別,它是解決獨立礦工之間競爭的常規方法。替換最新區塊的重組非常頻繁。

對於不在最長鏈上挖礦的礦工來說,重組成本很高,因爲這些礦工要失去這些區塊中開採的比特幣。這就是爲什麼礦工熱衷於在最長鏈上挖礦而避免在替代鏈上挖礦的主要原因。

也就是說,有一種可能是可以在替代鏈上把資金給礦工,如果在有準備且快速的情況下,可以實現把被盜取的資金取回。

如何激勵礦工?

如果一旦發現被黑客攻擊,可以快速:

  • 在網站上公佈從他們最後控制地址到被盜地址的交易
  • 在網站上發佈被盜地址的私鑰

由於資金在黑客的地址中,所以交易在當前的現實中毫無價值。但在可替代的鏈中,則非常有價值,如果該替代鏈從替代區塊 575012 開始。(藍狐筆記注:作者的意思是從不包含盜幣交易的區塊開始重組最長鏈。)

爲什麼有價值,因爲礦工構建了另外一條替代 575012 區塊的鏈,同時因爲有了被盜幣地址的私鑰,那麼它可以把該地址上的比特幣轉入自己的地址。這樣,公開了私鑰,相當於給到了礦工好處。

對於礦工來說,如果被盜幣地址的比特幣總量高於其從區塊 575011 開始挖礦所得的比特幣總量,那麼,礦工構建一個可替代的區塊鏈是理性的行爲。也就是說,這條可替代的區塊鏈會比當前的鏈吸引更多的工作量。

請注意,礦工可以通過不拿走所有好處而是給其他礦工留出足夠資金的方式來顯著提高可替代的區塊鏈取代現有鏈的概率。

好處足夠高,且不是太貪婪的瓜分,可以快速建立一個構建可替代鏈的聯盟,因爲任何礦工都可以被邀請並有動力加入。

最終參與構建可替代鏈的礦工們超越了當前鏈,構建出最長鏈。在重組之後,新的最長鏈現實中,被盜的資金可以獎勵給礦工,同時,自己還保有一部分資金,而礦工則比正常挖礦的所獲的比特幣更多。

這種救援行動在技術層面是可行的。如果失去資金的人準備提供好處,並且同時礦工準備採取行動做出理性選擇的話,這種行動是奏效的。當然,隨着時間的推移,成功的概率呈指數級的減少。(藍狐筆記注:就是說,時間越長,隨着區塊高度增加,後續重組的費用越高,重組可能性越小。)如果能事先承諾使用這一個程序,就能讓礦工可以迅速採取行動。

結果是什麼?

如果礦工進行重組,後果可能會非常嚴重,因爲重組可能會擾亂正常的交易處理,並削弱人們對區塊鏈不變性的信任。

這種損害是跟重組的長度成正比的。如果救援行動在幾個小時候內實施,那麼損失是微不足道的,因爲幾個區塊的重組在技術意義上不算一個事件,且不會明顯延遲正常的交易處理。

附錄:從博弈論角度,重組區塊不是理性的選擇

關於盜幣事件,首先有社區成員提議可以通過公開私鑰的方式來激勵礦工重組區塊鏈實現取回資金。有人認爲通過激勵礦工重組是很難協調的事情,但並非不可能。也有人認爲重組不太現實,不僅對於社區對比特幣的信心有很大的傷害,且在現實上的操作也不是理性的選擇。

Jimmy Song 認爲重組區塊損害的是整個網絡,因而大家有很大的動力不去改變交易歷史。

他提到用最簡單場景來分析,假如丟幣者願意用丟失的 BTC 激勵礦工重組區塊鏈,如果有 10% 的算力用於重組,要重組攻擊開始後的 100 個區塊,那麼,這意味着礦工需要放棄大約 10 個區塊的獎勵,也就是 125BTC 的區塊獎勵。也就是說,一旦礦工要重組,本身首先要放棄之前獲得的獎勵和交易費用,假如每個區塊 0.5BTC 的交易費用,那麼,也就是說,至少要放棄 130 個 BTC。

此外,如果事情出現了偏差,還會有風險溢價。如果其他人不支持新的替代鏈,那麼可能是在浪費本來可以在原鏈上挖礦的算力。也就是說,對於礦工來說,如果沒有成功重組,丟幣者要給予獎勵的不僅是 130BTC,還有潛在的挖礦所得激勵。

如果要動用礦工來成功重組,丟幣者需要支付 1300BTC 來恢復,丟幣總額爲 7000BTC,那麼還有 5700BTC 的純利。表面上看,似乎是合理的選擇。

但這個場景的最大問題是,如果一個主體可以這麼做,那麼其他有資金的主體也可以這麼做,這包括盜幣者。這會導致有很多雙重支付的嘗試,在盜幣後的 100 個區塊內進行過交易的人都很頭痛到底發生什麼事情。這對於比特幣網絡上進行交易的每個人來說,都是嚴重的干擾。因此,這種場景讓所有人都感動痛苦,其操作會存在阻力。

更有爭議的選擇是,這涉及到有爭議的分叉和競爭最長鏈。對 100 個區塊重組而言,超過 55% 的哈希算力意味需要花費平均 1000 個區塊(2 周時間)。偏差也很高,500 和 1500 個區塊也有可能。就是 99% 的算力優勢,也需要花費 101 個區塊(20 小時)來超越原來的鏈。

如果雙方競爭,雙方都試圖吸引更多礦工。這個時候,原鏈有先發優勢,因爲已經有了 100 個區塊的領先。在原鏈上的交易所、商家或用戶如果不希望進行 100 個區塊的重組,他們可以採用補償原鏈礦工的方式進行爭奪。方法很簡單:就是提高在原鏈上發送交易的費用。如果交易費用足夠高,很多礦工可能就會轉移到原鏈上挖礦。尤其是盜幣者可以通過在原鏈上發起高額費用的交易吸引礦工繼續在原鏈上挖礦。

如果一旦出現這種情況,會導致盜幣者和被盜幣方之間的礦工補貼大戰,雙方必須花費資金爭奪最長鏈。這時候盜幣者有天然優勢,因爲擁有之前盜取的資金,他們有動力動用這筆資金進行補貼大戰。這意味着,最終的結果是,被盜資金拿不回來,同時還至少需要消耗同等資金加上補貼礦工的區塊獎勵資金以及交易費用。按照簡單的公式來說,如果發生大規模盜幣事件後,考慮到博弈論,要重組區塊的成本很高:假設說被盜走了 X 個 BTC,需要重組 Y 個區塊才能拿回資金,那麼這意味着重組區塊鏈的成本至少不低於 X 個 BTC+Y 個區塊的挖礦獎勵。

從這個角度,通過激勵礦工重組區塊鏈追回被盜代幣的方式從經濟上來說,也不是最理性的選擇。最終受益者只有礦工。這也是比特幣設計的初衷,要改變它交易的成本非常高的。

來源鏈接:medium.com