全部產品
Search
文件中心

:合約資料類型

更新時間:Oct 19, 2024

基礎資料型別 (Elementary Data Type)

螞蟻區塊鏈合約平台基本支援 Solidity 所有的資料類型,但是對於一些使用者編寫的合約的輸入參數類型並沒有完全的支援,比如參數輸入中二維數組的輸入。同時,螞蟻區塊鏈合約平台提供了 identity 類型來標註每一個使用者的身份,不支援原生 Solidity 中的 address 類型,identity 的長度為 32 位元組。

平台建議使用資料類型樣本如下所示:

資料類型

參考範例

合約內部是否支援

輸入參數是否支援

bool

bool a = true

uint

uint a = 1

uint8 ~ uint256

uint8 a = 1

int

int a = 1

int8 ~ int256

int8 a = 1

bytes

bytes a = “test”

bytes1 ~ bytes32

bytes1 a = “a”

string

string a = “test”

identity

identity id = 0x1234567890123456789012345678901234567890123456789012345678901234567890000

int[]

int256[] a = [1,2,3,4,5]

uint[]

uint256[] a = [1,2,3,4,5]

bytes1[] ~ bytes32[]

bytes4[] asd = new bytes4;

string[]

string[] a = [“adbc”,”dg”]

enum

enum a {a,b,c}

struct

struct a { string name;}

說明
  • 合約內部使用:指在合約內部的使。

  • 輸入參數:指在用戶端調用函數方法時傳入參數的類型。

例如在 前述的積分管理合約 的發放方法中,identity 類型和 int256 類型屬於輸入參數的類型,在合約內部和輸入參數都支援。

function Issue(identity account, int256 value)

但是,對於使用者積分和賬戶 ID 對應的宣告類型 mapping,在合約內部使用時是可以的,但是無法作為函數的傳入類型,如下所示:

function example(mapping(identity=>int256) map)  // 錯誤,不支援 mapping 作為輸入參數類型

其他類型

除了上述資料類型外,Solidity 還支援其他類型,比如:

  • 映射、字典(mapping)

  • 結構體(struct)

  • 時間單位(seconds,minutes,hours,days,weeks,years)

更多資訊,可查看 Solidity 官網關於類型的文檔(英文)