[智能合约]:单位换算和特殊变量

Solidity的全局命名空间中存在一些特殊的变量和函数。

1.单位换算

以太币的单位,以太币有四种单位,分别是weiszabofinneyether,换算关系如下:

  • 1 == 1 weiwei为最小的单位。
  • 1 szabo == 1e12 wei:1012wei
  • 1 finney == 1e15 wei:1015wei
  • 1 ether == 1e18 wei:1018wei,即1个以太币。

时间单位,有5个时间单位,分别为seconds, minutes, hours, daysweeks,换算关系如下:

  • 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.总结

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

你可能感兴趣的:([智能合约]:单位换算和特殊变量)