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"
}