Solidity 特殊/全局变量
特殊变量/全局变量,是全局可用的变量,提供关于区块链的信息。下面列出了常用的特殊变量:
名称 |
返回 |
blockhash(uint blockNumber) returns (bytes32) |
给定区块的哈希值 – 只适用于256最近区块, 不包含当前区块。 |
block.coinbase (address payable) |
当前区块矿工的地址 |
block.difficulty (uint) |
当前区块的难度 |
block.gaslimit (uint) |
当前区块的gaslimit |
block.number (uint) |
当前区块的number |
block.timestamp (uint) |
当前区块的时间戳,为unix纪元以来的秒 |
gasleft() returns (uint256) |
剩余 gas |
msg.data (bytes calldata) |
完成 calldata |
msg.sender (address payable) |
消息发送者 (当前 caller) |
msg.sig (bytes4) |
calldata的前四个字节 (function identifier) |
msg.value (uint) |
当前消息的wei值 |
now (uint) |
当前块的时间戳 |
tx.gasprice (uint) |
交易的gas价格 |
tx.origin (address payable) |
交易的发送方 |
示例
示例展示如何使用特殊变量
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 – 第一个程序中的步骤,运行上述程序。
首先单击
updateBalance按钮将值设置为10,然后查看日志输出。
输出