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