鏈上拆分理財dapp系統開發底層邏輯詳情(智慧合約定製)

nice1022發表於2023-03-10

區塊鏈並不是真正的儲存資料,系統開發I34-案例I633-演示53I9,它只是儲存這些資料的“標識”,而每一個區塊會被計算為一串雜湊雜湊值,然後這一串雜湊又被記錄到下一個區塊中,這樣就一個區塊一個區塊的記錄,每一個最新的區塊總是記錄著這條鏈從創世到當前的所有資料雜湊值。如果想要去改變一些資料,則必須從創世塊開始頭從修改。


資料儲存機制

- storage   

- memory

- calldata


強制

--狀態變數:storage

--function輸入引數:calldata


預設:

--function返回引數:memory

--本地變數:storage


規則

相同儲存空間變數父子

--傳遞reference(evm上的地址空間)

不同儲存空間變數賦值

--複製


資料結構最佳化

Mapping


- 類似與map(C++),dict(python)

- key(bool,int,address,string)

- value(任何型別)

- mapping(address=>Employee) employees

- 只能做成員變數,不能做本地區域性變數


Mapping底層實現


- 不使用陣列+連結串列,不需要擴容

- hash函式keccak256hash,在storage上儲存,理論上無限大的hash表


- 無法naiive的遍歷整個mapping

- 賦值employees[key] = value


- 取值 value = employees[key]

- value是引用,在storage上儲存,可以直接修改


- 當key不存在,value= type's default


可視度及合約繼承

- public  公共的 誰都可見

- private  只有當前合約可見

- external   只有外部呼叫可見

- internal   外部呼叫不可見,內部和子類可見

- 狀態變數:public,internal,private

  - 預設internal

  - public:自動定義取值函式


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70011332/viewspace-2939000/,如需轉載,請註明出處,否則將追究法律責任。

相關文章