Il 1° agosto 2002 Adam Back presentò ufficialmente il paper di Hashcash, precursore del sistema utilizzato nel mining di Bitcoin.
Nel 1997 Adam Back, crittografo e cypherpunk britannico, propose Hashcash, un meccanismo progettato per combattere lo spam delle email e gli attacchi denial-of-service (DoS).
Si trattava di un algoritmo di proof-of-work che richiedeva una certa quantità di lavoro computazionale per inviare un’e-mail, rendendo antieconomico l’invio di spam.
Cinque anni dopo, il 1° agosto 2002, Back descrisse più formalmente il funzionamento di Hashcash nel paper “Hashcash – A Denial of Service Counter-Measure“, che verrà poi citato nel white paper di Bitcoin.
Il funzionamento di Hashcash
L’idea alla base era rendere l’invio di email costoso in termini di potenza di calcolo, scoraggiando così l’invio massivo di messaggi di spam.
Il funzionamento era il seguente:
- Calcolo dell’hash:
il mittente doveva calcolare l’hash del testo dell’email più un numero casuale detto nonce; - Ricerca del nonce corretto:
il processo veniva ripetuto con diversi nonce fino a trovare un hash che iniziava con un determinato numero di zeri. L’unico modo per trovare il nonce corretto era attraverso operazioni di brute force, vale a dire effettuando molti tentativi fino al raggiungimento del risultato desiderato. Modificando il numero di zeri richiesti si cambiava la difficoltà del trovare il nonce corretto per il mittente e dunque anche le risorse computazionali impiegate. - Verifica rapida:
il destinatario poteva verificare facilmente la validità dell’hash contando il numero di zeri iniziali.
Inizialmente l’algoritmo di hashing utilizzato in Hashcash era SHA-1.
Esempio ricerca del nonce corretto:
SHA1(“Here we go!00”) = 2bf6d36bf9b140c2a62c66d79f6bd578dccdc141
SHA1(“Here we go!01”) = cd7810e0446a26b4a4e7c1773989050d9fe798a2
SHA1(“Here we go!02”) = 3fbf1f91e1a212c66f65786040bb25cc91f4598b
SHA1(“Here we go!03”) = 2ad11aff9dd50f5e8641862638db2ff8420b89b8
SHA1(“Here we go!04”) = 173ba0b3dc1adbce286c4ba9ea62199ab659e608
SHA1(“Here we go!05”) = 076174d1a153e87da3248278132b007cf6adb701
In pratica Hashcash rendeva il costo computazionale trascurabile per chi inviava un numero limitato di email dato che richiedeva solo pochi secondi di elaborazione su un normale computer, mentre diventava proibitivo per chi cercava di inviare milioni di email spam.
L’utilizzo nel mining di Bitcoin
Hashcash ha posto le basi per altre tecnologie basate sulla proof-of-work.
Il mining di Bitcoin è sicuramente una delle principali applicazioni di Hashcash. Al contrario delle email, nel mining viene utilizzato l’algoritmo di hashing SHA-256.