Solidność - zmienne specjalne
Zmienne specjalne są zmiennymi dostępnymi globalnie i dostarczają informacji o łańcuchu bloków. Poniżej znajduje się lista zmiennych specjalnych -
Sr.No. | Zmienna specjalna i opis |
---|---|
1 | blockhash(uint blockNumber) returns (bytes32) Hash danego bloku - działa tylko dla 256 ostatnich, wyłączając bieżące, bloków. |
2 | block.coinbase (address payable) Aktualny adres górnika. |
3 | block.difficulty (uint) aktualna trudność bloku. |
4 | block.gaslimit (uint) Obecny limit gazu blokowego. |
5 | block.number (uint) Aktualny numer bloku. |
6 | block.timestamp Bieżący znacznik czasu bloku w sekundach od epoki unixowej. |
7 | gasleft() returns (uint256) Pozostały gaz. |
8 | msg.data (bytes calldata) Pełne dane połączeń. |
9 | msg.sender (address payable) Nadawca wiadomości (bieżące połączenie). |
10 | msg.sig (bytes4) Pierwsze cztery bajty calldata (tj. Identyfikator funkcji) |
11 | msg.value (uint) Liczba wei wysłanych z wiadomością. |
12 | now (uint) Aktualny znacznik czasu bloku (alias dla block.timestamp). |
13 | tx.gasprice (uint) Cena gazu w transakcji. |
14 | tx.origin (address payable) Nadawca transakcji (pełny łańcuch połączeń). |
Przykład
Wypróbuj poniższy kod, aby zobaczyć użycie msg, specjalnej zmiennej do pobrania adresu nadawcy w 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));
}
}
Uruchom powyższy program, wykonując kroki opisane w rozdziale Solidity First Application .
Pierwsze kliknięcie updateBalance Przycisk ustawiania wartości na 10, a następnie zajrzyj do dzienników, które pokażą zdekodowane dane wyjściowe jako -
Wynik
{
"0": "uint256: 10"
}