Solidity - специальные переменные
Специальные переменные - это глобально доступные переменные, которые предоставляют информацию о блокчейне. Ниже приведен список специальных переменных -
Sr.No. | Специальная переменная и описание |
---|---|
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) Остающийся газ. |
8 | msg.data (bytes calldata) Полная версия calldata. |
9 | msg.sender (address payable) Отправитель сообщения (текущий звонок). |
10 | msg.sig (bytes4) Первые четыре байта calldata (т.е. идентификатор функции) |
11 | msg.value (uint) Количество вэй, отправленных с сообщением. |
12 | now (uint) Отметка времени текущего блока (псевдоним для block.timestamp). |
13 | tx.gasprice (uint) Цена сделки на газ. |
14 | 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, затем просмотрите журналы, которые покажут декодированный вывод как -
Вывод
{
"0": "uint256: 10"
}