以太坊交易所 以太坊交易所
Ctrl+D 以太坊交易所
ads

深入理解 EVM 存儲機制及安全問題_STOR:torn幣暴跌崩盤了

Author:

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

前言

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

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

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

EVM存儲結構

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

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

央行上海總部:深入推進金融科技創新監管試點:5月12日,央行上海總部發布通知稱,下一步將加強對金融科技應用創新試點工程的組織領導,并會同上海市地方金融監管局等單位,深入推進金融科技創新監管試點,提升金融科技支撐能力。中國人民銀行于2020年4月26日支持在上海等6市(區)擴大金融科技創新監管試點,這標志著金融科技創新監管工作正式在上海啟動,也為加快推進上海金融科技中心建設再添助力。

近年來,人民銀行上海總部把大力發展金融科技作為推動上海國際金融中心和科技創新中心聯動發展的重要著力點,積極探索設計上海金融科技中心的建設與發展路徑,發布了《關于促進金融科技發展 支持上海建設金融科技中心的指導意見》(銀總部發〔2019〕67號)。

央行上海總部明確,下一步將以《發展規劃》為指引,加強對金融科技應用創新試點工程的組織領導,并會同上海市地方金融監管局等單位,深入推進金融科技創新監管試點,加大試點項目橫向交流和成果共享,深化金融市場科技應用,提升金融科技支撐能力,為把上海建設成為與國際金融中心地位相適應的金融科技中心提供有力支撐。(中新經緯APP)[2020/5/12]

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

動態 | 國家信息中心黨委書記與中國移動副總裁就區塊鏈服務網絡研究與合作進行深入交流:9月25日上午,國家信息中心黨委書記、主任程曉波會見中國移動通信集團副總裁李慧鏑一行,雙方就區塊鏈服務網絡研究與合作進行了深入交流。(新浪財經)[2019/9/27]

各個存儲位置的含義

Code

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

Storage

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

聲音 | 中國科學院院士:區塊鏈等已經深入到市民生活的方方面面:9月10日至11日,2019世界計算機大會在湖南長沙舉行,中國科學院院士張平文說,計算機包括5G、云計算、大數據、人工智能、區塊鏈等,已經深入到市民生活的方方面面。(中國新聞網)[2019/9/12]

Stack

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

Args

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

趙鷂:政府部門是否應該大膽的鼓勵推廣區塊鏈需要深入思考:今日,中國政法大學金融創新與互聯網金融法治研究中心副秘書長、中國社科院金融研究所支付清算研究中心特約研究員趙鷂發表文章稱,區塊鏈技術本身的價值中立性并不會帶來基于區塊鏈的經濟社會活動的價值中立,當我們還沒有準備好如何應對區塊鏈大規模應用所產生的新的、深層次的社會、經濟、金融風險時,政府部門是否應該大膽的鼓勵、推廣,這是需要深入思考的。就好比核能發電,我們沒有完全掌握安全、可控的核聚變技術就能用于生產發電嗎?顯然是不可能的。所以,面對區塊鏈、人工智能等各種破壞性創新技術的推廣應用,特別是金融科技的發展,政府、學界、業界和媒體要頭腦冷靜,切莫用“不可控核聚變發電”。[2018/2/27]

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:區塊鏈ADDTORSTOR區塊鏈的未來發展前景分析BITCOIN ADDITIONALtorn幣暴跌崩盤了XStorage

幣安交易所app下載
CoinW賺幣節,短期高息,坐享收益!_COIN:ETH

親愛的用戶: CoinW將于2021年9月30日16點開啟短期賺幣活動,本次賺幣活動通過FansUp活動頁面參與,FansUp參與成功即為賺幣參與成功,參與成功時同步開始短期鎖倉賺幣.

1900/1/1 0:00:00
Gate.io 已發近期投票上幣第179期-第186期空投福利活動獎勵公告_Gate.io:GATENet

Gate.io投票上幣第179期-第186期空投福利活動已圓滿結束,根據活動規則,我們已為符合規則的用戶發放了活動獎勵。用戶可進入“錢包—賬單明細”查詢獎勵發放情況.

1900/1/1 0:00:00
當區塊鏈與參數保險的碰撞會擦出怎樣的火花?_OIN:區塊鏈MOVEZ幣

原文標題|《區塊鏈應用:參數保險》 原文作者|AnhLe 編譯出品|白澤研究院 參數保險的市場規模潛力巨大,因為疫情的快速傳播幾乎傷害了世界上所有國家.

1900/1/1 0:00:00
XT 關于暫停1000000HVI交易及充提的公告_HTT:COM

尊敬的XT用戶: XT.COM現已暫停1000000HVI交易以及充提業務。暫停期間給您帶來的不便,敬請諒解.

1900/1/1 0:00:00
一文了解閃電網絡和雷電網絡的區別_以太坊:以太坊幣最新價格行情新浪

閃電網絡和雷電網絡看起來非常相近,它們有著基本相同的技術基因和奮斗目標,但又演繹著各自的生命軌跡,為不同的老板服務,閃電網絡是當之無愧的哥哥,老板是比特幣,而雷電網絡的主子是以太坊.

1900/1/1 0:00:00
幣安現貨交易系統升級完成(2021-09-29)_WIT:TTE

親愛的用戶:幣安已完成本次現貨交易系統升級,將于2021年09月29日17:00恢復交易。提現將在交易恢復后4小時內開放,感謝您的理解和支持.

1900/1/1 0:00:00
ads