Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Panoramica sull'Hashing | Blocchi e Transazioni
Introduzione alla Blockchain

Panoramica sull'Hashing

Scorri per mostrare il menu

L'hashing e gli hash dei blocchi sono stati menzionati più volte, ma il concetto stesso non è ancora stato esaminato in dettaglio. È ora il momento di comprendere cosa sia effettivamente l'hashing.

Note
Approfondimento

Hashing è un processo che prende un input e produce una stringa di byte di dimensione fissa, solitamente espressa come numero esadecimale. L'output, noto come hash, appare casuale e cambia completamente con qualsiasi modifica dell'input, una proprietà nota come "effetto valanga".

Proprietà delle funzioni hash

Nella blockchain, le funzioni hash vengono utilizzate per:

  • Proteggere le transazioni creando un'impronta digitale unica per ciascuna;
  • Generare indirizzi dalle chiavi pubbliche;
  • Creare i collegamenti nella blockchain tramite gli hash dei blocchi.

Tenendo presente ciò, una buona funzione hash per la blockchain presenta diverse proprietà fondamentali:

L'hashing, soprattutto utilizzando una buona funzione di hash, può essere paragonato alla preparazione di un frullato. Osserviamo la seguente illustrazione:

Illustrazione dell'hashing

In realtà, è possibile risalire all'input originale dato un hash, tuttavia richiederebbe troppo tempo per essere effettivamente pratico.

Hashing del blocco

Per ottenere l'hash di un determinato blocco, Bitcoin utilizza la funzione di hash SHA-256, che restituisce un hash di 256 bit (32 byte). Fa parte della famiglia SHA-2 progettata dalla National Security Agency (NSA) ed è nota per le sue forti proprietà di sicurezza, che la rendono resistente alle collisioni, agli attacchi di preimmagine e ad altre vulnerabilità crittografiche.

L'hash di un blocco Bitcoin viene calcolato prendendo i dati dell'intestazione del blocco. Questi dati vengono inseriti nella funzione di hash SHA-256 due volte in un processo noto come double SHA-256.

Ecco un'immagine per chiarire il concetto:

Hashing del blocco

L'hash a 256 bit risultante deve soddisfare determinati criteri definiti dall'obiettivo di difficoltà della rete. Se l'hash non è inferiore all'obiettivo, il nonce viene modificato e l'hash viene ricalcolato fino a quando non si trova un hash valido. Questo hash finale è l'identificatore univoco del blocco.

Radice Merkle

La radice Merkle è un singolo hash che rappresenta tutte le transazioni incluse in un blocco. Il calcolo inizia dagli hash di ciascuna transazione individuale, utilizzando double SHA-256.

Ogni hash di transazione viene quindi accoppiato con un altro, e la coppia viene sottoposta a hash insieme per produrre un nuovo hash. Questo processo di accoppiamento e hashing continua strato dopo strato fino a quando rimane un solo hash. L'hash finale è la radice Merkle, che racchiude l'intero insieme di transazioni e ne garantisce l'integrità codificandole in un unico valore. Questa struttura gerarchica è nota come albero Merkle.

Il seguente esempio illustra come si forma un albero Merkle:

Albero Merkle

Come puoi vedere, il nostro blocco contiene 6 transazioni (ognuna etichettata come Tx) e tramite l'hashing e l'accoppiamento di nuovi hash viene calcolata una radice di Merkle.

Note
Nota

Ogni volta che l'hash più a destra non ha una coppia, come nel caso di Hash56 nel nostro esempio, questo ultimo hash viene duplicato per creare una coppia. Questa tecnica mantiene l'integrità e l'efficienza della struttura dell'albero di Merkle anche con numeri dispari di transazioni o hash in determinati momenti.

question mark

Qual è la dimensione dell'output della funzione di hash SHA-256 utilizzata nella blockchain di Bitcoin?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 4

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Panoramica sull'Hashing

L'hashing e gli hash dei blocchi sono stati menzionati più volte, ma il concetto stesso non è ancora stato esaminato in dettaglio. È ora il momento di comprendere cosa sia effettivamente l'hashing.

Note
Approfondimento

Hashing è un processo che prende un input e produce una stringa di byte di dimensione fissa, solitamente espressa come numero esadecimale. L'output, noto come hash, appare casuale e cambia completamente con qualsiasi modifica dell'input, una proprietà nota come "effetto valanga".

Proprietà delle funzioni hash

Nella blockchain, le funzioni hash vengono utilizzate per:

  • Proteggere le transazioni creando un'impronta digitale unica per ciascuna;
  • Generare indirizzi dalle chiavi pubbliche;
  • Creare i collegamenti nella blockchain tramite gli hash dei blocchi.

Tenendo presente ciò, una buona funzione hash per la blockchain presenta diverse proprietà fondamentali:

L'hashing, soprattutto utilizzando una buona funzione di hash, può essere paragonato alla preparazione di un frullato. Osserviamo la seguente illustrazione:

Illustrazione dell'hashing

In realtà, è possibile risalire all'input originale dato un hash, tuttavia richiederebbe troppo tempo per essere effettivamente pratico.

Hashing del blocco

Per ottenere l'hash di un determinato blocco, Bitcoin utilizza la funzione di hash SHA-256, che restituisce un hash di 256 bit (32 byte). Fa parte della famiglia SHA-2 progettata dalla National Security Agency (NSA) ed è nota per le sue forti proprietà di sicurezza, che la rendono resistente alle collisioni, agli attacchi di preimmagine e ad altre vulnerabilità crittografiche.

L'hash di un blocco Bitcoin viene calcolato prendendo i dati dell'intestazione del blocco. Questi dati vengono inseriti nella funzione di hash SHA-256 due volte in un processo noto come double SHA-256.

Ecco un'immagine per chiarire il concetto:

Hashing del blocco

L'hash a 256 bit risultante deve soddisfare determinati criteri definiti dall'obiettivo di difficoltà della rete. Se l'hash non è inferiore all'obiettivo, il nonce viene modificato e l'hash viene ricalcolato fino a quando non si trova un hash valido. Questo hash finale è l'identificatore univoco del blocco.

Radice Merkle

La radice Merkle è un singolo hash che rappresenta tutte le transazioni incluse in un blocco. Il calcolo inizia dagli hash di ciascuna transazione individuale, utilizzando double SHA-256.

Ogni hash di transazione viene quindi accoppiato con un altro, e la coppia viene sottoposta a hash insieme per produrre un nuovo hash. Questo processo di accoppiamento e hashing continua strato dopo strato fino a quando rimane un solo hash. L'hash finale è la radice Merkle, che racchiude l'intero insieme di transazioni e ne garantisce l'integrità codificandole in un unico valore. Questa struttura gerarchica è nota come albero Merkle.

Il seguente esempio illustra come si forma un albero Merkle:

Albero Merkle

Come puoi vedere, il nostro blocco contiene 6 transazioni (ognuna etichettata come Tx) e tramite l'hashing e l'accoppiamento di nuovi hash viene calcolata una radice di Merkle.

Note
Nota

Ogni volta che l'hash più a destra non ha una coppia, come nel caso di Hash56 nel nostro esempio, questo ultimo hash viene duplicato per creare una coppia. Questa tecnica mantiene l'integrità e l'efficienza della struttura dell'albero di Merkle anche con numeri dispari di transazioni o hash in determinati momenti.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 4
some-alt