Solidity - 特殊变量


特殊变量是全局可用的变量,提供有关区块链的信息。以下是特殊变量的列表 -

先生。 特殊变量和描述
1

blockhash(uint blockNumber) 返回 (bytes32)

给定区块的哈希值 - 仅适用于 256 个最新区块(不包括当前区块)。

2

block.coinbase(应付地址)

当前区块矿工的地址。

3

区块难度 (uint)

当前区块难度。

4

区块.gaslimit (uint)

当前区块的gaslimit。

5

块号(uint)

当前区块号。

6

区块时间戳

当前块时间戳,以 UNIX 纪元以来的秒数表示。

7

Gasleft() 返回 (uint256)

剩余气体。

8

msg.data(调用数据字节)

完整的通话数据。

9

msg.sender(应付地址)

消息的发送者(当前呼叫)。

10

msg.sig(字节4)

calldata 的前四个字节(即函数标识符)

11

消息值(uint)

随消息发送的 wei 数量。

12

现在(单位)

当前区块时间戳(block.timestamp 的别名)。

13

tx.gasprice (uint)

交易的 Gas 价格。

14

tx.origin(应付地址)

交易的发送者(完整调用链)。

例子

尝试以下代码来查看 msg 的使用,msg 是 Solidity 中用于获取发送者地址的特殊变量。

pragma solidity ^0.5.0;

contract LedgerBalance {
   mapping(address => uint) public balances;

   function updateBalance(uint newBalance) public {
      balances[msg.sender] = newBalance;
   }
}
contract Updater {
   function updateBalance() public returns (uint) {
      LedgerBalance ledgerBalance = new LedgerBalance();
      ledgerBalance.updateBalance(10);
      return ledgerBalance.balances(address(this));
   }
}

使用Solidity First Application章节中提供的步骤运行上述程序。

首先单击updateBalance按钮将值设置为 10,然后查看日志,其中将显示解码输出为 -

输出

{
   "0": "uint256: 10"
}