蚂蚁区块链合约平台支持 Solidity 语言来实现合约的编写和编译,本目录的文档主要介绍在蚂蚁区块链合约平台中支持的 Solidity 合约的语法、语义、函数库和一些平台提供的接口功能等,其它具体说明可以 参考 Solidity 官方文档(英文)。
这些文档核心介绍蚂蚁区块链合约平台与原生 Solidity 不一样的特性。
使用智能合约开发功能,应具有合理性与合规性,符合相关监管规则和要求,严禁将合约开发用于发代币等不法行为上。
Solidity合约暂时不支持隐私API,如果需要使用零知识证明,同态加密等密码学API,请使用WASM合约。
蚂蚁链平台 Solidity 合约语言 vs. 以太坊官方 Solidity 合约语言
蚂蚁链平台中,solidity合约使用identity替代官方solidity的address关键字。identity表示的合约地址或账户地址,均为32字节,而官方solidity中address表示的地址是20字节。
蚂蚁链合约不支持 suicide,也不支持 selfdestruct。
蚂蚁链合约不支持在合约内创建合约,因此不要在合约内使用
new
来创建合约。在蚂蚁链平台上,如果尝试在合约内向一个不存在的地址转账,合约会异常终止,并返回错误码 10303;而在以太坊官方 Solidity 合约内向不存在的地址转账时,系统会自动以该地址创建账户。
对于
<identity>.balance (uint256)
语句,如果identity
代表的账户不存在,则在蚂蚁链平台中该语句会造成合约异常终止,并返回错误码 10300;而在以太坊官方 Solidity 合约中,该语句会返回 0,不会造成合约异常终止。在蚂蚁链平台中,合约内的
block.number
、block.timestamp
分别指最新已形成的区块(即本交易所在区块的上一个区块)的高度和时间戳(毫秒);而在官方 Solidity 合约中,这两个参数分别指的是本交易所在区块的高度和时间戳。蚂蚁链平台不提供 ripemd160 这个散列算法。
蚂蚁链平台中,solidity合约内不支持 CHAINID 指令
蚂蚁链平台中,如果solidity合约执行过程中异常终止,终止之前产生的Event Log依然会出现在交易回执中。