Solidität - Spezielle Variablen
Spezielle Variablen sind global verfügbare Variablen und enthalten Informationen zur Blockchain. Es folgt die Liste der speziellen Variablen -
Sr.Nr. | Spezielle Variable & Beschreibung |
---|---|
1 | blockhash(uint blockNumber) returns (bytes32) Hash des angegebenen Blocks - funktioniert nur für 256 neueste, ausgenommen aktuelle Blöcke. |
2 | block.coinbase (address payable) Aktuelle Block Miner-Adresse. |
3 | block.difficulty (uint) aktuelle Blockschwierigkeit. |
4 | block.gaslimit (uint) Aktuelle Blockgasbegrenzung. |
5 | block.number (uint) Aktuelle Blocknummer. |
6 | block.timestamp Aktueller Blockzeitstempel als Sekunden seit der Unix-Epoche. |
7 | gasleft() returns (uint256) Restgas. |
8 | msg.data (bytes calldata) Komplette Anrufdaten. |
9 | msg.sender (address payable) Absender der Nachricht (aktueller Anruf). |
10 | msg.sig (bytes4) Die ersten vier Bytes der Aufrufdaten (dh Funktionskennung) |
11 | msg.value (uint) Anzahl der mit der Nachricht gesendeten Wei. |
12 | now (uint) Aktueller Blockzeitstempel (Alias für block.timestamp). |
13 | tx.gasprice (uint) Gaspreis der Transaktion. |
14 | tx.origin (address payable) Absender der Transaktion (vollständige Anrufkette). |
Beispiel
Versuchen Sie den folgenden Code, um die Verwendung von msg zu sehen, einer speziellen Variablen, um die Absenderadresse in Solidity abzurufen.
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));
}
}
Führen Sie das obige Programm mit den im Kapitel Solidity First Application beschriebenen Schritten aus .
Erster Klick updateBalance Klicken Sie auf die Schaltfläche, um den Wert auf 10 festzulegen, und schauen Sie dann in die Protokolle, in denen die dekodierte Ausgabe als - angezeigt wird.
Ausgabe
{
"0": "uint256: 10"
}