Przejdź do treści
Słownikethereumpodstawygas

Nonce

Licznik transakcji powiązany z kontem Ethereum. Każda wysłana transakcja inkrementuje nonce o 1. Zapobiega powielaniu transakcji i wymusza ich kolejność w sieci.

Jak działa nonce konta

Nowe konto Ethereum zaczyna od nonce = 0. Po każdej udanej transakcji nonce rośnie o 1. Sieć odrzuca transakcje z nonce niższym niż aktualny numer konta oraz nie może włączyć transakcji z wyższym nonce, dopóki nie ma poprzednich.

Dwie transakcje z tym samym nonce wykluczają się wzajemnie — tylko jedna może trafić do bloku. Na tym polega mechanizm anulowania lub przyspieszenia transakcji: wysyłasz nową transakcję z tym samym nonce i wyższą opłatą.

Nonce działa też jako ochrona przed powtórkami (replay attack): podpisana transakcja z nonce 7 jest ważna tylko raz — gdy konto dotrze do 7. Powtórne wysłanie tego samego pakietu zostanie odrzucone.

Zablokowana kolejka transakcji

Jeśli wyślesz transakcje z nonce 5, 6, 7, a transakcja z nonce 5 utknęła (zbyt niska opłata), transakcje 6 i 7 nie zostaną włączone dopóki 5 nie trafi do bloku.

Rozwiązanie: wyślij tę samą transakcję z nonce 5 jeszcze raz, ale z wyższą opłatą. Albo wyślij pusty transfer do siebie z nonce 5 i wysoką opłatą — żeby przepchnąć kolejkę.

Nonce w różnych kontekstach

Konto Ethereum (EOA)
Licznik transakcji. Inkrementowany przy każdej wysłanej transakcji.
Bitcoin (mining)
Pole w nagłówku bloku iterowane przez minerów szukających poprawnego hasha PoW.
Permit/podpis
Losowa wartość dodawana do podpisów off-chain, by zapobiec wielokrotnemu użyciu tego samego podpisu.

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

  • Nonce nie jest losowy — to ścisły licznik rosnący sekwencyjnie.
  • Jeden zablokowany nonce blokuje całą kolejkę transakcji z tego konta.
  • Uruchamianie dwóch instancji portfela jednocześnie może wysłać transakcje z tym samym nonce — tylko jedna przejdzie.

Najczęstsze pytania

W eksploratorach (Etherscan: pole 'Nonce' przy szczegółach transakcji) albo przez wywołanie RPC eth_getTransactionCount. Portfele zazwyczaj śledzą nonce automatycznie.

Wyślij nową transakcję z tym samym nonce i wyższą opłatą. Portfele jak MetaMask mają opcję 'Cancel' lub 'Speed Up', która robi to automatycznie.