原文標題:《詳解以太坊合并后的重組攻擊》撰文:VitalikButerin與GeorgiosKonstantopoulos,前者為以太坊聯合創始人,后者為Paradigm研究合伙人編譯:ChenZou
最近,人們討論了礦工采用假定被修改的以太坊客戶端的可能性,該客戶端允許他們接受賄賂,并在選定的區塊中對交易進行排列。。
在這篇文章中,我們將解釋為什么這種攻擊模式在以太坊2.0合并后將更難執行。
分叉選擇規則,為什么它很重要?
分叉選擇規則是一個由客戶端評估的函數,它把已經看到的區塊和其他消息的集合作為輸入,并向客戶端輸出「典型鏈」是什么。分叉選擇規則是必要的,因為可能有多個有效的鏈可以選擇。
重組是一個特殊事件,在這個事件中,曾經是經典鏈的一部分的區塊不再是經典鏈的一部分,因為一個競爭區塊擊敗了它。最終性是指分叉選擇規則對某一區塊非常有利,以至于該區塊在數學上不可能被重合的情況。
在一些分叉選擇規則中,重組是不可能發生的;分叉選擇規則只是通過添加任何已經通過BFT共識并最終確定的區塊來擴展現有的鏈。在其他分叉選擇規則中,重組是非常頻繁的。
PoW)區塊鏈中,我們通常會看到「最長鏈規則」。這意味著,當客戶端發現2條區塊鏈時,它會選擇總難度最高的一條。
V神:不認同主架構師假設,比特幣也是由人類設計出的社會系統:5月18日消息,Vitalik Buterin 在回復 Blockstream 首席執行官 Adam Back 的一條帖子中表示,并不認同一個所謂的“大師級架構師的假設”,最初的加密貨幣(比特幣)也是一個由人設計的社會系統。加密貨幣的支持者認為 Satoshi Nakamoto 的協議是完美的這一事實證明,他們實際上并沒有拒絕主架構師假設。 此前,V神表示,盡管他熱愛權力下放和民主,但在許多政策問題上,他比普通人更傾向于與知識精英達成一致。[2022/5/18 3:25:06]
舉個例子,假設區塊的難度可以是100或110,想象一下下面的場景。
我們從難度為100的區塊1開始進行同步。
區塊2a和3a分別以100的難度到達,我們將它們插入我們的鏈中,形成一個總難度為300的分叉。
難度為110的區塊3b到達,宣布2a為其父方,形成總難度為310的分叉。分叉選擇規則將注意到「最重」的鏈現在是第二個分叉,并將切換到它。這是1個塊的重組,因為只有塊3a被改變了。請注意,這些區塊并沒有被完全丟棄,因為可能會有一個新的區塊到達,導致分叉選擇切換回第一個分叉上。
2b和3c區塊到達,每個區塊的難度都是110,創造了一個總難度為320的新分叉!這意味著分叉選擇的難度是320。按照分叉選擇規則現在將使用2b而不是2a,3c而不是3b,這些都是上一個經典鏈中的區塊。這是一個2個區塊的重新組合。
V神:分片是以太坊可擴展性的未來:V神發文表示,分片是以太坊可擴展性的未來,它將是幫助以太坊生態系統支持每秒數千筆交易,并允許世界上大部分人用可以承受的成本定期使用以太坊平臺的關鍵。他在文中解釋了分片提供的特定屬性,分片與沒有分片的其他技術有何不同,以及為達到這些屬性而必須做出的犧牲。他表示,分片的主要目標是盡可能地復制傳統(非分片)區塊鏈最重要的安全屬性,而無需每個節點親自驗證每筆交易。[2021/4/8 19:57:24]
你可以看到這將會發生什么。如果一個新的區塊4a到達,宣布3a為其父鏈,分叉選擇規則將切換回第一個分叉,以此類推。
鏈重組的影響
由于延遲的原因,短暫的重組一直在發生。礦工A和礦工B可能同時找到一個有效的區塊,但由于區塊在p2p網絡中的傳播方式,網絡的一部分區塊會首先看到A的區塊,另一部分會先看到B的區塊。如果這兩個區塊的難度相同,就會出現平局,客戶要么隨機選擇,要么選擇較早看到的區塊。通常情況下,當第三個礦工C在A的區塊或B的區塊上建造一個區塊時,平局最終被打破,而另一個區塊則被遺忘。偶爾,運氣不好也會導致2-5個區塊的重組。超過這個時間的重組幾乎都是由于極端的網絡故障,客戶端錯誤,或惡意攻擊造成的。
短暫的重組不是致命的,但它們仍然對網絡產生以下這些嚴重后果。
節點成本:當重組發生時,由于必須切換到新的分叉,可能會回滾交易或修改區塊鏈狀態,因此會有一些存儲問題。
V神:單數據根需要高帶寬P2P網絡及更復雜的P2P基礎設施:針對此前V神稱希望可以擺脫委員會,推特網友Mustafa Al-Bassam持續與V神進行互動。該網友表示:“建議仍然有一個委員會,但只有1個委員會而不是64個委員會。這允許區塊生產者在其自己的節點內分片生產區塊。大礦池將分配給所有分片。至于完全消除委員會(即直接使用Nakamoto共識),我對依靠單個數據根的抽樣感到非常滿意。如果有多個數據根,那么我感到不舒服。輕客戶端假設的數量是零散的。不過,在無委員會的多數據根模型中,一個重要的考慮是,客戶端更可能意外地接受64個不可用數據根中的1個為可用,而不是1個不可用數據根中的1個為可用。”V神則表示:“單數據根的挑戰在于,你需要一個非常高帶寬的P2P網絡,沒有多少節點能夠直接連接到它,所以你需要更復雜的P2P基礎設施,以使常規客戶能夠查詢。如果有多個數據根,那么我感到不舒服。輕客戶端假設的數量是零散的。我不認為這是真的,因為不是每個客戶都選擇64個分片中的一個來檢查,而是每個客戶都需要檢查每個分片。因此,問題不在于安全方向,而在于效率方向。”[2020/10/5]
用戶體驗下降:重新分叉的可能性意味著用戶需要等待更長時間才能安全地將涉及他們的交易視為「確認」。這方面的一個重要子案例是交易所等企業在接受存款之前需要等待更長時間。
交易背景的不確定性:當用戶發送交易時,他們對該交易將在什么背景下執行的確認性較低(例如,最近的N個區塊會不會被恢復?值得注意的是,這增加了DeFi交易對意外失敗,比預期差的交易結果或有害的MEV提取的可能性。
聲音 | V神:以太坊基金會在最高點出售了7萬枚ETH:金色財經報道,以太坊聯合創始人Vitalik Buterin最近在博客節目中表示,我確實讓以太坊基金會賣出了7萬枚ETH,基本上是在最高點,這使我們的跑道增加了一倍,因此這是一個產生很大影響的好決定。據悉,ETH在2018年1月達到了1400美元的高位。因此,如果他們以這個價格出售,那么7萬枚ETH的價值將是1億美元。[2019/12/14]
增加了51%算力攻擊的可能性:在一個最長鏈規則驅動的系統中,如果鏈上的礦工從B1到B2重新排序,那么B1的難度就不再有助于確保鏈的安全。攻擊者不再需要擊敗所有誠實的礦工,他們僅僅需要擊敗沒有被重組的那部分誠實礦工。如果頻繁重組,這就使攻擊者的工作大大簡化。
可能發生的最壞情況
在最壞的情況下,頻繁的重組可以使區塊鏈的結算保證完全失效,并阻止其繼續進行。通常情況下,區塊生產者的「激勵兼容」策略應該是延長最長的鏈。但是,如果某個區塊的后置狀態有利可圖,會發生什么?這個問題過去在沒有區塊獎勵的比特幣和自私采礦的背景下被探討過,今天在以太坊生態系統中與DeFi相關的MEV背景下也被探討過。
在這些情況下,有很大的動機試圖通過競爭而不是延長經典鏈的頂端來「偷取」費用或MEV。在下面的例子中,區塊1的后置狀態是有利可圖的,區塊2a已經被開采。然而,不是1個而是3個區塊生產者選擇在區塊1而不是區塊2a的基礎上進行開采,這可以擴展到任意數量的一方。
聲音 | V神:加密社區必須拋棄早期密碼朋克的個人主義:據Cointelegraph消息,3月24日,在RadicalxChange會議上,V神表示,加密社區應該擺脫早期密碼朋克時代的個人主義,利用技術創造具有積極社會影響的全新、公平和創新的系統。[2019/3/26]
出于顯而易見的理由,這樣的模式為惡意的51%算力攻擊打開了一扇大門。我們把從事這種重組開采戰術的礦工稱為「近視理性」,因為這樣做的決定在短期內可能是理性的。然而,他們在以太坊上有明確的或隱性的多頭頭寸,這意味著任何這種減少用戶對以太坊信任的攻擊都是違背他們的終極利益的,因此從長遠來看是不理性的。
合并后的以太坊與權益證明
在NakamotoPoW中,區塊在分叉選擇中被「串行」固化。首先,一個區塊被開采出來,這時,一個競爭區塊有可能會重組它。如果該區塊作為經典鏈的一部分存活下來,在13秒后,其他一些礦工在上面建立了第二個區塊。在這一點上,需要一個由兩個競爭區塊組成的鏈來重新組織它。隨著更多的區塊被建在上面,重新org鏈的難度繼續增加,但速度很慢。
以太坊的信標鏈實現了一個名為Gasper的PoS協議,有一個名為LMD-GHOST的分叉選擇規則。與NakamotoPoW相反,在區塊生產過程中,有2個角色。
提議者:一個驗證者的任務是提出一個區塊。
參與者:一組驗證者投票決定他們認為哪個區塊是經典鏈的頭。鑒定人的投票被稱為「證明」,他們為區塊賦予「權重」。控制鑒定人意味著控制分叉選擇規則。
每12秒有一個「槽」,它代表了一個提出區塊的機會。對于每個時段,一個洗牌算法偽隨機地選擇一個由所有驗證者的1/32組成的委員會,其中每個委員會中的一個驗證者是提議者,其余的是贊成者。審定者對他們認為是經典鏈的一部分的區塊進行平行投票。由于委員會是偽隨機抽樣的,攻擊者沒有辦法將他們的驗證者集中到一個單一的位置。
今天,信標鏈有19.6萬個驗證器,這意味著每個槽都有一個大小為6125的委員會。因此,即使是單一區塊的重構也是非常困難的,因為一個只控制了少數驗證者的攻擊者沒有辦法擊敗成千上萬的誠實的大多數參與者。
為了獲得一些關于為什么會這樣的直覺,讓我們看一個有2個插槽和24個驗證者的例子,其中9個是惡意的。驗證者被分成兩個委員會,由于隨機洗牌,對手不太可能控制他們被分配到的任何一個小組的50%以上,并導致重組。
更正式地說,擁有p%股權的惡意行為者控制N個驗證人規模的委員會中超過50%的概率遵循二項分布。
計算不同情況下的概率,我們得到以下表格:
我們現在明白,直接進行重組需要攻擊者控制接近50%的驗證者。
如果攻擊者擁有25-49%的驗證者,還有更微妙的攻擊是可能的。然而,這些攻擊有已知的修復方法,可以不引人注意地實施,增加安全性,接近無條件的50%。
最后,長時間的恢復是不可能的,因為所有深入到過去2個紀元的區塊都被認為是「最終確定」的,也就是說,不可能恢復過去。如果攻擊者導致兩個沖突的區塊被最終確定,系統將需要回落到socialintervention來恢復。
重組戰略采用的博弈論
既然我們已經看到了重組策略在不同的分叉選擇規則中是如何運作的,那么就值得通過一個簡單的博弈論例子來了解礦工或驗證者何時使用執行重組策略的軟件來獲利才是合理的。
我們可以用一個回報矩陣來通俗地描述每種情況,其中「缺陷」意味著「下載并使用執行反欺詐的軟件」。報酬是「短視」的,沒有考慮到長期后果。
中本聰工作證明
在最長鏈PoW中,短距離重組可以用驗證器集的哪怕一小部分進行概率性的重組。偶爾總會有一些區塊具有有利可圖的后置狀態,以至于即使是1-10%的成功率也值得嘗試與該區塊的現有子塊競爭。
礦工可以是一個中等規模的礦池,依靠他們連續找到下一個2-3個區塊的可能性,或者他們可以將他們收入的一部分送入一個任何人都可以索取的合同中,以賄賂其他運行相同軟件的人在他們的鏈上建立并幫助它對抗現有的經典鏈。
因此,一些礦工可能會被誘惑去運行reorg客戶端。
Gasper
在Gasper中,1-64個槽位的重組是可能的,但需要攻擊者控制整個驗證器集的很大一部分。除非有非常多的其他驗證者也同時采用,否則采用重組挖礦軟件是沒有用的。
因此,如果51%的驗證者有哪怕是最輕微的利他主義,那么沒有一個人運行重組軟件是一個穩定的均衡狀態。
Tendermint
在Tendermint中,情況甚至更干凈:重組是不可能的,任何違反單槽最終性的行為都需要1/3以上的驗證者被砍掉。與Gasper的情況類似,這也意味著沒有人運行重組軟件才是一個穩定的均衡。
從上面我們可以看出,雖然采用「reorggeth」在所有情況下都是可能的,但基于平行證明概念的分叉選擇規則有誠實的均衡狀態,且它將比Nakamoto分叉選擇中的均衡更穩定。
經驗之談
在以太坊的背景下,最有效的預防措施是進一步加快合并的工作,特別是迅速實現可信的能力,進行「緊急合并」,將鏈過渡到PoS。急于合并會有很高的風險,可能會破壞基礎設施,但如果許多礦工開始重新攻擊鏈,一個可信的承諾將對這種行為起到抵制作用。
接近合并的時期風險最大,因為礦工仍然是系統的負責人,但他們的時間跨度縮短了。然而,有兩個因素緩解了這種風險。
以太坊礦工往往同時是其他區塊鏈的礦工,和/或以太坊社區其他身份的成員,所以他們仍然會有良好行為的動機。
隨著合并的臨近,進行緊急合并的難度、成本和風險也在降低。在合并的預定日期前幾個月,緊急合并將是具有高度破壞性的。在合并預定日期的兩周前,對客戶來說,這將是一個參數設置,驗證操作器已經完成了下載。
合并后,重組驗證將成為一個更小的問題,因為單個驗證者或一小群驗證者不能獨自重組。重組攻擊想要成功必須解決極其困難的協調問題,即讓大多數驗證者同時下線。然而,一些小的風險仍然存在。如果希望進一步提高安全性,那么以太坊可以進一步調整分叉選擇規則,將重組攻擊的要求提高到50%的理論最大值,或者找到一種方法,直接轉向單槽inality的共識。
本文轉自比推BitpushNews,星球日報經授權轉載
隨著DeFi的興起,流動性挖礦成為幣圈一種炙手可熱的投資方式。Gate.io近期也上線了流動性挖礦產品,力求在市場行情低潮時期,為平臺用戶提供具有更高預期收益的活期理財產品.
1900/1/1 0:00:00巴比特訊,7月21日,隱私層協議項目KeepNetwork與隱私基礎設施NuCypher的代幣合并初步方案公布,二者合并代幣T為具有EIP2612許可功能的可銷毀ERC20代幣.
1900/1/1 0:00:00投資市場有些不被看好的投資標的,往往會一飛沖天有幾倍甚至更多倍的漲幅。證券市場如此,幣圈更是有如此的機會.
1900/1/1 0:00:00將去中心化信任技術和杠桿投資結合在一起5xMarginTool將與UNIDO項目合作,將他們的杠桿投資工具集成到UNIDOEP產品中.
1900/1/1 0:00:00作者|秦曉峰 編輯|郝方舟 出品|Odaily星球日報據CNBC報道,馬來西亞砂拉越州當局近期使用壓路機摧毀了1069臺比特幣礦機,這是當地執法部門和電力公司沙撈越能源公司聯合行動的一部分.
1900/1/1 0:00:00親愛的BitMart用戶,SafeEnergy(ENERGYX)已于2021年7月16日23:00(香港時間)上線BitMart!為慶祝ENERGYX上線.
1900/1/1 0:00:00