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.
