Solidity内置函数
Solidity内置函数
1. 块函数: 可以获取块信息
block.timestamp (uint)
当前块的实际戳,单位秒。
block.number (uint)
当前块高度。
block.difficulty (uint)
矿工会用到的出块难度。
block.gaslimit (uint)
计算块需要消耗的gas限制,是转账gas和智能合约的执行gas之和
block.coinbase (address payable)
矿工地址:块产生的gas费 转账地址。 也是写入块数据的地址
gasleft() returns (uint256)
每个块都有执行成本,但是不一定能够完全消耗完。 矿工一般会按照最接近的gas费用来打包出块。gaslefe就是剩下的部分。
2. Message 函数 在合约内获取用户签名后的信息。
msg.data (bytes calldata)
用户发生的转账之外的内容,可以是文字备注之类的,但是如果接受信息的是智能合约那合约会对data进行解析,并执行date中指定的函数。
msg.sender (address payable)
发送信息的发送者
msg.sig (bytes4)
calldata 前四个字节的内容,在合约内验证调用的那个函数。
msg.value (uint)
用户转账的ETH额度,单位是wei(18位的整数)。 调用合约时一般都为0,如果想给合约转账可以在这定义转账的ETH数量,如果合约内部没有转账ETH的对应操纵函数,这个费用会卡在合约地址中无法转出。
3. Tx 函数
tx.gasprice (uint):
交易中发送者愿意支付的价格,发送者决定。 gas*gasprice 决定矿工打包交易的收入。如果太低,只有块比较空的时候矿工才愿意打包这笔交易。所有对发送者来说需要等待的时间就会比较长。n*10秒。
tx.origin (address payable):
这笔交易的发送者。 在开发中避免使用,合约调用有Delegate call的方式可能不会与你的预期不一致。
4. 其他
now (uint)
当前时间时间戳的别名,特别注意在老版本EVM中是系统时间,在最新规范中不推荐使用。
blockhash(uint blockNumber)
把块高反算成块哈希。 这个计算量比较大,有限制。不推荐使用。
assembly
在EVM 虚拟机中直接执行 open code 的关键字。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Daily Study!