Solidity的全局命名空间中存在一些特殊的变量和函数。
1.单位换算
以太币的单位,以太币有四种单位,分别是wei,szabo,finney和ether,换算关系如下:
-
1 == 1 wei:wei为最小的单位。 -
1 szabo == 1e12 wei:1012wei。 -
1 finney == 1e15 wei:1015wei。 -
1 ether == 1e18 wei:1018wei,即1个以太币。
时间单位,有5个时间单位,分别为seconds, minutes, hours, days和weeks,换算关系如下:
-
1 == 1 seconds,1秒。 -
1 minutes == 60 seconds,1分钟。 -
1 hours == 60 minutes,1小时。 -
1 days == 24 hours,1天。 -
1 weeks == 7 days,1周。
0.5.0版本之前还有year的单位,先版本移除,因为闰年的存在,即每一年不一定是固定的365天。
2.特殊变量
区块和交易的全局变量和函数
函数:
-
blockhash(uint blockNumber) returns (bytes32): 返回给定区块的哈希,仅适用于最近的256个,并且不包括当前块。 -
gasleft() returns (uint256): 剩余的gas,为uint类型。
变量:
- 1.区块
-
block.coinbase (address payable): 当前区块的矿工的地址,为应付地址类型。 -
block.difficulty (uint): 当前区块难度值,为uint类型。 -
block.gaslimit (uint): 当前区块限定的最大的gas值,为uint类型。 -
block.number (uint): 当前区块高度,为uint类型。 -
block.timestamp (uint): 当前区块的时间戳,为uint类型,从unix 时间戳开始算起。unix 时间戳为1970/01/01 00:00:00。 -
now (uint): 当前区块时间戳。(同block.timestamp。)
- 2.消息
-
msg.data (bytes calldata): 完整的调用数据,为bytes类型,命名为calldata。 -
msg.sender (address payable): 消息的发送方,为应付地址类型。 -
msg.sig (bytes4): 调用数据的前4个字节,为bytes4类型,这4个字节为函数的签名。 -
msg.value (uint): 伴随消息发送的以太币的数量,为wei单位,为uint类型。
- 3.交易
-
tx.gasprice (uint): 交易的gas的价格,为uint类型。 -
tx.origin (address payable): 交易的发送方,为应付地址类型。
3.总结
- 单位换算和特殊变量中涉及到的变量都为全局变量,主要用于提供有关区块链的信息或是通用的程序函数,方便在编写智能合约中使用。