Solidity - 特殊变量
特殊变量是全局可用的变量,提供有关区块链的信息。 以下是特殊变量列表 −
序号 | 特殊变量和描述 |
---|---|
1 | blockhash(uint blockNumber) returns (bytes32) 给定区块的哈希值 - 仅适用于 256 个最新区块(不包括当前区块)。 |
2 | block.coinbase (address payable) 当前区块矿工地址。 |
3 | block.difficulty (uint) 当前区块难度。 |
4 | block.gaslimit (uint) 当前区块的 GasLimit。 |
5 | block.number (uint) 当前区块号。 |
6 | block.timestamp 当前区块时间戳,以 UNIX 纪元以来的秒数表示。 |
7 | gasleft() returns (uint256) Remaining gas. |
8 | msg.data (bytes calldata) 完整的呼叫数据。 |
9 | msg.sender (address payable) 消息的发送者(当前通话)。 |
10 | msg.sig (bytes4) 调用数据的前四个字节(即函数标识符) |
11 | msg.value (uint) 与消息一起发送的 wei 数量。 |
12 | now (uint) 当前区块时间戳(block.timestamp 的别名)。 |
13 | tx.gasprice (uint) 交易的 Gas 价格。 |
14 | tx.origin (address payable) 交易的发送者(完整调用链)。 |
示例
尝试以下代码来查看 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 应用 章节中提供的步骤运行上述程序。
首先单击updateBalance按钮将值设置为10,然后查看日志,其中将显示解码输出为 −
输出
{ "0": "uint256: 10" }