Glossario / Mining e consenso
SHA-256
Noto anche come SHA256.
- Che cos'è SHA-256?
- SHA-256 accetta un input di qualsiasi lunghezza e restituisce un'impronta di 32 byte identica ogni volta, imprevedibile in anticipo e impossibile da invertire.
Bitcoin si appoggia a questa singola funzione quasi ovunque: hash dei blocchi, ID delle transazioni, alberi di Merkle, checksum degli indirizzi e il checksum della tua frase di recupero. L'output è di 256 bit, stampato come 64 caratteri esadecimali, tratto da uno spazio di circa 1,2 per 10 elevato alla 77ª potenza di valori. È l'aritmetica che intercetta un indirizzo digitato male prima che i tuoi bitcoin vadano da qualche parte.
Come funziona
SHA-256 divide il suo input in blocchi di 512 bit e mescola ciascuno attraverso 64 cicli di scorrimenti, rotazioni e addizioni.
Lo stato che viene mescolato è composto da otto parole di 32 bit, inizializzate con costanti prese dalle parti frazionarie delle radici quadrate dei primi otto numeri primi, mentre le 64 costanti di ciclo provengono dalle radici cubiche dei primi 64 numeri primi. Quelle origini sono il punto: sono numeri che nessuno avrebbe potuto scegliere per un motivo nascosto, ed è così che il progetto sostiene di non avere backdoor. L'algoritmo è stato prodotto dalla National Security Agency degli Stati Uniti e pubblicato dal NIST nel 2001, e la specifica attuale è FIPS 180-4.
Tre proprietà sono ciò che il bitcoin acquista davvero. La funzione è deterministica, quindi qualsiasi macchina, ovunque, ricava lo stesso digest dagli stessi byte. Ha effetto valanga, quindi cambiare un solo bit dell'input modifica circa metà dei bit dell'output, senza alcun schema che colleghi i due. E resiste all'esecuzione al contrario: nessuno ha trovato un modo per recuperare un input da un digest, né per produrre due input che ne condividano uno, più velocemente della forza bruta. SHA-1 è caduto per una collisione pratica a febbraio 2017, che è costata ai ricercatori una quantità enorme di calcolo e non si è trasferita affatto a SHA-2.
Bitcoin la richiama raramente una volta sola. Le intestazioni dei blocchi, gli ID delle transazioni, i nodi dell'albero di Merkle e il checksum di un messaggio peer-to-peer usano tutti un doppio passaggio, calcolando l'hash del digest una seconda volta. Gli hash degli indirizzi prendono un'altra strada, RIPEMD-160 applicato a un digest SHA-256, ed è da lì che viene il payload di 20 byte di un indirizzo legacy. Taproot ha rotto di nuovo lo schema: il BIP340 definisce hash etichettati che richiamano SHA-256 una sola volta, con un prefisso separatore di dominio, così le firme per uno scopo non possono essere riprodotte per un altro.
Dove lo vedi
Ogni stringa esadecimale di 64 caratteri in un block explorer è un output di SHA-256. Ciò include l'ID della transazione che incolli nelle richieste all'assistenza e l'hash del blocco che inizia con una lunga serie di zeri, che è l'aspetto di un'intestazione che ha battuto il target.
Due punti contano direttamente quando detieni bitcoin. Una frase di recupero porta un checksum costruito con questa funzione: 12 parole codificano 128 bit di casualità più 4 bit di checksum presi dal digest SHA-256 di quella casualità, quindi una frase con una parola sbagliata viene rifiutata circa 15 volte su 16, invece di aprire in silenzio un wallet vuoto. Un indirizzo legacy porta una protezione simile, un checksum di 4 byte da un doppio passaggio SHA-256, che rende la probabilità che un refuso casuale produca un indirizzo valido di circa 1 su 4,3 miliardi.
L'hardware per il mining non esiste per altro. Un ASIC è un chip che calcola questa unica funzione e nessun'altra, ed è per questo che i miner di bitcoin non possono essere riutilizzati per catene costruite su un algoritmo diverso, e che l'espressione "SHA-256 coin" descrive un'intera famiglia di fork. Nota il limite di tutto questo: un checksum intercetta un indirizzo che hai digitato male, mai un indirizzo che un malware ha sostituito con uno perfettamente valido e non tuo.