特殊变量及函数(Special Variables and Functions)
优质
小牛编辑
131浏览
2023-12-01
有一些变量和函数存在于¥全局上下文中。主要用来提供一些区块链当前的信息。
区块和交易的属性(Block And Transaction Properties)
block.blockhash(uint blockNumber) returns (bytes32)
,给定区块号的哈希值,只支持最近256个区块,且不包含当前区块。block.coinbase (address)
当前块矿工的地址。block.difficulty (uint)
当前块的难度。block.gaslimit (uint)
当前块的gaslimit
。block.number (uint)
当前区块的块号。block.timestamp (uint)
当前块的时间戳。msg.data (bytes)
完整的调用数据(calldata)。msg.gas (uint)
当前还剩的gas
。msg.sender (address)
当前调用发起人的地址。msg.sig (bytes4)
调用数据的前四个字节(函数标识符)。msg.value (uint)
这个消息所附带的货币量,单位为wei
。now (uint)
当前块的时间戳,等同于block.timestamp
tx.gasprice (uint)
交易的gas
价格。tx.origin (address)
交易的发送者(完整的调用链)
msg
的所有成员值,如msg.sender
,msg.value
的值可以因为每一次外部函数调用,或库函数调用发生变化(因为msg
就是和调用相关的全局变量)。
如果你想在库函数中,用msg.sender
实现访问控制,你需要将msg.sender
做为参数(就是说不能使用默认的msg.value
,因为它可能被更改)。
为了可扩展性的原因,你只能查最近256个块,所有其它的将返回0.