Przejdź do treści
Słownikpodstawyethereumgasbezpieczenstwo

Transakcja

Podpisana kryptograficznie instrukcja wysyłana do sieci blockchain, która aktualizuje jej stan — przenosi tokeny, wywołuje smart kontrakt albo wdraża nowy protokół.

Co zawiera transakcja

Transakcja na Ethereum zawiera m.in.: adres odbiorcy, wartość ETH do wysłania, dane wywołania kontraktu (opcjonalne), limit gazu, ustawienia opłat oraz podpis kryptograficzny potwierdzający autoryzację przez nadawcę.

Podpis ECDSA (wartości v, r, s) jest tworzony z klucza prywatnego nadawcy. Walidatorzy mogą z podpisu odtworzyć klucz publiczny i zweryfikować, że transakcja pochodzi od właściciela konta — bez znajomości samego klucza.

Każda transakcja ma numer nonce — licznik transakcji konta. Sieć wymusza ścisłą kolejność: transakcja z nonce 5 nie może być włączona przed transakcją z nonce 4.

Model opłat EIP-1559

Base fee
Opłata protokołu, automatycznie dostosowywana do wypełnienia bloków. Jest spalana — nie trafia do walidatorów.
Priority fee (tip)
Napiwek dla walidatora. Zachęca do uwzględnienia transakcji w bloku.
Max fee
Maksymalna kwota, którą użytkownik zgadza się zapłacić za jednostkę gazu. Chroni przed skokami opłat.
Gas limit
Maksymalna liczba jednostek gazu, którą transakcja może zużyć. Nieużyty gaz jest zwracany.

Potwierdzenie i finality

Transakcja jest potwierdzona, gdy trafi do bloku zaakceptowanego przez sieć. Jedno potwierdzenie oznacza, że transakcja jest w aktualnej historii łańcucha, ale nie zawsze jest już nieodwracalna.

Na Ethereum finality (nieodwracalność) następuje po finalizacji epoki — ok. 12-13 minut od włączenia bloku. Po finalizacji transakcja nie może być cofnięta bez ataku na sieć.

Nawet nieudana transakcja zużywa gaz do momentu, w którym obliczenia się zatrzymały. Revert nie zwalnia z opłaty za wykonaną pracę.

Najczęstsze błędne założenia

  • Transakcja nie jest tylko przelewem tokenów. Wywołanie kontraktu to też transakcja — i może być złożona.
  • Podpisanie wiadomości w portfelu to nie to samo co wysłanie transakcji. Niektóre podpisy są jednak równoważne autoryzacji pełnego transferu (np. permit, eth_sign).
  • Nieudana transakcja nie jest bezpłatna. Gaz zużyty do momentu błędu jest pobierany.
  • Wysłanie transakcji nie gwarantuje jej rychłego potwierdzenia. Przy niskich opłatach może czekać w mempool lub wypaść.

Każda transakcja jest nieodwracalna

Po potwierdzeniu transakcji blockchain nie ma mechanizmu anulowania. Sprawdź adres odbiorcy, kwotę i dane kontraktu zanim zatwierdzisz w portfelu.

Najczęstsze pytania

Nie. Najpierw trafia do mempool — poczekalni transakcji. Walidator wybiera transakcje z mempool do następnego bloku. Przy niskich opłatach może czekać długo.

Sieć wykonała obliczenia do momentu błędu. Ten wysiłek obliczeniowy kosztuje gaz, niezależnie od wyniku.

Transakcja trafia do sieci i zmienia jej stan. Podpis (np. do logowania) jest lokalny — nie tworzy transakcji onchain, o ile portfel nie wskazuje inaczej. Uważaj na podpisy permit i eth_sign — mogą autoryzować transfer bez standardowej transakcji.

Źródła i dalsza lektura