从逻辑方面划分,可将 API 划分为以下类型:
交易信息提取
接口 | 说明 |
msg.data -> bytes | 获取调用合约的完整数据 |
msg.sender -> address | 获取消息发送者地址 |
tx.origin -> address | 获取交易发送者地址 |
tx.gasprice -> uint | 获取交易的 gas 价格 |
账本交互
接口 | 说明 |
blockhash(uint blockNumber) -> bytes32 | 获取指定区块高度的哈希值 |
block.gaslimit -> uint | 获取当前区块的 gas 限制 |
block.number -> uint | 获取当前区块的高度 |
block.timestamp -> uint | 获取当前区块的时间戳 |
异常处理
接口 | 说明 |
assert(bool condition) | 断言给定条件是否成立,如果不满足条件,则状态更改恢复 |
require(bool condition) | 如果不满足条件,则返回 |
require(bool condition, string memory message) | 如果不满足条件,则返回,并提供错误消息 |
revert() | 中止执行并还原状态更改 |
revert(string memory reason) | 中止执行并还原状态更改,并提供错误消息 |
数学和密码函数类
接口 | 说明 |
addmod(uint x, uint y, uint k) -> uint | 计算 (x+y)%k |
mulmod(uint x, uint y, uint k) -> uint | 计算 (x*y)%k |
keccak256(bytes memory) -> bytes32 | 计算给定输入的 Keccak-256 哈希 |
sha256(bytes memory) -> bytes32 | 计算给定输入的 sha256 哈希 |
ripemd160(bytes memory) -> bytes32 | 计算给定输入的 RIPEMD-160 哈希 |
ecrecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) -> address | 从椭圆曲线签名中恢复与公钥关联的地址 |