Solidez - Variáveis ​​Especiais

Variáveis ​​especiais são variáveis ​​globalmente disponíveis e fornecem informações sobre o blockchain. A seguir está a lista de variáveis ​​especiais -

Sr. Não. Variável Especial e Descrição
1

blockhash(uint blockNumber) returns (bytes32)

Hash do bloco fornecido - funciona apenas para os 256 blocos mais recentes, excluindo os atuais.

2

block.coinbase (address payable)

Endereço do mineiro do bloco atual.

3

block.difficulty (uint)

dificuldade do bloco atual.

4

block.gaslimit (uint)

Limite de gás do bloco atual.

5

block.number (uint)

Número do bloco atual.

6

block.timestamp

Carimbo de data / hora do bloco atual em segundos desde a época unix.

7

gasleft() returns (uint256)

Gás restante.

8

msg.data (bytes calldata)

Calldata completa.

9

msg.sender (address payable)

Remetente da mensagem (chamada atual).

10

msg.sig (bytes4)

Os primeiros quatro bytes do calldata (ou seja, identificador de função)

11

msg.value (uint)

Número de wei enviado com a mensagem.

12

now (uint)

Carimbo de data e hora do bloco atual (alias para block.timestamp).

13

tx.gasprice (uint)

Preço do gás da transação.

14

tx.origin (address payable)

Remetente da transação (cadeia de chamadas completa).

Exemplo

Tente o seguinte código para ver o uso de msg, uma variável especial para obter o endereço do remetente no 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));
   }
}

Execute o programa acima usando as etapas fornecidas no capítulo Aplicativo Solidity First .

Primeiro clique updateBalance Botão para definir o valor como 10, em seguida, olhe para os logs que mostrarão a saída decodificada como -

Resultado

{
   "0": "uint256: 10"
}