Bitcoin: cos’è l’Hash function?
Bitcoin: cos’è l’Hash function?
Bitcoin

Bitcoin: cos’è l’Hash function?

By Marco Cavicchioli - 7 Mag 2020

Chevron down

Nel protocollo Bitcoin si fa ampio uso della cosiddetta hash function per aggiungere nuovi blocchi alla blockchain grazie al mining. 

Genericamente, dal punto di vista tecnico, una hash function è un algoritmo che, partendo da dati di lunghezza arbitraria, produce un hash di lunghezza fissa. Questo hash è un codice esadecimale che rappresenta il pacchetto di dati originario utilizzato per generarlo ed in genere è di lunghezza molto più contenuta. 

Il principale utilizzo di questa funzione è proprio quello di creare un codice sintetico, relativamente corto, che rappresenti un pacchetto di dati molto più grande. Visto che questo processo, se fatto in questo modo, prevede inevitabilmente una certa perdita di dati, di fatto risulta irreversibile: dall’hash non è possibile risalire al pacchetto di dati utilizzato per generarlo. 

L’algoritmo utilizzato da Bitcoin per la hash function è SHA-256, che produce un hash da 256 bit e richiede una quantità prevedibile di lavoro da parte dell’elaboratore. 

Per aggiungere un nuovo blocco alla blockchain di Bitcoin si utilizza come input della hash function un pacchetto di dati formato da transazioni in coda nella mempool in attesa di essere confermate. 

Il compito del miner però non è solamente quello di produrre l’hash di questo input, ma di produrre un hash che inizi con un certo numero di zeri aggiuntivi, e che corrisponda al pacchetto di dati di input. 

Infatti, sebbene dall’hash non sia possibile risalire ai dati che lo hanno generato, è tuttavia sempre possibile ripetere l’operazione per verificare che sia stata effettuata correttamente. In questo modo, visto che tutti i dati delle transazioni inserite nel blocco sono pubblici, chiunque può verificare utilizzando SHA-256 che l’hash prodotto dal miner sia corretto. Solo se è corretto infatti il blocco verrà effettivamente aggiunto alla blockchain, ed il miner riceverà il premio. 

Hash function e difficulty del mining

Il numero di zeri aggiuntivi viene variato ogni circa due settimane e corrisponde alla cosiddetta difficulty: più zeri sono necessari, più sarà difficile trovare l’hash, più tempo occorrerà per farlo. 

Per trovare l’hash con gli zeri aggiuntivi il miner non può fare altro che procedere per tentativi, ed è per questo che la potenza di calcolo ha un ruolo fondamentale nel processo di mining. 

Visto infatti che ogni blocco può essere minato da un unico miner, e dato che il premio viene elargito solo al miner che riesce a trovare l’hash che conferma il blocco, questo genera di fatto una competizione in cui è più favorito chi possiede maggiore potenza di calcolo. 

Inoltre, anche la più piccola modifica ai dati di input produce un hash completamente differente, quindi l’unico modo per procedere è quello di elaborare nel minor tempo possibile un numero più elevato possibile di hash, eseguendo la funzione hash moltissime volte al secondo. 

Ad esempio, un hashrate di 130 Ehash/s significa che le macchine che stanno cercando di minare i blocchi di Bitcoin in tutto il mondo eseguono complessivamente 130 Exa hash function al secondo, ovvero 130 milioni di milioni di milioni (o 130 miliardi di miliardi). 

Il protocollo Bitcoin utilizza la hash function anche per generare l’hash di una transazione, ovvero l’identificatore univoco utilizzato per identificare ogni singola transazione. 

 

Marco Cavicchioli
Marco Cavicchioli

Classe 1975, Marco è un docente di web-technologies e divulgatore online specializzato in criptovalute. Ha fondato ilBitcoin.news, ed il suo canale YouTube ha più di 25mila iscritti.

Utilizziamo i cookie per essere sicuri che tu possa avere la migliore esperienza sul nostro sito. Se continui ad utilizzare questo sito noi assumiamo che tu ne sia felice.