Solidez - Variables especiales

Las variables especiales son variables disponibles globalmente y proporcionan información sobre la cadena de bloques. A continuación se muestra la lista de variables especiales:

No Señor. Variable especial y descripción
1

blockhash(uint blockNumber) returns (bytes32)

Hash del bloque dado: solo funciona para los 256 bloques más recientes, excluyendo los actuales.

2

block.coinbase (address payable)

Dirección actual del minero del bloque.

3

block.difficulty (uint)

dificultad del bloque actual.

4

block.gaslimit (uint)

Límite de gas del bloque actual.

5

block.number (uint)

Número de bloque actual.

6

block.timestamp

Marca de tiempo del bloque actual como segundos desde la época de Unix.

7

gasleft() returns (uint256)

Gas restante.

8

msg.data (bytes calldata)

Datos de llamada completos.

9

msg.sender (address payable)

Remitente del mensaje (llamada actual).

10

msg.sig (bytes4)

Primeros cuatro bytes de los datos de llamada (es decir, identificador de función)

11

msg.value (uint)

Número de wei enviados con el mensaje.

12

now (uint)

Marca de tiempo del bloque actual (alias de block.timestamp).

13

tx.gasprice (uint)

Precio del gas de la transacción.

14

tx.origin (address payable)

Remitente de la transacción (cadena de llamadas completa).

Ejemplo

Pruebe el siguiente código para ver el uso de msg, una variable especial para obtener la dirección del remitente en 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));
   }
}

Ejecute el programa anterior siguiendo los pasos proporcionados en el capítulo Primera aplicación de Solidity.

Primer clic updateBalance Botón para establecer el valor como 10 y luego mirar en los registros que mostrarán la salida decodificada como -

Salida

{
   "0": "uint256: 10"
}