Hur använder miners nonce-värdet?
En miner bygger ett blockhuvud, ställer in nonce-värdet på 0 och beräknar dess hash. Om hashen är större än målvärdet ställer minern in nonce-värdet på 1 och försöker igen, sedan 2 och så vidare. Namnet är en förkortning av ”number used once”.
Inget nonce-värde är bättre än något annat. Det går inte att förutsäga hashen, så varje försök har samma minimala chans att lyckas. Det är det som gör mining rättvist: fler försök per sekund ger fler chanser, och inget annat hjälper.
Vad händer när nonce-värdena tar slut?
Fyra byte rymmer bara 4 294 967 296 värden. En modern maskin går igenom alla på långt under en tusendels sekund. Därför ändrar miners något annat i blocket och börjar om med nonce-värdena.
Minerns loop
- 01
Prova varje nonce
0, 1, 2 och så vidare upp till 4 294 967 295. Det är alla värden som 4 byte kan rymma.
- 02
Ta snabbt slut
En enda maskin på 100 TH/s hinner igenom alla på ungefär 43 miljondels sekund.
- 03
Ändra extra nonce
Minern redigerar ett ledigt fält i sin egen belöningstransaktion (coinbase).
- 04
Ny Merkle-rot
Transaktionen ändrades, så merkle-roten ändras och varje nonce ger nya hashvärden igen.
Vanligtvis använder man extra nonce, ett reservfält i coinbase-transaktionen. När det ändras ändras också Merkle-roten, vilket ger en helt ny uppsättning blockhuvuden att prova. Miners kan också justera tidsstämpeln och, på många maskiner i dag, ändra några bitar i versionsfältet.
Källor
- Nonce · Bitcoin Wiki
- Hashningsalgoritm för block · Bitcoin Wiki
- Referens om blockkedjan: blockhuvuden, Merkle-träd, mål · Bitcoin utvecklardokumentation
Livedata på den här sidan kommer från CloudMineCrypto API och offentliga blockkedjedata. Den uppdateras regelbundet och märks ut där den visas. Endast i utbildningssyfte, inte finansiell rådgivning.