Un hash è una funzione matematica che converte un input di lunghezza arbitraria in un output crittografato di lunghezza fissa. Pertanto, indipendentemente dalla quantità originale di dati o dalla dimensione del file, il suo hash unico avrà sempre la stessa dimensione. Inoltre, gli hash non possono essere utilizzati per “decodificare” l’input dall’output codificato, poiché le funzioni hash sono “unidirezionali” (come un tritacarne; non si può rimettere il macinato in una bistecca). Tuttavia, se si utilizza una funzione di questo tipo sugli stessi dati, il suo hash sarà identico, quindi è possibile verificare che i dati siano gli stessi (cioè inalterati) se si conosce già il loro hash.
L’hash è anche essenziale per la gestione della blockchain nelle criptovalute.
Che cos’è un Hash?
concetti chiave
- Un hash è una funzione che soddisfa le richieste criptate necessarie per risolvere un calcolo della blockchain.
- Gli hash hanno una lunghezza fissa, in quanto rende quasi impossibile indovinare la lunghezza dell’hash se qualcuno cerca di crackare la blockchain.
- Gli stessi dati produrranno sempre lo stesso valore hash.
- Un hash, come un nonce o una soluzione, è la spina dorsale della rete blockchain.
- Un hash viene sviluppato sulla base delle informazioni presenti nell’intestazione del blocco.
Come funzionano gli Hash
Le tipiche funzioni di hash accettano input di lunghezza variabile per restituire output di lunghezza fissa. Una funzione hash crittografica combina le capacità di message-passing delle funzioni hash con le proprietà di sicurezza.
Le funzioni hash sono strutture di dati comunemente utilizzate nei sistemi informatici per compiti quali la verifica dell’integrità dei messaggi e l’autenticazione delle informazioni. Sebbene siano considerate “deboli” dal punto di vista crittografico perché possono essere risolte in tempo polinomiale, non sono facilmente decifrabili.
Le funzioni hash crittografiche aggiungono caratteristiche di sicurezza alle funzioni hash tipiche, rendendo più difficile l’individuazione del contenuto di un messaggio o delle informazioni su destinatari e mittenti.
In particolare, le funzioni hash crittografiche presentano queste tre proprietà:
- Sono “senza collisioni”. Ciò significa che non ci sono due hash di input che si adattano allo stesso hash di output.
- Possono essere nascoste. Deve essere difficile indovinare il valore di input di una funzione hash dal suo output.
- Devono essere facili da risolvere. Deve essere difficile selezionare un input che fornisca un output predefinito. Pertanto, l’input deve essere selezionato da una distribuzione il più ampia possibile.
Per le loro caratteristiche, gli hash sono ampiamente utilizzati nella sicurezza online, dalla protezione delle password al rilevamento di violazioni dei dati, fino alla verifica dell’integrità di un file scaricato.
Hashing e criptovalute
La spina dorsale di una criptovaluta è la blockchain, che è un libro mastro globale formato collegando insieme i singoli blocchi di dati delle transazioni. La blockchain contiene solo transazioni convalidate, il che impedisce le transazioni fraudolente e la doppia spesa della valuta. Il valore crittografato risultante è una serie di numeri e lettere che non assomigliano ai dati originali ed è chiamato hash. Il mining di criptovalute consiste nel lavorare con questo hash.
L’hash richiede l’elaborazione dei dati di un blocco attraverso una funzione matematica, che produce un risultato di lunghezza fissa. L’utilizzo di un output di lunghezza fissa aumenta la sicurezza, poiché chiunque cerchi di decifrare l’hash non sarà in grado di capire quanto sia lungo o corto l’input semplicemente osservando la lunghezza dell’output.
La soluzione dell’hash parte dai dati disponibili nell’intestazione del blocco e consiste essenzialmente nel risolvere un complesso problema matematico. Ogni intestazione di blocco contiene un numero di versione, un timestamp, l’hash utilizzato nel blocco precedente, l’hash della radice Merkle, il nonce e l’hash di destinazione.
Il miner si concentra sul nonce, una stringa di numeri. Questo numero viene aggiunto al contenuto hash del blocco precedente, che viene poi sottoposto a hash. Se il nuovo hash è inferiore o uguale all’hash target, viene accettato come soluzione, il miner riceve la ricompensa e il blocco viene aggiunto alla blockchain.
Importante: il processo di convalida delle transazioni della blockchain si basa sulla crittografia dei dati tramite hashing algoritmico.
Considerazioni speciali
La soluzione dell’hash richiede che il miner determini quale stringa utilizzare come nonce, il che richiede una quantità significativa di tentativi ed errori. Questo perché il nonce è una stringa casuale. È altamente improbabile che un miner riesca a trovare il nonce corretto al primo tentativo, il che significa che il miner può potenzialmente testare un gran numero di opzioni di nonce prima di azzeccarci. Maggiore è la difficoltà – che misura quanto sia difficile creare un hash che soddisfi i requisiti dell’hash target – più tempo sarà probabilmente necessario per generare una soluzione.
Un esempio di hash
L’hash della parola “ciao” produrrà un risultato della stessa lunghezza dell’hash di “vado al negozio”. La funzione utilizzata per generare l’hash è deterministica, cioè produce lo stesso risultato ogni volta che viene utilizzato lo stesso input. Può generare un input hash in modo efficiente, ma rende anche difficile la determinazione dell’input (portando al mining) e fa sì che piccole modifiche all’input producano un hash irriconoscibile e completamente diverso.
L’elaborazione delle funzioni hash necessarie per criptare nuovi blocchi richiede una notevole potenza di elaborazione del computer, che può essere costosa. Per invogliare individui e aziende, detti minatori, a investire nella tecnologia necessaria, le reti di criptovalute li ricompensano sia con nuovi gettoni di criptovaluta sia con una commissione di transazione. I minatori vengono ricompensati solo se sono i primi a creare un hash che soddisfa i requisiti indicati nell’hash target.
Cos’è una funzione hash?
Le funzioni hash sono funzioni matematiche che trasformano o “mappano” un dato insieme di dati in una stringa di bit di dimensioni fisse, nota anche come “valore hash”.
Come viene calcolato un valore hash?
Una funzione hash utilizza complessi algoritmi matematici che convertono dati di lunghezza arbitraria in dati di lunghezza fissa (ad esempio, 256 caratteri). Se si cambia un bit in un punto qualsiasi dei dati originali, l’intero valore hash cambia, il che lo rende utile per verificare la fedeltà di file digitali e altri dati.
A cosa servono gli hash nelle blockchain?
Gli hash sono utilizzati in diverse parti di un sistema blockchain. In primo luogo, ogni blocco contiene l’hash dell’intestazione del blocco precedente, garantendo che nulla sia stato manomesso durante l’aggiunta di nuovi blocchi. Il mining di criptovalute tramite proof-of-work (PoW), inoltre, utilizza l’hashing di numeri generati casualmente per arrivare a uno specifico valore hash contenente una serie di zeri iniziali. Questa funzione arbitraria è ad alta intensità di risorse e rende difficile per un cattivo attore superare la rete.
Analizziamo ora più nel dettaglio l’Hash Rate
Che cos’è l’Hash Rate?
L’hash rate è la misura della potenza di calcolo di una rete di criptovalute proof-of-work (PoW). Il tasso di hash viene utilizzato per determinare la salute, la sicurezza e la difficoltà di mining di una rete blockchain.
L’hash è un codice alfanumerico generato casualmente e l’hashing è il processo di indovinare tale codice (o il più vicino possibile). Ogni ipotesi presentata dai computer della rete viene misurata e il tasso di hash è il numero di ipotesi al secondo che vengono effettuate nell’intera rete.
- Il tasso di hash è una misura della potenza di calcolo di una rete blockchain.
- Il tasso di hash è determinato dal numero di indovinelli al secondo.
- Il tasso di hash complessivo contribuisce a determinare la sicurezza e la difficoltà di mining di una rete blockchain.
- Il tasso di hash può cambiare nel tempo, con le blockchain più popolari che aumentano di anno in anno.
Capire i tassi di hash
Il tasso di hash viene misurato in base al numero di ipotesi che ogni computer effettua al secondo per risolvere l’hash di una rete blockchain. Si tratta di una parte essenziale del processo di mining di criptovalute su una rete proof-of-work (PoW).
Ecco come funziona:
- Una rete blockchain impiega un algoritmo di hashing che genera casualmente un codice hash.
- I computer di mining sulla rete blockchain competono per indovinare il valore dell’hash.
- Il numero di tentativi al secondo sulla rete blockchain viene misurato come tasso di hash.
- L’hash è “risolto” quando un miner indovina un valore inferiore o uguale al valore numerico dell’hash target.
- Il minatore vincitore è autorizzato ad aggiungere il blocco successivo alla blockchain e a guadagnare ricompense in criptovaluta (note come ricompense di blocco).
Più computer si uniscono a una rete blockchain ed elaborano gli hash (ipotesi) sulla rete, più alto è il tasso di hash.
Un tasso di hash elevato rappresenta una maggiore sicurezza e salute in una rete blockchain PoW, in quanto vi è una minore possibilità di attacco alla rete.
Come si misura il tasso di hash
Il tasso di hash è misurato dal numero di hash (o congetture) al secondo su una rete blockchain. Più grande è la rete blockchain, più alto è il tasso di hash.
Poiché in genere ci sono centinaia (o migliaia) di computer che fanno milioni di ipotesi al secondo, la velocità di hash è tipicamente misurata in terahash, o 1 trilione di hash, al secondo. Ad esempio, la velocità di hash della rete Bitcoin è misurata in terahashes al secondo.
Le reti più piccole possono essere misurate in incrementi più piccoli, come kilohashes al secondo (1.000/s), megahashes al secondo (1 milione/s) o gigahashes al secondo (1 miliardo/s).
Perché la velocità di hash è importante?
Il tasso di hash è importante come indicatore della sicurezza complessiva di una rete blockchain, nonché della difficoltà di mining per i minatori di ottenere le ricompense dei blocchi. Più minatori fanno parte di una rete blockchain e competono per estrarre i blocchi, meno è probabile che si verifichi un attacco malevolo alla rete.
Anche il tasso di hash influisce sulla difficoltà di estrazione di una determinata blockchain. Alcune blockchain aumentano la difficoltà di estrazione di un blocco all’aumentare del tasso di hash. Ciò significa che le reti di criptovalute con tassi di hash molto elevati possono essere quasi impossibili da competere per i singoli minatori.
Che cos’è l’hash rate di Bitcoin?
Il tasso di hash della rete Bitcoin a ottobre 2022 è di circa 240 milioni di terahash al secondo (o 240.000.000 TH/s). La rete ha raggiunto per la prima volta un tasso di hash di 1 TH/s nel maggio 2011 e da allora è aumentato ogni anno.
Cosa succede quando l’hash rate cambia (aumenta o diminuisce)?
L’hash rate è un indicatore dell’attività complessiva della rete da parte dei minatori su una rete proof-of-work (PoW). Quando il tasso di hash aumenta, ecco cosa significa:
- Vengono utilizzate più risorse computazionali per estrarre i blocchi.
- Viene consumata più energia elettrica.
- La rete aumenta la sua sicurezza, poiché diventa troppo grande per essere sovrastata da una sola entità.
- L’estrazione diventa molto più difficile e la maggior parte degli algoritmi della rete blockchain aumenta la difficoltà di estrazione all’aumentare del tasso di hash.
Quando il tasso di hash di una rete blockchain PoW diminuisce, in genere significa che:
- Meno minatori sono in competizione per aggiungere blocchi e guadagnare ricompense per i blocchi.
- La rete diventa meno sicura e più vulnerabile a un attacco del 51%, che si verifica quando un gruppo di minatori che controlla più del 50% del tasso di hash mining della rete altera la blockchain.
- I computer di mining consumano meno energia.
- La difficoltà di estrazione diminuisce, rendendo più facile l’estrazione dei blocchi.