以太坊價格 以太坊價格
Ctrl+D 以太坊價格
ads
首頁 > 火必APP > Info

GAS:躲避子彈:以太坊狀態問題

Author:

Time:1900/1/1 0:00:00

這篇文章的目的是正式公開一個對以太坊平臺的嚴重威脅,其危險性清晰而明確,直到“柏林”硬分叉才解除。

狀態

我們先來了解一些以太坊和“狀態”的背景知識。

以太坊狀態是一棵帕特里夏-默克爾樹。本文不會深入過多細節,你只要知道,隨著狀態數量的增長,這個樹結構的分支會變得越來越密。以太坊區塊鏈上每多一個賬戶,這棵樹就多一個葉子節點。在樹的根節點與葉子節點,是許多所謂的“中間”節點。

為了查找某個賬戶,或者說在這棵龐大的樹上找到某片“葉子”,需要解析6~9個哈希值,從根節點開始,經由中間節點,最終解析到一個能夠給予我們所需數據的哈希值。

用大白話來說:無論什么時候要在這棵樹上查找某個賬戶,都要經過8~9次解析操作。每次解析操作都是一次數據庫查詢,而每一次數據庫查詢都意味著不確定數量的多次硬盤操作。硬盤操作的次數很難估計,但是因為狀態樹的“鍵”是密碼學哈希值,所以這些鍵都是隨機的,這對所有數據庫來說都屬于最壞的情況。

隨著以太坊狀態的增加,就有必要提高訪問狀態樹的操作的Gas消耗量。早在2016年10月,我們就曾用“橘子口哨”分叉做過這樣的事。EIP150大幅提高了特定操作的Gas消耗量,并引入了一系列的措施來保護網絡免于DoS攻擊;這是在所謂的“上海攻擊”之后推出的。

Waves創始人:Power空投將只在Waves鏈上進行,USDN將作為指數代幣以去中心化方式存在:1月18日消息,公鏈項目Waves創始人Sasha Ivanov在電報群中發布聲明稱:“關于USDN的未來有一些誤解,我想澄清一下。首先,它作為穩定幣是失敗了,但沒有‘死’。事實證明,它的架構對于硬錨定的穩定幣來說是失敗的。但對于另一種有趣的金融產品,即生態系統指數,它已經足夠了。它不需要硬錨定,它只需要跟蹤選定的生態系統代幣的投資組合。我們把它作為一種穩定幣逐步淘汰,但我們把它作為一種具有新的意義和效用的新資產復活。我認為這很不尋常,但極端時期需要極端措施。我們這樣做的方式是,我們將能夠保留NSBT和SURF代幣及其激勵措施,我們也將激勵代幣持有者將他們的代幣添加到指數中。由于它不再是穩定的,它的價格不僅可以低于1美元,也可以高于1美元。我們正在準備添加新的金庫資產,首先這將是一項捐贈,之后向金庫添加新代幣的激勵措施將生效,項目將以完全去中心化的方式存在。”

此外,Ivanov在推特上表示,要想獲得Power代幣空投,需將Waves代幣從中心化交易所取出,Power代幣空投將只在Waves鏈上進行。

此前1月12日消息,Ivanov表示,將于1月至2月空投Power代幣。1月13日消息,Neutrino團隊稱,USDN正從穩定幣過渡到Waves生態系統指數代幣WIXT,將不再與1美元掛鉤。[2023/1/18 11:18:24]

另一次這樣的Gas消耗量提升是在“伊斯坦布爾”分叉的時候,在區塊高度?9069000?激活,引入了EIP1884。1884的內容包括:

BitMEX對Rene Pickhardt的比特幣開發者贈款延長至2023年5月:11月14日消息,BitMEX宣布將對Rene Pickhardt的比特幣開發者贈款延長至2023年5月,比之前的贈款延長了6個月。BitMEX目前支持五位比特幣開發和研究人員,Rene Pickhardt的贈款金額是每年5萬美元,其主要專注于閃電網絡。[2022/11/14 13:03:25]

SLOAD?操作碼的Gas消耗量從?200?提高到?800?gas

BALANCE?消耗量從?400?提高到?700?gas

EXTCODEHASH?消耗量從?400?提升到?700?gas

問題

在2019年3月,MartinSwende測量了EVM操作碼的性能。這一研究后來導致了EIP-1884的創建。在1884激活的幾個月前,這篇以“BrokenMetre”為名的論文發表。

兩位以太坊安全研究員——HubertRitzdorf和MatthiasEgli——與這篇論文的作者之一DanielPerez展開了合作,并“武器化”了一個漏洞,并提交給了以太坊的bug懸賞項目。那是在2019年10月4日。

我們建議你完整地閱讀他們提交的報告,寫得非常好。

Immutable任命前BlockFi高管擔任NFT.com副總裁:金色財經報道,上市區塊鏈控股公司Immutable Holdings Inc. 宣布Jacob Avidar 和Shane Marzola 已加入公司,分別擔任 NFT.com 的工程副總裁和業務發展與合作伙伴關系副總裁,兩人將向首席產品官 Don Thibeau 匯報。Jacob Avidar曾在多家一級公司擔任工程副總裁,Shane Marzola是前BlockFi高管,將負責為 NFT.com引入高價值NFT和藏家用戶,與品牌和技術提供商合作推出其 NFT 收藏品,并為整個業務發展生命周期設定方向。(globenewswire)[2022/10/31 11:59:23]

在一個專門討論跨客戶端安全性的頻道里,來自Geth客戶端、Parity客戶端和Aleth客戶端的開發者被告知了這份報告,就在同一天。

該漏洞的本質是觸發隨機的樹查找。一個非常簡單的變體是:

在他們的報告里,研究員通過?eth_call?RPC端點對同步到主網的節點執行了這一負載,下面是它們消耗1000萬gas所需的時間。

俄羅斯PSB銀行通過移動應用程序進行數字盧布轉賬實驗:金色財經報道,俄羅斯銀行通過移動應用程序進行數字盧布轉賬實驗,Promsvyazbank (PSB) 是首批加入俄羅斯央行發行的中央銀行數字貨幣 (?CBDC?) 試驗的俄羅斯銀行之一。該銀行最近通過其移動設備應用程序測試了數字盧布交易。

為了進行操作,參與者必須在應用程序中進行注冊并設置一個數字錢包。然后,他們可以使用他們的賬戶將常規電子銀行貨幣兌換成數字盧布,并將數字現金轉移給銀行的其他客戶以及參與試點項目的其他銀行的客戶。有關已執行交易的所有信息均由俄羅斯中央銀行(CBR)運營的數字盧布平臺提供,并立即反映在智能手機應用程序中用戶數字錢包的余額中。該平臺的原型是去年年底由貨幣當局推出的。[2022/9/4 13:07:32]

使用?EXTCOEHASH?耗盡1000萬gas

Parity:約90秒

Geth:約70秒

使用?EXTCODESIZE?消耗1000萬gas

Parity:約50秒

Geth:約38秒

顯而易見的是,EIP-1884確實減少了攻擊的效果,但還是遠遠不夠的。

那時候離大阪Devcon已經很近了。在Devcon期間,關于這一問題的知識在主網的客戶端開發者之間傳開來。我們也會晤了Hubert和Mathias,還有GregMarkou。ETC區塊鏈的開發者們也收到了這份報告。

伊朗因可疑外幣和加密交易封鎖了9200個銀行賬戶:金色財經報道,伊朗情報部周六發表聲明稱,由于可疑的外幣和加密貨幣交易,它已經封鎖了一些銀行賬戶。共有 545 人的 9219 個銀行賬戶被凍結。聲明補充說,被阻止的總交易價值超過 60 萬億伊朗托曼,按伊朗公開市場的每日美元匯率計算,約為 20 億美元。伊朗貨幣兌美元匯率最近觸及四個月低點。但是,該部沒有提供有關賬戶的任何詳細信息,也沒有提供其中多少是數字貨幣。(bitcoin.com)[2022/5/17 3:21:12]

隨著2019年接近尾聲,我們發現,這問題比我們之前以為的還要棘手,惡意的事務可能導致出塊時間延長到以分鐘計。更難辦的是,開發者社區已經對EIP-1884感到不滿,它打破了一些合約,而且用戶和礦工都希望提高區塊的GasLimit。

此外,僅僅兩個月之后,到了2019年12月,PartiyEthereum就宣布要退出了,OpenEthereum項目接管了Parity客戶端的代碼維護工作。

于是大家創建了一個新的客戶端協作頻道,Geth、Netheremind、OpenEthereum和Besu的開發者繼續合作。

解決方案

我們意識到,只有雙管齊下才能解決這個問題。一方面,我們要改進以太坊協議,也就是在協議層解決這個問題;最好是不要打破合約,也不要懲罰“善意”的行為,但又能防止攻擊。

另一方面,我們可以依靠軟件工程,改變客戶端內的數據模式和結構。

協議層工作

處理此類攻擊的第一個思路是這個。在2020年2月,其正式版本作為EIP2583發布。該提案背后的觀念是增加一個懲罰措施,每次樹查找導致miss時就觸發。

不過,Peter找出了一個繞過它的辦法——“shieldedrelay”攻擊——使得本質上懲罰有了一個上限。

懲罰miss?方法的問題在于,必須先有查找的過程,然后才能確定要不要實施懲罰。但如果剩余的gas已不足于實施懲罰,則一個沒有得到充分支付的消耗流程又已經執行了。即使這會導致拋出錯誤,這些狀態讀取也可以封裝到嵌套調用中,使得外部調用者可以重復執行攻擊而不必支付懲罰。

因此,這個EIP也被拋棄了,我們要尋找更好的替代方案。

AlexeyAkhunov研究了Oil的概念——一種次級的“Gas”,但與Gas完全不同的是,它對執行層是不可見的,而且可能導致事務全局回滾。

Martin提了一個類似的提案,稱為“Karma”,在2020年5月。

雖然這許多方案都有進展,VitalikButerin提議僅僅提高Gas消耗量,并維護一個“訪問清單”。在2020年8月,Martin和Vitalik開始迭代后來成為EIP-2929及其同伴EIP-2930?的想法。

EIP-2929在根本上解決了許多上面提到的問題。

與EIP-1884相反;1884是無條件提高Gas消耗量,但2929僅提高訪問新對象的Gas消耗量。這使得凈成本僅增加了不到一個百分點。

同樣地,與EIP-2930配合后,就不會打破任何合約。

它還可以通過提高Gas消耗量來進一步調整

在2021年4月14日,這兩個EIP都在“柏林”分叉時激活。

開發工作

Peter嘗試用動態的狀態快照解決這個問題,時值2019年10月。

快照是一個次級的數據結構,用來以扁平格式存儲以太坊狀態。快照可在Geth節點正常運行期間創建,無需下線專門執行。快照的好處是,它可以作為狀態訪問的一種加速結構:

不再是執行?O(logN)?次硬盤讀取來訪問一個賬戶/存儲項,快照可以提供直接的,O(1)?級別的訪問時間。

快照還支持以每個條目?O(1)?的復雜度迭代賬戶和存儲項,這使得遠程節點可以檢索連續的狀態數據,比以往便宜非常多。

快照的存在還支持其它更奇怪的用途,比如離線修剪狀態樹,以及遷移到另一種數據格式。

弊端是,快照等于是完全復制了賬戶和存儲項的未經處理的數據。若在主網環境中使用,這意味著需要額外25GB的固態硬盤空間。

動態快照的想法從2019年中就有了,當時的主要目標是啟用“快照同步”。那時候Geth團隊還在開發許多“大項目”:

離線的狀態修剪

同態快照+快照同步

通過共享狀態實現LES狀態分散

不過,后來他們決定一心一意做快照功能,推遲了其他項目。這些工作為后來的?snap/1?同步算法打下了基礎。這一算法已在2020年3月合并到了代碼庫中。

有了“動態快照”功能,我們就能喘口氣了。如果以太坊網絡遭到攻擊,那會是很痛苦的,但至少,我們能通知用戶打開快照功能。生成快照需要花一些時間,而且還沒有辦法同步快照,但網絡至少能繼續運行了。

結合

在2021年3月/4月,?snap/1?協議已經在geth客戶端推出,節點能夠使用新的、基于快照的算法來同步區塊鏈了。雖然還不是默認的同步模式,這是使快照能不僅作為攻擊保護措施,也能顯著提高用戶體驗的一部。

在協議層,“柏林”升級已于2021年4月激活。

在我們的AWS監控環境中,我們的基準測試結果如下:

“柏林”前,沒有快照,處理2500萬gas:14.3秒

“柏林”前,有快照,處理2500萬gas:1.5秒

“柏林”后,沒有快照,處理2500萬gas:約3.1秒

“柏林”后,有快照,處理2500萬gas:約0.3秒

這個的數字表明,“柏林”升級使攻擊的效率降低了5倍,而快照使之降低了10倍,最終使其影響降低了50倍。

我們估計,在當前的主網上,不使用?快照的geth節點可能可以做到只需2.5~3秒就能執行一個區塊。隨著狀態的增長,這個數字會繼續惡化。

如果gas返還機制被用來造成單個區塊的實際gas使用量提升,這個惡化的倍數是2倍。在EIP-1559實施后,區塊的GasLimit會有更高的彈性,在短時間內可爆發出最大2倍的惡化乘數。

至于實施這種攻擊的可行性,攻擊者買斷一個區塊的成本大概在幾個ETH這樣的級別。

為何要在此時公開

這一威脅在很長時間里都是“公開的秘密”——因為疏忽,它至少被公開披露過一次;而且在核心開發者會議中也多次提到它,雖然沒有公開細節。

因為我們已經激活了“柏林”升級,也因為geth客戶端已經默認使用快照功能,我們認為,威脅已經足夠低,而透明化才是更重要的了。所以是時候把幕后的工作都公開了。

重要的是,社區得到了一次理解和思考這些影響用戶體驗的變更的機會。

Tags:GASETH以太坊GETHVegasDogetogetherbnb怎么開啟H以太坊幣最新價格行情游戲名《TogetherBnB》

火必APP
CHA:RUNE的迭代

始于跨鏈的“Uniswap”關于Thorchain,藍狐筆記之前介紹過多次。這一年多來,Thorchain有了很多變化.

1900/1/1 0:00:00
比特幣:4個維度探討NFT如何將品牌內容營銷提升至新高度

NFT也非常擅于為客戶創造各種難忘的體驗。品牌方應考慮將NFT營銷與品牌內容策略結合起來,找到從中受益的方法.

1900/1/1 0:00:00
COI:無量暴跌讓交易者疑惑 SBF整理五項可能原因 但坦言:「無法預測」

繼519崩盤后,加密市場于昨又持續震蕩下跌,FTX數據顯示,比特幣昨單日下跌7.3%,盤中跌幅甚至超過雙位數。雖然「幣圈老韭菜」對于這次下跌見怪不怪,但資深的交易員還是嗅到了一絲不尋常.

1900/1/1 0:00:00
POLY:金色硬核 | 一文讀懂什么是Polygon 怎么玩轉Polygon

金色財經推出金色硬核欄目,為讀者提供熱門項目介紹或者深度解讀。近期不少主流DeFi協議如Aave、Curve、Sushiswap、NFT陸續部署在Polygon上,其鎖定資產急劇增加,Gas費極.

1900/1/1 0:00:00
比特幣:幣價暴跌,跌破主流機構的持倉成本了嗎?

盤了遍主流機構入手比特幣的成本,好家伙,有的比我還高。作者|秦曉峰?編輯|郝方舟出品?|?Odaily星球日報近期,加密市場迎來大回調.

1900/1/1 0:00:00
區塊鏈:行業觀察:深度解析波卡平行鏈插槽拍賣,對DOT和生態意味著什么?

2020年12月23日,波卡聯合創始人Robert在PolkaWorld官方發文宣布,波卡專用的平行鏈測試網RococoV1已經啟動并運行,允許社區平行鏈通過cumulus連接到中繼鏈.

1900/1/1 0:00:00
ads