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.总结
- 单位换算和特殊变量中涉及到的变量都为全局变量,主要用于提供有关区块链的信息或是通用的程序函数,方便在编写智能合约中使用。