全部产品

合约数据类型

基本数据类型

蚂蚁区块链合约平台基本支持 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 类型属于输入参数的类型,在合约内部和输入参数都支持。

  1. function Issue(identity account, int256 value)

但是,对于用户积分和账户 ID 对应的声明类型 mapping,在合约内部使用时是可以的,但是无法作为函数的传入类型,如下所示:

  1. function example(mapping(identity=>int256) map) // 错误,不支持 mapping 作为输入参数类型

其他类型

除了上述数据类型外,Solidity 还支持其他类型,比如:

  • 映射、字典(mapping)
  • 结构体(struct)
  • 时间单位(seconds,minutes,hours,days,weeks,years)

更多信息,可查看 Solidity 官网关于类型的文档(英文)