以太坊價格 以太坊價格
Ctrl+D 以太坊價格
ads
首頁 > XRP > Info

TOR:深入理解 EVM 存儲機制及安全問題

Author:

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

前言

EVM是一個輕量級的虛擬機,其設計初衷就是提供一種可以忽略硬件、操作系統等兼容性的虛擬的執行環境供以太坊網絡運行智能合約。

簡單來說EVM是一個完全獨立的沙盒,在EVM中運行的代碼是無法訪問網絡、文件系統和其他進程的,以此來避免錯誤的代碼能讓智能合約毀滅或者影響外部環境。

在此基礎上,知道創宇區塊鏈安全實驗室帶大家一起深入理解EVM的存儲機制和安全問題。

EVM存儲結構

可以看到EVM存儲數據分為兩類:

存儲在code和storage里的數據是non-volatile(不容易丟失的)

SBF:尚未對競標Celsius的可能性進行深入研究:10月12日消息,在 DC 金融科技周上,SBF 表示,我們可能會或可能不會最終參與 Celsius 的破產事件,但我認為我們已經做出了目前會采取的大部分舉措,Celsius 仍處于排他期,該公司可能會提出自己的重組計劃,一旦失效將面臨拍賣。此前有消息稱,SBF 對參與 Celsius 競拍感興趣。(The Block)[2022/10/12 10:32:01]

存儲在stack,args,memory里數據是volatile(容易丟失的)

各個存儲位置的含義

Code

昆明兩會:將深入推動云南省區塊鏈中心建設:2月2日上午,昆明市第十四屆人民代表大會第六次會議在昆開幕,昆明市委副書記、代市長劉佳晨作政府工作報告。

他表示,昆明將深入推進云南省數字經濟開發區、云南省區塊鏈中心建設,力爭引進數字經濟創新企業100家,打造3—5個區塊鏈示范項目,新認定1—2家數字經濟園區。

加大5G基礎設施建設,新增5G基站1萬個,實現主城區5G信號全覆蓋,加快與VR/AR、醫療、旅游、智慧辦會、刷臉就行等場景結合,拓展5G典型應用。[2021/2/2 18:41:39]

code部署合約時儲存data字段也就是合約內容的空間,即專門存儲智能合約的二進制源碼的空間

動態 | 區塊鏈等技術已經在平安銀行多項業務中深入運用:據人民網消息,據統計,平安集團每年都拿出營收的1%來投入科研,基于這樣的科技優勢,目前,互聯網、大數據、區塊鏈、人工智能、物聯網等前沿技術,在平安銀行的現金管理、互聯網支付結算、電子政務、貿易融資等產品和業務中都已有深入運用。此外,區塊鏈的應用降低了銀行的管理和運營成本和提高了風險控制能力。以平安銀行的供應鏈應收賬款服務平臺“SAS”為例,該平臺通過區塊鏈技術確認交易的真實性,從而給核心企業上游的中小企業發放貸款。[2018/11/6]

Storage

Storage是一個可以讀寫修改的持久存儲的空間,也是每個合約持久化存儲數據的地方。Storage是一個巨大的map,一共2^256個插槽(slot),每個插糟有32byte,合約中的“狀態變量”會根據其具體類型分別保存到這些插槽中。

動態 | 金融時報:未來區塊鏈等技術與銀行業的融合一定會越來越深入:據金融時報今日刊文指出,銀行業“變革的思維”,還體現在科技與傳統銀行的結合上。未來,云計算、大數據、區塊鏈與銀行業的融合一定會越來越深入。數據和信息會成為未來銀行的生命線。擁有數據和信息,就能精準勾畫出消費者所需要的場景,從而提高銀行服務和產品的覆蓋范圍與個性化程度,進而滿足金融消費者的獲得感、幸福感和安全感。并且,數字技術與普惠金融、小微金融、消費金融相結合,可以產生事半功倍的效果,因為小微企業與消費者是最需要數字技術所帶來的金融服務便利性的客戶群體。[2018/9/8]

Stack

stack即所謂的“運行棧",用來保存EVM指令的輸入和輸出數據。可以免費使用,沒有gas消耗,用來保存函數的局部變量,數量被限制在16個。stack的最大深度為1024,其中每個單元是32byte。

Args

args也叫calldata,是一段只讀的可尋址的保存函數調用參數的空間,與棧不同的地方的是,如果要使用calldata里面的數據,必須手動指定偏移量和讀取的字節數。

Memory

Memory一個簡單的字節數組,主要是在運行期間存儲數據,將參數傳遞給內部函數。基于32byte進行尋址和擴展。

EVM數據存儲概述

前面已經說過Storage是每個合約持久化存儲數據的地方其儲存數據的方式是通過插槽來實現的,現在就具體介紹它是怎么實現的:

狀態變量

1.對于大小在32字節以內的變量(常量),以其定義的順序作為它的索引值來存儲。即第一個變量的索引為key(0),第二個變量的索引為key(1)...

2.對于連續較小的值,可能被優化存儲在同一個位置,比如:合約中前四個狀態變量都是uint64類型的,則四個狀態變量的值會被打包成一個32字節的值存儲在0位置。

未優化:

pragmasolidity^0

??functionm()?externalreturns(uint256,uint256){????Infostorageinfo;????info

??functiontest(bytes32_name,address?_mappedAddress)public{????Personperson;????person.name=_name;????person.mappedAddress=_mappedAddress;????require(unlocked);?}}

漏洞合約分析:

可以看到該合約在函數部分創建新的結構體時沒有進行初始化,由此我們可以利用該函數進行對owner的修改。不過使用該函數我們還要通過require驗證,不過這也不難因為狀態變量unlocked也同樣在我們可控的范圍內。

具體操作:

調用test函數分別傳入向_name傳入:0x0000000000000000000000000000000000000000000000000000000000000001(真值)

_mappedAddress傳入:0xfB89eCb0188cb83c220aADDa1468C1635208e821(個人地址)

傳參前:

傳參后:

可以看到已經成功更改了地址。

總結

可以看到EVM的存儲器就是一個key=>value的健值數據庫,存儲的數據可以通過校驗和來確保一致。但是其也是和智能合約語言進行交互的,當其中一些規則發生沖突很可能就被別有用心的人用來作惡,所以規范的使用智能合約語言是避開漏洞的必要條件。

Tags:區塊鏈STOTORTORA區塊鏈怎么入手onston幣詳情AviatorVectorAI

XRP
PEG:NFT 貸款協議 JPEG’d 即將推出,首先將允許 Cryptopunks 持有者抵押鑄造合成穩定幣 PUSd

鏈聞消息,NFT貸款協議JPEG’d即將推出,該協議將首先為Cryptopunks持有者提供貸款服務.

1900/1/1 0:00:00
BAL:BKEX Global 關于下架HBC/USDT交易對的公告

尊敬的用戶:? 本著保護用戶的宗旨,BKEXGlobal為保證交易幣種的高標準,將定期對平臺內的代幣進行綜合性審查;如項目方出現對投資者不利因素,我們將采取對應措施,并下架對應項目.

1900/1/1 0:00:00
USDT:每日行情解讀 | 美SEC主席對比特幣ETF表態積極,BTC短線走強

昨日,Coinbase在推特轉發其在InstitutionalInvestor發布的公關稿:“Coinbase報告:預計加密基金將增長以及美國SEC將很快批準ETF”.

1900/1/1 0:00:00
OXE:ZT創新板即將上線SPHYNX

親愛的ZT用戶: ZT創新板即將上線SPHYNX,并開啟SPHYNX/USDT交易對。具體上線時間如下:充值:已開啟;交易:2021年9月29日16:30?; SPHYNX ZT創新板即將上線B.

1900/1/1 0:00:00
DYDX:深度分析:去中心化衍生品爆發,解析用戶體驗、未來發展與不足

吳說作者|吳卓鋮 本期編輯|ColinWu上圖就是典型的訂單簿,CEX均采用訂單簿機制來決定資產公允價格.

1900/1/1 0:00:00
ADE:美 CFTC 指控 14 家公司未注冊或謊稱注冊期貨傭金商便提供交易服務

鏈聞消息,美國商品期貨交易委員會指控14家交易公司,稱其要么未注冊期貨傭金商,要么謊稱已注冊。其中12家未注冊FCM的公司包括Tradingforexpay、Cryptofxtrader、Bit.

1900/1/1 0:00:00
ads