通過此博客文章,目的是正式披露以太坊平臺所面臨的一個嚴重威脅。在以太坊柏林硬分叉之前,這個威脅是切實存在的。
讓我們從以太坊和狀態的背景知識開始。
以太坊狀態由一種patricia-merkle trie(一種前綴樹)組成。這篇文章將不做過多的詳細介紹,隨著狀態的增長,這個樹上的樹枝變得越來越密。添加的每個帳戶都是一片葉子。在樹的根和葉本身之間,有許多“中間”節點。
為了在這棵巨大的樹中查找給定的帳戶或“葉子”,需要從根到中間節點來解析大約6-9個哈希的某個位置,以最終解析最后一個哈希hash,該哈希會指向我們正在尋找的數據。
簡而言之:每執行一次Trie查找來查找帳戶,就會執行8-9個解析操作。每個解析操作都是一次數據庫查找,并且每詞數據庫查找可以是任意數量的真實磁盤操作。磁盤操作的次數很難估計,但是由于trie密鑰是加密哈希(抗沖突),因此密鑰是“隨機的”,這對任何數據庫來說都是最糟糕的情況。
隨著以太坊的增長,有必要提高訪問trie的操作的gas價格。這是在2016年10月區塊高度2,463,000的Tangerine Whistle中執行的,其中包括EIP150。EIP150在所謂的“上海攻擊”之后大幅提高了某些操作的gas成本,并進行了一系列更改以防止DoS攻擊。
Curve創始人在Fraxlend上的資金利用率為99.99%,貸款利率每12小時就將翻倍:8月1日消息,據加密研究機構Delphi Digital分析,Curve創始人Egorov目前在Aave平臺上,擁有3.05億美元的CRV作為抵押,借出了6320萬美元的USDT。在55%的清算閾值下,他的借貸頭寸可能會在CRV/USDT匯率為0.3767時被清算。這只需要CRV價格下跌約33%就可能發生清算。
此外,他還需要支付大約4%的年化利率作為此次借貸的費用。在FraxFinance擁有5900萬美元CRV頭寸,而其債務為1580萬美元。盡管這個借貸比例相對較低,但由于Fraxlend的時間加權可變利率,對CRV的風險較大。當資金利用率為100%時,貸款利率每12小時就會翻倍。
據Fraxlend最新數據,目前CRV池資金利用率為99.99%,貸款利率為105.2223%,但預計僅3.5天后即可升至最高近10,000%APY。[2023/8/1 16:11:01]
另一項gas提升同樣在伊斯坦布爾升級中被執行,即2019年12月區塊高度9,069,000。在這次升級中,EIP 1884被激活。
EIP 1884引入了以下操作成本更改:
SLOAD從200提升到800gas,
ARB Token為防止機器人濫用,本次空投建立積分制:3月16日消息,以太坊 Layer2 擴容解決方案 Arbitrum 正式宣布將發行原生 Token ARB 并公布 Token 經濟學。據悉,ARB 初始總供應量為 100 億枚,總供應量將以每年至多 2% 的速度膨脹。
其中,11.62% 分配給用戶,1.13% 分配給 Arbitrum 生態中的各個 DAO,17.53% 分配給 Offchain Labs 投資者,26.94% 分配給 Offchain Labs 團隊成員、未來團隊成員、貢獻者,42.78% 分配給 Arbitrum DAO 金庫。
為防止機器人濫用,本次空投建立了許多反女巫規則,并建立積分制,每 1 分對應一個具體的空投 Token 數目:1、如果空投接收者的錢包交易全部發生在 48 小時內,則減去一分;2、如果空投接收者的錢包余額低于 0.005 ETH,并且錢包沒有與多個智能合約交互,則減去一分;3、若在此前 Hop 協議賞金計劃期間,空投者錢包地址被識別為女巫攻擊者地址,則其將被取消資格。
目前 Arbitrum 已公布的空投查詢頁面,僅支持用戶查詢空投情況,具體空投發放日期為 3 月 23 日。[2023/3/17 13:09:01]
BALANCE從400提升到700gas(SELFBALANCE有所降低),
21Shares推出首個加密質押指數ETP:金色財經報道,ETP發行商21Shares宣布與指數提供商Vinter合作推出加密貨幣質押指數ETP(21Shares Staking Basket Index ETP),該 ETP 追蹤基于 PoS 區塊鏈的原生Token,包括 BNB、ADA、ATOM、DOT、SOL、XTZ。該指數將在 3 月和 9 月進行每半年一次的重新平衡,以反映市場變化。[2023/1/18 11:19:30]
EXTCODEHASH從400提升到700gas。
2019年3月,Martin Swende對EVM操作碼性能進行了一些測量。 這次調查之后促成創建了EIP-1884。 在EIP-1884上線之前的幾個月,《Broken Meter》論文正式發表(2019年9月)。
兩位以太坊安全研究人員(Hubert Ritzdorf和Matthias Egli )與該論文的一位作者Daniel Perez合作“武器化”了一個漏洞,他們將漏洞提交給了以太坊賞金計劃。這是在2019年10月4日。
我們建議您完整閱讀那次提交的內容,這是一份精心撰寫的報告。
在專門用于討論跨客戶端安全性的頻道上,當天,來自Geth,Parity和Aleth的開發人員被告知了有關提交的信息。
333.eth以100 WETH價格售出:12月30日消息,OpenSea數據顯示,333.eth以100 WETH價格售出。[2022/12/30 22:16:39]
該漏洞的本質是觸發隨機trie查詢。 一個非常簡單的變體是:
在他們的報告中,研究人員通過eth_call對同步到主網的節點執行了此有效負載,這些是在使用10M gas時執行的數量:
使用EXTCODEHASH?(400 gas)發動10M gas攻擊
Parity:?~90s
Geth:?~70s
使用EXTCODESIZE?(700gas)發動10M gas攻擊
Parity :?~50s
Geth :?~38s
顯而易見,EIP 1884引入的更改確實在降低攻擊方面產生了影響,但遠遠不夠。
在大阪Devcon大會之前確實如此。在Devcon期間,主網客戶端開發人員之間共享了該問題的知識。我們還與Hubert和Mathias以及Greg Markou(來自Chainsafe的ETC工作人員)進行了會面。 ETC開發人員也收到了這份報告。
隨著2019年臨近尾聲,我們知道我們遇到的問題比我們之前預期的要大,惡意交易可能導致區塊時間間隔增加到分鐘級。更糟的是,開發人員已經對EIP-1884感到不滿意,因為EIP-1884中斷了某些合約程序,而用戶和礦工們都為提高gas限制而著急。
OpenSea Seaport Polygon鏈上交易額突破3000萬美元,創歷史新高:金色財經報道,據區塊鏈分析平臺Dune Analytics數據顯示,基于開源NFT協議Seaport的OpenSea Polygon 鏈上交易額突破3000萬美元,創歷史新高,本文撰寫時達到30,023,189美元,交易量874,811筆,獨立用戶數量176,583個。[2022/12/8 21:30:19]
此外,僅兩個月后的2019年12月,Parity Ethereum宣布退出以太坊工作,而OpenEthereum接管了代碼庫的維護工作。
之后一個新的客戶端協調頻道被創建,在該頻道中,Geth,Nethermind,OpenEthereum和Besu開發人員繼續進行協調。
我們意識到,我們必須采取兩種方法來解決這些問題。 一種方法是使用以太坊協議,并以某種方式在協議層解決該問題。 最好不要違反合約,最好不要懲罰“良好”行為,但仍要設法防止攻擊。
第二種方法是通過軟件工程,通過更改客戶端中的數據模型和結構。
如何處理這些類型的攻擊的第一個迭代升級可以在這里查看。 2020年2月,該解決方案以EIP 2583的形式正式發布。其背后的想法是,每當一次Trie查找導致遺漏(miss)時,簡單地增加一個罰款。
但是,Peter為這個想法找到了一種解決方法——“屏蔽中繼”攻擊——將這種懲罰的有效范圍設定一個上限(約800gas)。
對于miss所導致的罰款的問題在于,首先需要進行查找,以確定必須施加罰款。 但是,如果剩余的gas不足以進行罰款,則表明已執行了未付費用。 即使確實導致拋出異常,也可以將這些狀態讀取包裝到嵌套調用中。 允許外部調用者繼續重復攻擊而無需支付(全部)罰款。
因此,這個EIP被棄置,而我們正在尋找更好的替代方案。
阿列克謝·阿克胡諾夫(Alexey Akhunov)探索了Oil的概念,它是“gas”的第二種來源,但與gas本質上不同,因為執行層看不到它,并可能導致交易全局還原。
Martin在2020年5月提出了一個類似提案,關于Karma的。
在迭代這些計劃時,Vitalik Buterin建議僅增加gas成本,并維持訪問名單。 2020年8月,Martin和Vitalik開始迭代,也就是后來的EIP-2929及EIP-2930。
EIP-2929有效地解決了許多以前的問題。
與EIP-1884(無條件增加成本)相反,它僅針對尚未訪問的內容增加成本。這導致凈成本僅增加了不足百分之一。
此外,它與EIP-2930一樣,不會破壞任何合約流
而且,可以通過提高gas成本(不中斷操作)來進一步調整它。
2021年4月15日,它們都隨著柏林升級而上線。
2019年10月,Peter嘗試解決此問題的方法是進行動態狀態快照。
快照是一種二級數據結構,用于以平面格式存儲以太坊狀態,在Geth節點的實時運行期間,可以完全在線構建。
照的好處在于,它充當狀態訪問的一種加速結構:
快照無需提供O(log N)磁盤讀取(x LevelDB開銷)來訪問帳戶/存儲插槽,而是可以提供直接的O(1)訪問時間(x LevelDB開銷)。
快照支持每項條目O(1)復雜度的帳戶和存儲迭代,這使遠程節點可以比以前便宜得多地檢索順序狀態數據。
快照的存在還實現了更多奇特的用例,例如離線修剪狀態Trie或遷移到其他數據格式。
快照的缺點是原始帳戶和存儲數據實際上是重復的。對于主網,這意味著要使用額外的25GB SSD空間。
動態快照的想法已經在2019年中期開始,主要目的是成為snap 同步的推動者。當時,Geth團隊正在開展許多“大項目”。
離線狀態修剪
動態快照+snap同步
通過分片狀態進行的LES狀態分布
但是,最后決定完全優先考慮快照,暫時將其他項目推遲。 這些奠定了后來成為snap / 1同步算法的基礎。 于2020年3月合并到主網。
隨著“動態快照”功能的發布,我們有了一些喘息的空間。 如果以太坊網絡受到攻擊,那將是痛苦的,是的,但是至少有可能通知用戶有關啟用快照的信息。 整個快照生成將花費大量時間,并且尚無法同步快照,但是網絡至少可以繼續運行。
在2021年3月至4月,snap / 1協議在geth中推出,從而可以使用基于快照的新算法進行同步。 盡管仍然不是默認的同步模式,但這是使快照不僅可用作攻擊防護,而且對于用戶來說是一項重大改進。
在協議方面,柏林升級在2021年4月正式執行。
以下是在我們的AWS監控環境中制定的一些基準測試:
柏林升級前,無快照,25M gas:14.3s
柏林升級前,有快照,25M gas:1.5s
柏林升級后,無快照,25M gas:~3.1s
柏林升級后,有快照,25M gas:~0.3s
(粗略的)數字表示,柏林升級將攻擊的效率降低了5倍,快照將攻擊的效率降低了10倍,總共將攻擊影響降低了50倍。
我們估計,目前在主網(15M gas)上,在沒有快照的情況下,創建區塊可能需要2.5-3s在一個 geth節點上執行。 隨著狀態的增長,該數字將繼續惡化(對于非快照節點)。
如果使用refund來增加一個區塊內的有效gas使用量,則可以進一步提高(max)2x倍。 使用EIP 1559,區塊gas限制將具有更高的彈性,并允許在臨時爆發中再增加2倍(ELASTICITY_MULTIPLIER)。
至于實施這種攻擊的可行性; 攻擊者購買一個完整的區塊所需的成本約為幾個ETH(以100Gwei的價格購買15Mgas為1.5ETH)。
長期以來,這種威脅一直是“公開秘密”,實際上至少有一次被無意間地公開披露,并且在ACD電話會議中多次被提及,但沒有明確的細節。
由于柏林升級現在已經過去,并且默認情況下,geth節點正在使用快照,因此我們估計這個威脅的危險程度非常低,可以公開了,現在該對此前的開發者幕后工作進行全面披露。
至關重要的是,社區必須有機會了解對用戶體驗產生負面影響的變更背后的原因,例如增加gas成本和限制refund。
這篇文章是由馬丁·霍爾斯特·斯文德(Martin Holst Swende)和彼得·西拉吉(Peter Szilagyi)2021-04-23撰寫的。 在2021-04-26與其他基于以太坊的項目共享,并在2021-05-18公開披露。
Tags:GASETH以太坊GETHDexigasYu-Gi-Eth!以太坊交易所叫什么名字togetherbnb為什么恐怖
注:5月20日,波卡創始人 Gavin Wood在波卡社區大會上表示,Kusama 平行鏈預計將于下周一上線.
1900/1/1 0:00:005月21日,在國務院副總理、金融委主任劉鶴主持召開的國務院金融穩定發展委員會第五十一次會議上,明確提出要堅決防控金融風險,強化平臺企業金融活動監管,打擊比特幣挖礦和交易行為.
1900/1/1 0:00:005月21日周五晚,國務院金融穩定發展委員會(以下簡稱金融委)召開第五十一次會議,要求打擊比特幣挖礦和交易行為,堅決防范個體風險向社會領域傳遞.
1900/1/1 0:00:00目前主流的NFT平臺如SuperRare,Foundation,Opensea、Rarible等均基于以太坊,在它們上面鑄造NFT的一大被用戶詬病的地方是.
1900/1/1 0:00:00比推終端數據顯示,比特幣價格連續兩日跳水,過去24小時,市值最大的加密貨幣跌穿5萬美元支撐位,跌幅近10%,市值占比降至40.64%.
1900/1/1 0:00:001.披薩節十年來6漲4跌 今年將如何?盤點一下十年來披薩節比特幣的價格變化和可以查證的披薩節前后的情況。用來判斷明天的漲幅.
1900/1/1 0:00:00