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