合约数据类型

更新时间: 2024-10-18 11:18:35

基本数据类型

蚂蚁区块链合约平台基本支持 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 官网关于类型的文档(英文)

上一篇: Solidity合约初识 下一篇: Solidity合约编译工具
阿里云首页 区块链服务 相关技术圈