De nonce is een centraal onderdeel van het proof of work (PoW) mining-algoritme voor blockchains en cryptocurrencies zoals Bitcoin. Mijnwerkers strijden met elkaar om vind een nonce die een hash produceert met een waarde die lager is dan of gelijk is aan die ingesteld door de netwerkmoeilijkheid. Als een miner zo’n nonce vindt, wordt een gouden nonce, dan winnen ze het recht om dat blok aan de blockchain toe te voegen en de blokbeloning te ontvangen.

De nonce is een willekeurig, eenmalig geheel getal. Mijnwerkers testen en gooien elke seconde miljoenen nonces weg. Ze hopen een hashwaarde te produceren die aan het doel voldoet en zo de blokbeloning te winnen. Dit is wat er gebeurt tijdens PoW-mijnbouw op het meest basale niveau, hoewel er nog veel meer aan de hand is. Hier gaan we het hele doel van de nonce tijdens het mijnbouwproces onderzoeken.

Bouwstenen met nonces

De nonce is een 32-bits getal. Het blijft in de blokheader staan, samen met andere belangrijke gegevens, zoals het moeilijkheidsdoel en het tijdstempel. Wanneer mijnwerkers blokken bouwen, kiezen ze willekeurig een nonce en voeren deze in de blokheader in, waardoor een nieuwe blockheader-hash wordt gemaakt.

De hash is een 256-bits getal en moet beginnen met een groot aantal nullen, d.w.z. een ongelooflijk kleine waarde hebben. Als het niet het voldoende aantal nullen heeft, verwijdert de miner de hash en probeert een nieuwe nonce. Dit proces wordt herhaald totdat een miner een nonce ontdekt die een hash produceert met een waarde kleiner dan of gelijk aan die ingesteld door de moeilijkheidsgraad.

Blokstructuur

De 32-bits grootte van de nonce betekent dat er vier miljard mogelijke combinaties zijn. Hoewel het technisch gezien veel hoger is vanwege iets dat de extra nonce. Dit is extra ruimte voor een langere nonce, wat betekent dat je tientallen miljarden combinaties kunt hebben.

De nonce is de enige parameter die de mijnwerker verandert, alle andere blijven statisch. Als de miner de gouden nonce vindt, voegen ze dat blok toe aan de blockchain en ontvangen ze de blokbeloning. Momenteel is er geen manier om het proces van het vinden van de juiste nonce te versnellen. Dit betekent dat mijnwerkers gewoon met vallen en opstaan ​​werken totdat ze een gouden nonce vinden. Dit proces is wat de werk, als bewijs van werk.

Relatie met mijnbouwmoeilijkheden

Zoals we al zeiden, probeert de miner een nonce te vinden die een hash produceert onder de waarde die is ingesteld door de netwerkmoeilijkheid. Het Bitcoin-protocol stelt deze moeilijkheidsgraad in. Naarmate de moeilijkheidsgraad toeneemt, neemt de doelwaarde voor de hash af. Dit betekent dat er meer nullen aan het begin van het hash-nummer moeten staan. De kans op het vinden van een lagere hash-waarde neemt af en dus moeten miners meer nonces testen. Wanneer een miner een blok hashes, moet de hash een waarde hebben die gelijk is aan of kleiner is dan het doelnummer om succesvol te zijn.

Bij het minen van Bitcoin wordt de moeilijkheidsgraad elke 2016 blokken aangepast. Dit komt neer op elke twee weken. Andere PoW-blockchains hebben echter snellere aanpassingen. Litecoin bijvoorbeeld, vanwege zijn kortere bloktijd, past zijn moeilijkheidsgraad zich elke drie en een halve dag aan. Digibyte, daarentegen, past de moeilijkheidsgraad in elk blok in realtime aan.

Waarom de aanpassing ertoe doet

Als de moeilijkheid niet zou worden aangepast, zou er een lineaire relatie zijn tussen de hashing-kracht en de blokbeloningen. Naarmate meer mijnwerkers zich bij het netwerk aansluiten en de hashingkracht toeneemt, zou er een overeenkomstige toename van de Bitcoin-beloningen zijn. Dit zou de inflatiecontroles op het Bitcoin-protocol en daarmee de gezonde geldeigenschappen ondermijnen.

Gelukkig kunnen de blokbeloningen door een moeilijkheidsgraad elke twee weken relatief stabiel worden gehouden. De moeilijkheidsgraad kan echter ook lager worden aangepast. Als de winstgevendheid van de mijnbouw verdwijnt, zullen mijnwerkers hun activiteiten staken en daalt de hash-snelheid. De moeilijkheidsgraad zal dan op de juiste manier worden aangepast. We zien dit nu al enkele maanden op het Bitcoin-netwerk sinds de moeilijkheid piekte op 4 oktober.

Op Bitcoin zal de Bitcoin-client na elke 2016-blokken de realtime voor elk te genereren blok vergelijken met de doeltijd. Het zal dan de moeilijkheidsgraad op de juiste manier aanpassen. Het doel is om miners zo dicht mogelijk bij exact tien minuten blokken te laten produceren.

Bescherming door beveiligde hash-algoritmen

De veerkracht van het SHA-256-algoritme verhindert dat miners het proces van vallen en opstaan ​​kunnen versnellen en bedriegen. SHA-256 behoort tot de SHA-2-familie van veilige hash-algoritmen en werd in 2001 vrijgegeven door de NSA. Als dit algoritme zou worden verbroken, zoals is gebeurd met de SHA-1-klasse van cryptografische hash-algoritmen, dan zou het PoW-proces worden ondermijnd.

Er zijn verschillende manieren om een ​​hash-algoritme te doorbreken. Hiermee bedoelen we dat we de methode van vallen en opstaan ​​kunnen omzeilen en de juiste nonces veel sneller kunnen vinden. Aanvalsaanvallen zijn de nieuwste en meest efficiënte manier om dit te doen.

Het hele doel van een veilig hash-algoritme is om het unieke karakter van een hash te garanderen. Wanneer gegevens worden gehasht, moeten de invoer een volledig uniek hashnummer creëren. De enige manier waarop hetzelfde nummer kan worden gerepliceerd, is met exact dezelfde invoer, inclusief de nonce. Een aanvalsaanval betekent echter dat dezelfde hash kan worden geproduceerd vanuit verschillende ingangen. Een kwaadwillende actor kan dit doen met voldoende computerbronnen. Dit ondermijnt volledig het doel van het veilige hash-algoritme.

Hash-functie

Nu is aangetoond dat een aanvaringsaanval effectief is tegen SHA-1-algoritmen, kan er niet langer op worden vertrouwd. De aanval werd mede mogelijk gemaakt door de enorme vooruitgang in computervermogen in het afgelopen decennium.

Op een gegeven moment, wanneer de rekenkracht voldoende is toegenomen, zal SHA-256 ook kwetsbaar zijn voor dergelijke aanvallen. Bitcoin-ontwikkelaars moeten dit echter lang voordat het gebeurt, weten. Dit komt omdat van dergelijke aanvallen in theorie bijna altijd wordt aangetoond dat ze mogelijk zijn voordat ze in het echte leven daadwerkelijk hebben bewezen. Het Bitcoin Core-team zou zich dan moeten richten op een nieuwer en moeilijker algoritme.

Het is ook vermeldenswaard dat de meeste authenticatieprotocollen op internet momenteel SHA-2-algoritmen gebruiken. Als ze van de ene op de andere dag kwetsbaar zouden worden, zouden we grote wereldwijde problemen hebben die veel verder gaan dan de mijnbouw van Bitcoin.

Waarde van bewijs van werk

Mijnwerkers gebruiken hun hardware om deze nonces te testen, met een snelheid van miljoenen per seconde. Het feit dat er geen manier is om snel de nonce te vinden, houdt PoW een open en eerlijk systeem.

Het gunstige kenmerk van dit systeem is dat het een enorme hoeveelheid energie, tijd en kapitaal vereist om de juiste waarde op te lossen en de beloning te winnen. Tegelijkertijd is het echter ongelooflijk gemakkelijk voor andere knooppunten om de juiste waarde te verifiëren. Deze tweedeling houdt het netwerk veilig en biedt een eenvoudige manier om consensus te bereiken.

Uiteindelijk is de nonce slechts een klein onderdeel van het Bitcoin-mijnproces. Het speelt echter een cruciale rol bij het handhaven van zijn integriteit. De nonce is het enige dat een miner verandert om een ​​voldoende hashwaarde te vinden. Het is echt het gaspedaal, de rem en de koppeling voor de hele setup.