Solidité - Variables spéciales

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 -

N ° Sr. Variable spéciale et description
1

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.

2

block.coinbase (address payable)

Adresse actuelle du mineur de bloc.

3

block.difficulty (uint)

difficulté actuelle du bloc.

4

block.gaslimit (uint)

Limite de gaz de blocage actuelle.

5

block.number (uint)

Numéro de bloc actuel.

6

block.timestamp

Horodatage du bloc actuel en secondes depuis l'époque Unix.

sept

gasleft() returns (uint256)

Gaz restant.

8

msg.data (bytes calldata)

Données d'appel complètes.

9

msg.sender (address payable)

Expéditeur du message (appel en cours).

dix

msg.sig (bytes4)

Quatre premiers octets des données d'appel (c.-à-d. Identificateur de fonction)

11

msg.value (uint)

Nombre de wei envoyés avec le message.

12

now (uint)

Horodatage du bloc actuel (alias pour block.timestamp).

13

tx.gasprice (uint)

Prix ​​du gaz de la transaction.

14

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));
   }
}

Exécutez le programme ci-dessus en suivant les étapes fournies dans le chapitre Application Solidity First .

Premier clic updateBalance Bouton pour définir la valeur sur 10, puis regardez dans les journaux qui afficheront la sortie décodée comme -

Production

{
   "0": "uint256: 10"
}