最近各種通過閃電貸攻擊在區塊鏈中套利的新聞將閃電貸送上了熱門話題,2021年初,YearnFinance受到閃電貸款攻擊,我們查看這個交易,發現一筆交易中,居然有如此多的騷操作,完全刷新了筆者對區塊鏈和智能合約的認識。不禁開始思考,為什么黑客一開始可以從dYdX借款,又將借到的虛擬貨幣抵押到Compound,最后一系列操作完成后還款到dYdX,這期間發生了161次代幣轉移,這怎么的也要一杯茶的時間吧。然而事實上,閃電貸攻擊快得就是這么不講道理。這筆交易的鏈接:https://cn.etherscan.com/tx/0x6dc268706818d1e6503739950abc5ba2211fc6b451e54244da7b1e226b12e027接下來我們開始一步一步的分析,一筆智能合約交易是如何完成在借貸平臺和中心化交易所之間的所有操作。智能合約究竟存儲在哪里
CertiK:UN token上有一個惡意的閃電貸款,請大家保持警惕:金色財經報道,CertiK檢測到UN token上有一個惡意的閃電貸款,由于燃燒機制缺陷,該漏洞有可能被利用,請大家保持警惕。Bsc: 0x1aFA48B74bA7aC0C3C5A2c8B7E24eB71D440846F 。[2023/6/6 21:20:04]
這里用以太坊的go語言客戶端為例,以太坊客戶端在收到創建智能合約的交易以后,會使用Hash算法為智能合約生成一個合約地址,在這個合約地址下存儲智能合約的代碼與合約中的數據。智能合約會被存儲在客戶端的數據庫中與這個地址對應,這個數據庫叫做StateDB。StateDB記錄了區塊鏈上所有的地址余額、Nonce、狀態等信息。以太坊客戶端可以通過合約地址,將合約的代碼加載到內存中進行執行。最終這些數據會被持久化到LevelDB中,存儲在以太坊客戶端的磁盤上。通過StateDB實現的這些接口,客戶端通過GetCode這個方法,可以獲取到智能合約地址下對應的代碼。
CertiK:pandorachainDAO項目遭受閃電貸攻擊:金色財經報道,據CertiK安全團隊監測,北京時間2022年6月22日19:52:57,pandorachainDAO項目遭受閃電貸攻擊,導致了價值約12.8萬美元的資產損失。[2022/6/23 1:25:12]
客戶端完成區塊同步后,從以太坊創世塊開始創建的所有賬戶地址信息與智能合約地址信息都會同步到這個StateDB中,因此一個合格的以太坊礦工客戶端可以直接在本地加載所有的合約代碼,是不需要跨網絡和客戶端進行調用的。智能合約如何執行
Grim Finance 被黑簡析:攻擊者通過閃電貸借出 WFTM 與 BTC 代幣:據慢霧區情報,2021 年 12 月 19 日,Fantom 鏈上 Grim Finance 項目遭受攻擊。慢霧安全團隊進行分析后以簡訊的形式分享給大家。
1. 攻擊者通過閃電貸借出 WFTM 與 BTC 代幣,并在 SpiritSwap 中添加流動性獲得 SPIRIT-LP 流動性憑證。
2. 隨后攻擊者通過 Grim Finance 的 GrimBoostVault 合約中的 depositFor 函數進行流動性抵押操作,而 depositFor 允許用戶指定轉入的 token 并通過 safeTransferFrom 將用戶指定的代幣轉入 GrimBoostVault 中,depositFor 會根據用戶轉賬前后本合約與策略池預期接收代幣(預期接收 want 代幣,本次攻擊中應為 SPIRIT-LP)的差值為用戶鑄造抵押憑證。
3. 但由于 depositFor 函數并未檢查用戶指定轉入的 token 的合法性,攻擊者在調用 depositFor 函數時傳入了由攻擊者惡意創建的代幣合約地址。當 GrimBoostVault 通過 safeTransferFrom 函數調用惡意合約的 transferFrom 函數時,惡意合約再次重入調用了 depositFor 函數。攻擊者進行了多次重入并在最后一次轉入真正的 SPIRIT-LP 流動性憑證進行抵押,此操作確保了在重入前后 GrimBoostVault 預期接收代幣的差值存在。隨后 depositFor 函數根據此差值計算并為攻擊者鑄造對應的抵押憑證。
4. 由于攻擊者對 GrimBoostVault 合約重入了多次,因此 GrimBoostVault 合約為攻擊者鑄造了遠多于預期的抵押憑證。攻擊者使用此憑證在 GrimBoostVault 合約中取出了遠多于之前抵押的 SPIRIT-LP 流動性憑證。隨后攻擊者使用此 SPIRIT-LP 流動性憑證移除流動性獲得 WFTM 與 BTC 代幣并歸還閃電貸完成獲利。
此次攻擊是由于 GrimBoostVault 合約的 depositFor 函數未對用戶傳入的 token 的合法性進行檢查且無防重入鎖,導致惡意用戶可以傳入惡意代幣地址對 depositFor 進行重入獲得遠多于預期的抵押憑證。慢霧安全團隊建議:對于用戶傳入的參數應檢查其是否符合預期,對于函數中的外部調用應控制好外部調用帶來的重入攻擊等風險。[2021/12/19 7:49:04]
智能合約代碼是通過以太坊客戶端內部的一個叫作EVM的虛擬機進行執行的,以太坊的虛擬機定義了各種的操作指令,每一個指令對應了一個處理函數,以及這個指令需要消耗的礦工費。
Belt Finance 已修補閃電貸相關攻擊向量,將在 48 小時內恢復存取款并發布補償計劃:針對上周遭到的閃電貸攻擊,幣安智能鏈上DeFi協議BeltFinance發布分析報告稱:此次攻擊,Belt共損失6,234,753BUSD,BeltBUSDVault用戶遭受了21.36%池子比例的損失,而4BeltPool用戶遭受了5.51%池子比例的損失。[2021/5/31 22:58:30]
以太坊智能合約是按照實際指令執行的消耗來計算gas的,不同復雜度的指令消耗的gas也有差別,越復雜的智能合約指令,消耗的gas越多。查看這筆交易,我們發現礦工費高達3**.**37117716ETH,消耗了8644044gas,占據一個區塊容量的74.3%。夢想著可以靠閃電貸空手套白狼的朋友們,還是先算一算礦工費要緊。智能合約中是如何調用另一個智能合約的
在智能合約中,我們調用另一個合約的代碼,最終會被編譯成一個叫作CALL的EVM虛擬機指令,它的基礎gas費用是40gas,實際產生的礦工費根據另一個合約執行的指令來計費。
查看opCall這個方法的實現,發現,調用另一個智能合約與當前智能合約同樣都是通過EVM虛擬機的Call方法完成的。
因此,我們可以發現,其實智能合約的執行,以及智能合約之間的調用,都是在礦工的客戶端執行的,并沒有進行跨客戶端與網絡調用,交易失敗也是在礦工的客戶端進行回滾,因此閃電貸攻擊才可以如此快的在一筆交易中完成所有的操作。智能合約某一步執行失敗會怎么樣
StateDB提供了兩個方法,分別是Snapshot與RevertToSnapshot,一個用于對StateDB進行快照,另一個用于恢復快照。在執行交易前,StateDB會調用Snapshot方法進行快照,如果交易執行到某一步發現錯誤,則會調用RevertToSnapshot進行回滾。因此閃電貸攻擊可以實現如果在任何一步出現錯誤,就當從來沒有從借貸平臺借過一樣,所有狀態回滾到交易執行之前,當然交易失敗時消耗的礦工費還是得出。
總結
閃電貸之所以能夠在一筆交易中完成各種虛擬資產的交易,實際上都是通過調用去中心化交易所和各種去中心化借貸平臺的智能合約來完成的,這些調用只需要在礦工客戶端本地即可完成。這筆交易會在收到交易廣播的所有具備打包資格的以太坊客戶端中執行,誰先執行完成,并打包到下一個區塊中,誰就能贏得這筆礦工費。
編者按:本文來自鏈新,作者:馮銘近幾個月來,NFT以其非同質化、不可拆分的特性,在藝術收藏品領域大放異彩,有關NFT數字藝術品賣出高價的新聞不絕于耳.
1900/1/1 0:00:00區塊鏈技術最廣為人知的應用非比特幣和以太幣等加密貨幣莫屬。用戶可以在比特幣和以太坊網絡中繞過中間商直接轉移價值.
1900/1/1 0:00:00歐易OKEx情報局行業周報帶你快速回顧行業動態,厘清產業動向。目錄:行情概覽大機構與公司動態加密貨幣市場Polkadot/DeFi/NFT動態行業聲音行情概覽根據CoinGecko數據,截至20.
1900/1/1 0:00:00區塊鏈版「滴滴+Uber」,MobiFi讓出行帶來收益。城市出行問題諸多,區塊鏈在城市出行中可以起到哪些作用?簡化停車和乘車體驗,MobiFi更詳細的項目定位與宗旨是什么?迎合為消費者提供簡化的.
1900/1/1 0:00:00作者|秦曉峰編輯|郝方舟出品|Odaily星球日報 一、整體概述 根據Trustnodes數據,以太坊創始人V神的凈資產估值已升至約7億美元.
1900/1/1 0:00:00北京時間3月30日,鏈游《NBATopShot》開發團隊DapperLabs宣布完成3.05億美元融資,投后估值升至26億美元.
1900/1/1 0:00:00