从逻辑方面划分,可将 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 | 从椭圆曲线签名中恢复与公钥关联的地址 |