蚂蚁区块链合约平台为合约开发者提供一些新的特性接口支持,包括对区块数据获取、交易数据获取、加密方法的支持。
区块数据接口函数
block.blockhash(uint blockNumber) returns (bytes32):传入
blockNumber
,返回块的哈希值。block.gaslimit (uint):系统中的 gas 最大值。
block.number (uint):最新已经形成的区块高度,注意不是当前正在形成的区块高度。
block.timestamp (uint):最新已经形成的区块时间戳,注意不是当前正在形成的区块时间戳。
now (uint):
block.timestamp
的别名。
交易数据接口函数
以下方法介绍中,括号内是返回的结果数据类型,并不是传入参数。
msg.data (bytes):用户的输入数据。
msg.gas (uint):用户交易中的 gas 值。
msg.sender (identity):用户交易中的发送方。
msg.sig (bytes4):用户交易输入数据的前四字节。
msg.value (uint):用户交易中的 gas 值。
蚂蚁区块链合约平台还支持查询交易哈希,示例如下:
tx.txhash (identity / uint256)
可通过该方法获取当前交易的哈希值,0.4.24版本中类型为 identity,0.6.4及以上版本中类型为 uint256。
加密接口函数
sha256
函数原型
sha256(bytes data) returns(bytes32 result) ;
请求参数
参数 | 必选 | 类型 | 说明 |
data | 是 | bytes | 要加密的数据 |
返回值
参数 | 必选 | 类型 | 说明 |
result | 是 | bytes | sha256 加密结果 |
说明:蚂蚁区块链合约平台对 sha256
加密函数进行了修改,采用 OpenSSL 加密库进行实现。
ecrecover
函数原型
ecrecover(bytes32 hash, uint8 v, bytes32 r,bytes s) returns(identity id) ;
请求参数
参数 | 必选 | 类型 | 说明 |
hash | 是 | bytes32 | 签名数据的哈希结果 |
r | 是 | bytes32 | 签名前 32 字节 |
s | 是 | bytes32 | 签名后 32 字节 |
v | 是 | uint8 | 签名最后一字节 |
返回值
参数 | 必选 | 类型 | 说明 |
id | 是 | identity | 账户 ID |
说明:蚂蚁区块链合约平台对 ecrecover 加密函数进行了修改,通过签名数据的哈希结果和签名获得公钥后,采用 sha256 加密函数对公钥进行加密,并将加密的结果作为 ID 返回给用户。
ripemd160
在蚂蚁区块链合约平台中,不提供 ripemd160
加密函数库。