Variables spéciales
10 min
Niveau 5
Les variables spéciales sont des variables disponibles dans le monde entier et fournissent des informations sur la blockchain. Voici la liste des variables spéciales
blockhash(uint blockNumber) returns (bytes32): Hash du bloc donné - ne fonctionne que pour les 256 blocs les plus récents, à l'exclusion des blocs actuels.block.coinbase (address payable): Adresse du mineur du bloc actuel.block.difficulty (uint): la difficulté du bloc actuel.block.gaslimit (uint): Limite de gaz du bloc actuel.block.number (uint): Numéro du bloc actuel.block.timestamp: Horodatage du bloc actuel en secondes depuis l'époque unix.gasleft() returns (uint256): Gaz restant.msg.data (bytes calldata): Données d'appel complètes.msg.sender (address payable): Expéditeur du message (appel en cours).msg.sig (bytes4): Les quatre premiers octets des données d'appel (c'est-à-dire l'identifiant de la fonction).msg.value (uint): Nombre de wei envoyés avec le message.now (uint): Horodatage du bloc actuel (alias pour block.timestamp).tx.gasprice (uint): Prix du gaz de la transaction.tx.origin (address payable): Expéditeur de la transaction (chaîne d'appel complète).
Exemple
Essayez le code suivant pour voir l'utilisation de msg, une variable spéciale pour obtenir l'adresse de l'expéditeur dans 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));
}
}
Cliquez d'abord sur le bouton updateBalance pour fixer la valeur à 10, puis regardez les journaux qui montreront la sortie décodée :
{
"0": "uint256: 10"
}
Besoin d'aide ?
Rejoignez notre communauté officielle et ne restez plus seul à bloquer sur un problème !