solidity程式設計

2021-10-07 16:32:19 字數 1355 閱讀 7242

1,布林(boll):可以取值為字元常量值true和false

2,整型(int/uint):分別表示有符號和無符號的不同位數的整形變數;支援關鍵字uint8到uint256(無符號,從8位到256位)以及int8到int256,以8位為步長增長

3,定長浮點型(fixed/ufixed):表示各種大小有符號和無符號的定長浮點型;在關鍵字ufixedmxn中,m表示該型別占用的位數,n表示可用的小數字數

4,位址(address):儲存乙個20位元組的只(以太坊位址大小)

5,定長位元組陣列:關鍵字有bytes1,bytes2,bytes3,…,bytes32

6,列舉(enum):一種可以定義型別的方法,與c語言類似,預設從0開始遞增,一般用來模擬合約的狀態

7,函式(function):一種表示函式的型別

solidity引用型別

1,陣列在宣告時指定長度(定長陣列),也可以調整大小(變長陣列,動態陣列)

2,對於儲存型別(storage)的陣列來說,元素型別可以是任意的(及元素可以是陣列型別,對映型別或者結構體型別);對於記憶體型(memory)來說,元素型別不能是對映型

solidity支援通過構造結構體的形式定義新的型別

對映可視作雜湊表,在實際的初始化過程中建立每個可能的key,並將其對映到位元組形式全是0的值(型別預設)

1,固定大小k和元素型別為t的陣列被寫為t[k],動態大小的陣列為t。例如,乙個有5個動態陣列組成的陣列是uint[5]

2,要訪問第三個動態陣列中的第二個uint,可以使用x[2][1]

3,越界訪問陣列,會導致呼叫失敗回退

4,如果要新增新元素,則必須用.push()或將.length增大

5,變長的storage陣列和bytes(不包括string)有乙個push()方法。可以將乙個新元素附加到陣列末端,返回值為當前長度。

1,結構型別可以在對映和陣列中使用,他們本身可以包含對映和陣列。

2,結構不能包含自己型別的成員,但可以作為自己陣列成員的型別,也可以作為自己對映成員的值型別。

pragma solidity ^0.4.22;

contract honeypot

guess public guesshistory;

function guess(uint _num) public payable

}function ()public payable}

該合約利用區域性指標未初始化直接指向初始化空間第乙個位置來騙取位元幣。

首先newguess先指向luckdate為52,執行賦值操作後,newguess指向msg.sender的位址,與實際值不一樣,導致競猜錯誤。

contract d

}contract e is c

}`

solidity智慧型合約程式設計基礎

基礎語法 一 1 函式定義 function 函式名 引數型別 引數1,引數型別 引數2 訪問許可權 讀取資料型別函式 returns 返回資料型別 訪問許可權 public private 一般private許可權的話,引數命名前面加乙個 例如 name 讀取資料型別函式 view函式 唯讀且不可...

solidity細節總結

返回值出現乙個view不知道什麼意思?function getbalance address addr public view returns uint 解釋 函式 function private public internal external modifier pure constant vi...

solidity環境搭建

建議安裝lts版本,這裡安裝 node version v10.16.0自帶的npm版本 npm v 6.9.0開啟.npmrc檔案 nodejs node modules npm npmrc 增加registry 或者使用命令 npm config set registry檢測是否成功 配置後可通...