“一筆交易” 的勝利

買賣虛擬貨幣

作者:NEST愛好者_九章天問

如果問我區塊鏈上,有什麼攻擊是不可避免的,我會回答:堵塞攻擊和51%攻擊。51%攻擊我們下次再談,今天單論這堵塞攻擊。

所謂堵塞攻擊,是用交易佔據區塊,使其他人的交易無法打包。

有人把堵塞攻擊比作區塊鏈上的DDOS攻擊:不是尋找系統漏洞,而是“合規”地佔用資源,令系統停擺。二者確有相似之處,抽象出來:一是“合規”,即攻擊是系統允許的;二是非漏洞,即任何系統都可能被攻擊,再完美也一樣;三是搶佔資源,攻擊者佔用系統資源,其他人被動排除在外。

仔細看這些特點,似乎並不是一個純粹的技術問題,也不是一個單純的安全問題。堵塞攻擊是一個經濟學問題,或者博弈問題。現以以太坊網路為例,我們先研究堵塞攻擊的最佳邏輯,其次則研究對抗堵塞攻擊的思路。

假設一個區塊的gaslimit上限是1000萬,最小的單筆交易是2萬,則堵塞一個區塊有兩種方案:第一種是用大量高gasprice的小型交易區堵塞區塊;第二種是用一筆高gasprice的大型交易(這裡大型和小型是以gaslimit來度量的,大型交易是儘可能佔滿整個區塊的交易,如gaslimit為1000萬)來堵塞。比如gasprice都是1000(312 以太坊網路擁堵的情況下,保證迅速打包的gasprice也在1000倍以內),則兩種方案計算出來的gas成本是一致的,這是從自己的立場出發計算的結果。

但從礦工和競爭者的角度看,二者是有差異的。

先說競爭者,即希望突破堵塞攻擊的交易者。如果是小型交易,則競爭者完全可以透過一筆更高的gasprice,搶在攻擊者之前打包,比如用2000的gaceprice去競爭,原則上一定排在諸多的gasprice為1000的小型交易前面;但對於一筆大型交易,由於礦工考慮最大化gas的組合,而不是最高gasprice的交易優先,則競爭者可能就被阻擋在外。這是因為,大型交易的總gas為1000萬*1000,而包含小型交易的gas為2萬*2000+其餘交易,這裡其餘交易是備選的第三方交易,一般gasprice較低。在這兩個交易組合裡,理性的礦工會選擇大型交易的組合,從而使競爭者即使出了更高的gasprice,由於其單筆交易的gas較低也會被排除在外。因此堵塞攻擊從有效性來講,高gasprice的大型交易更有優勢。

根據當前以太坊網路的交易情況,一個1000倍gasprice的大型交易的手續費為,1000w*1000=10 ETH,以來堵塞一個區塊,那麼堵塞10分鐘的成本在500ETH。如果外部激勵足夠大(外部激勵即當前行為之外的獎勵),堵塞1個小時也就是3000ETH,這很可能是值得的。注意到,1000倍gasprice只是基於一個統計資料的假設,並沒有基於一個鏈上應用來分析。

考慮一個鏈上應用,比如 DeFi,其經濟性存在對區塊的依賴,即在N個區塊內,需要完成一筆交易,否則會造成X個ETH的損失。如果該應用不做任何設計的話,按照之前的假設,10*N個ETH的堵塞攻擊即可造成X個ETH的損失。這裡有幾種情況:1.X個ETH的損失可以變成攻擊者的收益,則當X>10N時,攻擊便是一種完全理性的激勵。2.X個ETH的損失並不能變成攻擊者的收益,則此種情況和X<10N一樣,便成為一種惡意行為:透過破壞該應用的有效性使得資產從該應用中流出。 

這兩種情況應當分開考慮應對方案,但不管哪種情況,核心是如何使得堵塞攻擊失效:總有一筆交易能夠在臨界條件觸發前完成,這就是我們說的“一筆交易的勝利”。

對於第一種情況,應用需要做兩種設計:首先應當根據經濟規模或某種異常條件提升N的大小,變成N1;其次提升完成一筆交易的激勵收益:比如完成一筆交易的收益從a個ETH提升到b個ETH,其中b>a,並且b>10eth,即堵塞一個區塊的成本變成bETH,總成本從10*NETH變成b*N1ETH,只要b*N1ETH>X,則攻擊的外部激勵失效。

對於第二種情況,應對惡意攻擊的最好辦法,即是安排一種停機機制,包含兩種含義:其一是攻擊造成的成本幾何級數提升,使得攻擊者無法達到目的,從而放棄攻擊,比如NEST系統的beta係數設計,是目前區塊鏈行業內第一個內建停機系統的設計,我們可以借鑑,比如讓臨界區塊數N可以級數提升。其次,根據“一筆交易的勝利”難度自動調整應用的可執行性,當完成“一筆交易的勝利”變得非常緊迫時,可以讓應用暫時不能執行,使得攻擊者失去了攻擊目標。這兩種安排由於比較開放,需要更深入的邊界條件的分類研究。

當然,以上分析都是假設礦工是完全理性且只考慮打包的gas收益,不考慮可能的黑名單、自願犧牲部分利益抵制堵塞攻擊等行為,透過這些人性化的安排,也可以間接實現抗攻擊的目的,但我們更傾向於在應用端進行設計。

由於當前鏈上應用還在探索期,沒有人認真思考過堵塞攻擊的攻防,這對未來應用的發展十分不利,想想當年FOMO3D的結局,希望不要在DeFi行業發生。我們以此文提醒行業,小心堵塞攻擊,在開發應用合約時,儘可能用各種巧妙的方案來爭取“一筆交易的勝利”。

免責聲明:

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

推荐阅读

;