Intermedio
Lezione 19
4 min

Cos'è una funzione hash in una transazione blockchain?

Le funzioni hash crittografiche generano una stringa di caratteri di lunghezza fissa da record di dati di qualsiasi lunghezza. Un record di dati può essere una parola, una frase, un testo più lungo o un intero file.

  • Una funzione hash crittografica è usata per scopi di sicurezza e costituisce la colonna portante della sicurezza crittografica

  • Una funzione hash trasforma un input casuale di dati (chiavi) in una stringa di byte con una lunghezza e una struttura fissa (valore di hash) 

  • L'hash di una transazione rende facile identificare le transazioni sulla blockchain

In questa lezione, imparerai tutto quello che c'è da sapere sulle funzioni hash.

Cos'è una funzione hash?

Come hai imparato nella lezione 6 della sezione per utenti intermedi della Bitpanda Academy, la rete Bitcoin dipende da un insieme di regole chiamate algoritmo di consenso PoW. Questo algoritmo di consenso è un insieme di regole che governa una rete blockchain. Al di là delle criptovalute, l'uso più comune delle funzioni hash è la memorizzazione delle password. 

Ma partiamo dalle basi. Una funzione matematica è usata per illustrare un'espressione o una relazione che coinvolge una o più variabili o insiemi. Di conseguenza, una funzione mette in relazione un input con un output. 

Un esempio potrebbe essere la dimensione e il prezzo degli hamburger in un ristorante. 

Il costo di un hamburger è determinato dalle sue dimensioni. 

Quindi, in questo caso, il costo è una funzione della dimensione. 

Diciamo che si possono comprare hamburger piccoli, medi e grandi e i loro rispettivi costi sono 1.50, 2.50 e 3.50 euro.

L'input è la dimensione dell'hamburger.

L'output è il costo dell'hamburger.

Una funzione hash trasforma un input (per esempio un testo) in una stringa di byte con una lunghezza e una struttura fisse. L'output o il valore creato è chiamato "valore di hash" o "checksum". Qualsiasi valore di hash creato da dati e utilizzando un algoritmo di hashing specifico è sempre della stessa lunghezza e a senso unico, non può essere invertito.

Cos'è una funzione hash in una blockchain? 

Nuovo su Bitpanda? Registrati oggi

Registrati qui

Il termine "funzione hash" deriva dalla parola francese "hacher" che significa "sminuzzare", perché una funzione hash è progettata per "tagliare in piccoli pezzi" i dati. Un altro tipo di struttura di dati, una tabella di hash, è spesso utilizzata per individuare rapidamente due hash identici (valori di hash).

Da quando Diffie e Hellman hanno identificato per la prima volta la necessità di una funzione hash unidirezionale nel loro famoso articolo del 1976 sulla crittografia a chiave pubblica, gli sviluppi della crittografia sono progrediti rapidamente nei due decenni successivi . Nel 1990, il crittografo e professore del MIT, Ronald Rivest, ha inventato la funzione hash MD4 e successivamente le funzioni MD5 e MD6. Nel 1995, la NSA (National Security Agency) ha progettato lo SHA-1 (Secure Hash Algorithm 1) basato sul progetto di Rivest, seguito dall'aggiornamento SHA-2 nel 2001. SHA-2 è lo standard che ha ispirato SHA-256, che è servito come base per l'algoritmo di consenso di Bitcoin. 

Lo scopo delle funzioni hash

Le funzioni hash sono nate sia dalla necessità di rendere il contenuto uniforme in lunghezza sia per essere usate come identificatori unici. Gli usi tipici delle funzioni hash al di fuori della sfera delle criptovalute includono: 

  • calcolare un (breve) checksum per un oggetto, come il checksum per un ISBN (International Standard Book Number)

  • identificare qualsiasi contenuto quasi senza ambiguità, ma ancora "brevemente", senza rivelare nulla del contenuto in applicazioni crittografiche

Proprietà delle funzioni hash

Una funzione hash crittografica dovrebbe essere computazionalmente efficiente, nel senso che deve essere veloce nelle prestazioni per creare il valore di hash. Deve essere univoca, cioè ogni volta che si inserisce un certo input, deve produrre lo stesso output e deve essere resistente alla preimmagine, cioè non può rivelare alcuna informazione sull'input nell'output. 

Infine, una funzione hash deve essere resistente alle collisioni, proprietà che assicura sia impossibile che due input diversi producano lo stesso output. Univocità, resistenza alla preimmagine e alla collisione sono le tre proprietà più importanti delle funzioni hash nel processo di estrazione di Bitcoin.

Una funzione hash deve essere resistente alle collisioni, proprietà che assicura sia impossibile che due input diversi producano lo stesso output.

Funzioni hash nel processo di mining

Ritorniamo per un attimo al processo di convalida nella rete Bitcoin: un blocco è raggruppato e contiene diverse transazioni, così come informazioni sul blocco precedente. Questo significa che se qualcuno volesse cambiare il libro mastro o raddoppiare una transazione, dovrebbe cambiare l'hash in tutti i blocchi precedenti. 

Per aggiungere il blocco raggruppato alla blockchain, i miner devono trovare un hash che soddisfi l'obiettivo di difficoltà. Ogni blocco contiene un blockheader con il numero del blocco, l'hash del blocco precedente e un "nonce", che include una marca temporale. Lo scopo di un nonce è variare l'input di una funzione hash crittografica, cosa che aumenta la casualità, nel calcolo durante il processo di mining. 

Risolvere l'hash

Il nodo inizia quindi a eseguire l'hashing dei dati convertendoli nel valore di hash, o semplicemente "hash", che deve sempre contenere un certo numero di zeri. Il nodo controlla se un hash soddisfa i criteri di difficoltà. L'hash deve iniziare con la giusta quantità di zeri. Se l'hash soddisfa i criteri di difficoltà, viene trasmesso agli altri miner della rete. Il primo miner che trova un hash valido convalida il blocco in un nuovo blocco e viene premiato con la ricompensa di blocco e con delle commissioni in Bitcoin.

Se l'hash non soddisfa i criteri di difficoltà della rete, un altro nonce viene selezionato e sottoposto ad hash. I miner di solito devono generare molti hash con diversi nonce finché non trovano un nonce che soddisfa la difficoltà. Questo è il processo ripetitivo e ad alto consumo energetico conosciuto come mining di Bitcoin, che richiede una grande potenza di calcolo.

Le funzioni hash costituiscono la colonna portante del processo di Proof of Work. Senza la conferma e la produzione di transazioni hash, la blockchain non sarebbe né a prova di manomissione né inalterabile, e non sarebbe possibile dimostrare chi possiede quale quantità di Bitcoin in quale momento.

Sei pronto a comprare criptovalute?

Inizia ora

DICHIARAZIONE DI NON RESPONSABILITÀ

Il presente articolo non costituisce una consulenza in materia di investimenti, né un'offerta o un invito all'acquisto di criptorisorse.

Il presente articolo è a solo scopo informativo generale e non viene rilasciata alcuna dichiarazione o garanzia, espressa o implicita, e non si può attribuire un valore assoluto, sull'imparzialità, accuratezza, completezza o correttezza del presente articolo o delle opinioni in esso contenute.

Alcune dichiarazioni contenute nel presente articolo possono riguardare aspettative future che si basano sulle nostre attuali opinioni e ipotesi e comportano incertezze che potrebbero generare risultati effettivi, prestazioni o eventi che si discostano da tali affermazioni.

Nessuno di Bitpanda GmbH e nessuna delle sue affiliate, consulenti o rappresentanti avrà alcuna responsabilità in relazione al presente articolo.

Si prega di notare che un investimento in criptorisorse comporta dei rischi oltre alle opportunità sopra descritte.