solidity变量和函数

一、区块和交易属性

1、block.blockhash(uint blockNumber) returns (bytes32):指定区块的区块哈希——仅>可用于最新的 256 个区块且不包括当前区块;而 blocks 从 0.4.22 版本开始已经不推荐使>2用,由 blockhash(uint blockNumber) 代替
2、block.coinbase (address): 挖出当前区块的矿工地址
3、block.difficulty (uint): 当前区块难度
4、block.gaslimit (uint): 当前区块 gas 限额
5、block.number (uint): 当前区块号
6、block.timestamp (uint): 自 unix epoch 起始当前区块以秒计的时间戳
7、gasleft() returns (uint256):剩余的 gas
8、msg.data (bytes): 完整的 calldata
9、msg.gas (uint): 剩余 gas - 自 0.4.21 版本开始已经不推荐使用,由 gesleft() 代替
10、msg.sender (address): 消息发送者(当前调用)
11、msg.sig (bytes4): calldata 的前 4 字节(也就是函数标识符)
12、msg.value (uint): 随消息发送的 wei 的数量
13、now (uint): 目前区块时间戳(block.timestamp)
14、tx.gasprice (uint): 交易的 gas 价格
15、tx.origin (address): 交易发起者(完全的调用链)

二、ABI 编码函数

1、abi.encode(…) returns (bytes): ABI - 对给定参数进行编码
2、abi.encodePacked(…) returns (bytes):对给定参数执行 紧打包编码
3、abi.encodeWithSelector(bytes4 selector, …) returns (bytes): ABI - 对给定参数进行编>码,并以给定的函数选择器作为起始的 4 字节数据一起返回
4、abi.encodeWithSignature(string signature, …) returns (bytes):等价abi.encodeWithSelector(bytes4(keccak256(signature), …)

三、错误处理

1、assert(bool condition):如果条件不满足,则使当前交易没有效果 — 用于检查内部错误
2、require(bool condition):如果条件不满足则撤销状态更改 - 用于检查由输入或者外部组件引起的错误
3、require(bool condition, string message):如果条件不满足则撤销状态更改 - 用于检查由输入或者外部组件引起的错误,可以同时提供一个错误消息
4、revert():终止运行并撤销状态更改
5、revert(string reason):终止运行并撤销状态更改,可以同时提供一个解释性的字符串

四、数学和密码学函数

1、addmod(uint x, uint y, uint k) returns (uint):计算 (x + y) % k,加法会在任意精度下执行,并且加法的结果即使超过 2**256 也不会被截取。从 0.5.0 版本的编译器开始会加入对 k != 0 的校验(assert)
2、mulmod(uint x, uint y, uint k) returns (uint):计算 (x * y) % k,乘法会在任意精度下执行,并且乘法的结果即使超过 2**256 也不会被截取。从 0.5.0 版本的编译器开始会加入对 k != 0 的校验(assert)
3、keccak256(…) returns (bytes32):计算 arguments 的 Ethereum-SHA-3 (Keccak-256)哈希
4、sha256(…) returns (bytes32):计算arguments 的 SHA-256 哈希
5、sha3(…) returns (bytes32):等价于 keccak256
6、ripemd160(…) returns (bytes20):计算 arguments 的 RIPEMD-160 哈希
7、ecrecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) returns (address):利用椭圆曲线签名恢复与公钥相关的地址,错误返回零值

五、地址相关

1、<address>.balance (uint256):以 Wei 为单位的 地址类型 的余额
2、<address>.transfer(uint256 amount):向 地址类型 发送数量为 amount 的 Wei,失败时抛出异常,发送 2300 gas 的矿工费,不可调节。
3、<address>.send(uint256 amount) returns (bool):向 地址类型 发送数量为 amount 的 Wei,失败时返回 false,发送 2300 gas 的矿工费用,不可调节
4、<address>.call(…) returns (bool):发出低级函数 CALL,失败时返回 false,发送所有可用 gas,可调节
5、<address>.callcode(…) returns (bool):发出低级函数 CALLCODE,失败时返回 false,发送所有可用 gas,可调节。
6、<address>.delegatecall(…) returns (bool):发出低级函数 DELEGATECALL,失败时返回 false,发送所有可用 gas,可调节。

六、合约相关

1、this (current contract’s type):当前合约,可以明确转换为 地址类型
2、selfdestruct(address recipient):销毁合约,并把余额发送到指定 地址类型。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值