SHA-256
La funzione hash crittografica al cuore del mining e della creazione di blocchi di Bitcoin. SHA-256 converte qualsiasi input in un'impronta digitale unica di 256 bit ed è computazionalmente irreversibile, costituendo il fondamento della proof of work di Bitcoin.
SHA-256, abbreviazione di Secure Hash Algorithm 256-bit, è una funzione hash crittografica che prende qualsiasi input e produce un output di lunghezza fissa di 256 bit, tipicamente rappresentato come una stringa esadecimale di 64 caratteri. La funzione è unidirezionale: dato un input, calcolare il suo hash è veloce e deterministico, ma invertire il processo — trovare l'input originale dal solo hash — è computazionalmente impraticabile con la tecnologia attuale. Anche un cambiamento di un singolo carattere nell'input produce un output completamente diverso, una proprietà nota come effetto valanga.
Bitcoin usa SHA-256 in due modi critici. Nel mining, i nodi competono per trovare un valore di input (il nonce) che, combinato con i dati del blocco, produca un hash inferiore a una soglia obiettivo — un processo che richiede un enorme sforzo computazionale ma può essere verificato istantaneamente da chiunque. Questo è il meccanismo centrale della proof of work. SHA-256 viene anche usato per concatenare i blocchi: ogni blocco contiene l'hash del blocco precedente, rendendo immediatamente rilevabile qualsiasi alterazione retroattiva della cronologia.
SHA-256 è stato sviluppato dalla National Security Agency degli Stati Uniti e pubblicato nel 2001. Ad oggi non sono noti attacchi pratici contro SHA-256. La preoccupazione teorica derivante dal quantum computing, in particolare l'algoritmo di Grover, non si applica a SHA-256 nello stesso modo in cui si applica alla crittografia asimmetrica. La community Bitcoin monitora attivamente la ricerca crittografica per valutare se le assunzioni di sicurezza della funzione rimangono valide nel tempo.