Nonce

Tempo di lettura: 2 minuti

Un nonce si riferisce a un numero o valore che può essere usato solo una volta.

I nonce sono spesso utilizzati nei protocolli di autenticazione e nelle funzioni hash crittografiche. Nel contesto della tecnologia blockchain, un nonce si riferisce ad un numero pseudo-casuale che viene utilizzato come contatore durante il processo di estrazione.

Per esempio, i minatori di Bitcoin devono cercare di indovinare un nonce valido mentre eseguono tentativi multipli per calcolare un hash di blocco che soddisfi certi requisiti (cioè, che inizi con un certo numero di zeri). Quando si compete per estrarre un nuovo blocco, il primo minatore che trova un nonce che risulta in un hash di blocco valido ha il diritto di aggiungere il blocco successivo nella blockchain – e viene premiato per farlo.

In altre parole, il processo di mining consiste nell’esecuzione da parte dei minatori di una miriade di funzioni di hash con molti valori diversi di nonce fino a quando non viene prodotto un output valido. Se l’output di hashing di un minatore scende sotto la soglia predeterminata, il blocco è considerato valido e viene aggiunto alla blockchain. Se l’output non è valido, il minatore continua a provare con diversi valori di nonce. Quando un nuovo blocco viene estratto e convalidato con successo, il processo ricomincia.

In Bitcoin – e nella maggior parte dei sistemi Proof of Work – il nonce è solo un numero casuale che i minatori usano per iterare l’output dei loro calcoli di hash. I minatori impiegano un approccio per tentativi ed errori, in cui ogni calcolo prende un nuovo valore di nonce. Lo fanno perché la probabilità di indovinare con precisione un nonce valido è vicina allo zero.

Il numero medio di tentativi di hashing è regolato automaticamente dal protocollo per assicurare che ogni nuovo blocco sia generato – in media – ogni 10 minuti. Questo processo è noto come regolazione della difficoltà ed è ciò che determina la soglia di estrazione (cioè, quanti zeri deve avere l’hash del blocco per essere considerato valido). La difficoltà di estrazione di un nuovo blocco è legata alla quantità di potenza di hashing (tasso di hash o hashrate) impegnata in un sistema blockchain. Più potenza di hashing è dedicata alla rete, più alta sarà la soglia, il che significa che sarà necessaria più potenza di calcolo per essere un minatore competitivo e di successo. Al contrario, se i minatori decidono di smettere di estrarre, la difficoltà sarà regolata e la soglia scenderà, quindi sarà richiesta meno potenza di calcolo per estrarre, ma il protocollo farà in modo che la generazione del blocco segua un programma di 10 minuti, indipendentemente.