Definitie
Een nonce (Number used Only Once) is een getal dat slechts één keer wordt gebruikt in een cryptografische Communicatie om replay-aanvallen te voorkomen en de actualiteit van berichten te waarborgen.
Bij Bitcoin-mining is de nonce een 32-bits getal dat miners miljarden keren per seconde verhogen in een poging een hash-output te vinden die lager is dan de beoogde moeilijkheidsgraad — dit is de "proof of work"-berekening.
Bij Ethereum-transacties is de nonce een opeenvolgende transactieteller per account: elke nieuwe transactie vanaf een adres moet de volgende nonce gebruiken (beginnend bij 0), waardoor transacties in de juiste volgorde worden verwerkt en replay-aanvallen met dubbele uitgaven worden voorkomen.
Als de nonce van een transactie wordt overgeslagen, zullen alle volgende transacties vanaf dat adres vastlopen totdat de hiaat is opgevuld.
Nonce in twee contexten
Context 1: Bitcoin-mining (Proof of Work)
Doel: Een hash vinden met een moeilijkheidsgraad lager dan de doelwaarde. Proces: Miner probeert verschillende nonces: Nonce = 0: Hash(block_header + 0) = 0xaf2b… (te hoog) Nonce = 1: Hash(block_header + 1) = 0xce4a… (te hoog) Nonce = 2: Hash(block_header + 2) = 0xb91c… (te hoog) … Nonce = 3,847,291,023: Hash = 0x0000000000a3b… (onder de doelwaarde!) → Blok gevonden! Geldig bewijs van werk.
Moderne ASIC-miners verbruiken ongeveer 4 miljard nonces per seconde. Als er geen geldige nonce in het 32-bits bereik wordt gevonden: pas de timestamp of coinbase-transactie aan → start de nonce-zoekopdracht opnieuw.
Context 2: Ethereum-account Nonce (transactieteller)
Alice verstuurt transacties: TX 1: Nonce = 0 (eerste transactie ooit vanaf Alice's adres) TX 2: Nonce = 1 TX 3: Nonce = 2 TX 4: Nonce = 3
probleem: Transactie 3 loopt vast (kosten te laag): Transactie 3 in behandeling → Transactie 4 kan niet worden verwerkt (nonce gap) Oplossing: Transactie 3 opnieuw verzenden met hogere gaskosten → Transactie 3 bevestigd → Transactie 4 bevestigd
Bescherming tegen herhaling: Als transactie 3 op het mainnet is bevestigd → Dezelfde transactie kan niet opnieuw worden uitgevoerd op het testnet (verschillende keten-ID's maken nonce + handtekening uniek voor één keten)
Nonce in cryptosystemen
| Systeem | Nonce Doel | Verkrijgbaarheid: |
| Bitcoin mijnbouw | Varieer de invoer om een geldige PoW-hash te vinden. | 0 tot 2^32 (~4 miljard) |
| Ethereum-account | Sequentiële transactieteller per adres | 0 tot 2^64 – 1 (~18.4 quintiljoen) |
| Cryptografische protocollen | Voorkom replay-aanvallen in handtekeningen. | Willekeurig of sequentieel |
| SSL / TLS | Zorg voor de uniciteit van de sessie. | Willekeurig per sessie |
FAQ
V: Waarom gebruikt Ethereum een sequentiële nonce in plaats van een willekeurige?
Sequentiële nonces (0, 1, 2, 3…) zorgen voor een vaste transactievolgorde: je kunt niet twee keer hetzelfde bedrag uitgeven en transacties worden uitgevoerd in de volgorde waarin ze zijn ingediend. Willekeurige nonces zouden replay-aanvallen minder effectief voorkomen en zouden extra mechanismen vereisen om dubbele transacties te detecteren. Sequentiële nonces maken het ook gemakkelijk om vastgelopen transacties te identificeren: als nonce 5 in behandeling is en nonce 6 wordt ingediend, wacht nonce 6 totdat nonce 5 is bevestigd.
V: Hoe los ik een vastgelopen Ethereum-transactie op?
Als een transactie vastloopt met een nonce in afwachting, moet u het volgende doen: (1) De transactie versnellen — dezelfde nonce opnieuw verzenden met een hogere gasprijs (MetaMask heeft een knop "versnellen"), of (2) De transactie annuleren — 0 ETH naar uzelf verzenden met dezelfde nonce tegen een hogere gasprijs, waarmee de vastgelopen transactie wordt vervangen. Zodra de vastgelopen nonce is opgelost, worden volgende transacties met hogere nonces verwerkt.
V: Wat is een "nonce reuse"-aanval in de cryptografie?
Bij cryptografische handtekeningschema's kan het hergebruiken van een nonce met dezelfde privésleutel de privésleutel wiskundig blootleggen. De PlayStation 3-hack (fail0verflow, 2010) maakte misbruik van Sony's constante nonce in ECDSA-handtekeningen, waardoor de privésleutel uit slechts twee handtekeningen kon worden gehaald. Bitcoin's ECDSA-ondertekening gebruikt deterministische nonces (RFC 6979) om deze kwetsbaarheid juist te voorkomen.
UPay-tip: Als uw MetaMask Als een transactie urenlang in de status "in behandeling" blijft hangen, controleer dan je huidige nonce op Etherscan (je adres → Transacties → zoek de nonce van de transactie in behandeling). Schakel "Geavanceerde gasinstellingen" in de MetaMask-instellingen in en verstuur de transactie opnieuw met dezelfde nonce maar een hogere gasprijs. Dit "vervangt" de oude transactie in de mempool. Stel nooit handmatig een nonce in die hoger is dan je huidige nonce in behandeling, want hiermee creëer je een gat dat alle toekomstige transacties blokkeert totdat het gat is opgevuld.
Disclaimer: Deze inhoud is uitsluitend bedoeld voor educatieve doeleinden en vormt geen financieel advies.
UPay — Crypto encyclopedisch maken










