以太坊智慧型合約儲存變數的四種資料結構

2021-10-25 05:52:35 字數 418 閱讀 9705

合約中可以被所有函式訪問的全域性變數。storage的儲存是永久儲存,意味著以太坊會把它存到公鏈環境裡的每乙個節點上。

會永久儲存合約狀態變數,燃料消耗最大。

在合約中的記憶體變數,生命週期為合約開始到執行結束,執行結束後被銷毀。

僅儲存臨時變數,函式呼叫之後釋放,消耗燃料很少。

所有函式呼叫的資料,包括函式引數的儲存位置。是不可修改的記憶體位置。

它包含訊息體的資料,其計算需要增加n * 68(n是calldata中的非零位元組數)的gas費用

evm為了匯入變數和以太坊的機器/彙編指令**,維護了乙個棧,這個棧是evm的記憶體工作空間。他有1024級深,也就是如果儲存超過了1024級的資料,就會觸發乙個異常。

棧僅儲存很小的區域性變數,免費使用,數量限制在16個變數。

參考:以太坊solidity智慧型合約開發

以太坊智慧型合約的元資料

合約元資料 solidity編譯器自動生成json檔案,即合約元資料,其中包含有關當前合約的資訊。您可以使用此檔案查詢編譯器版本,使用的源,abi和natspec文件,以更安全地與合約互動並驗證其源 編譯器將元資料檔案的swarm雜湊附加到每個合約的位元組碼末尾 詳見下文 以便您可以以經過身份驗證的...

小知識 docker 四種資料儲存方式

預設方式,容器本身管理自己的資料,容器檔案系統實際是一系列唯讀的檔案層和最上層的容器可寫檔案層組成,最上層的容器可寫檔案層保留容器執行過程中產生的所有資料修改,這些層的管理是利用容器的storage drivers實現 預設是overlay2,可以通過docker的dameon.json配置檔案修改...

iOS 資料儲存的四種方式

nskeyedarchiver 採用歸檔的形式來儲存資料,該資料物件需要 遵守nscoding協議,並且該物件對應的類必須提供encodewithcoder 和initwithcoder 方法。前乙個方法告訴系統怎麼對 物件進行編碼,而後乙個方法則是告訴系統怎麼對物件進行解碼。例如對possessi...