Un Merkle tree (o hash tree) è una struttura ad albero binaria in cui ogni nodo terminale rappresenta l’hash di un blocco di dati. L’albero viene costruito eseguendo l’hashing di coppie di nodi terminali, poi dei loro hash combinati, fino a ottenere un solo hash finale: la Merkle root.
La Merkle root contribuisce alla sicurezza della blockchain permettendo di rilevare rapidamente eventuali modifiche a una qualsiasi transazione all’interno di un blocco, senza dover memorizzare o rielaborare l’intero insieme di dati. Invece di verificare ogni singola transazione, la Merkle root consente ai nodi di confermare che una transazione è inclusa in un blocco controllando soltanto un sottoinsieme di hash.
Essendo l’hash finale del Merkle tree, la Merkle root cambia completamente anche se una sola transazione viene modificata, rendendo evidente qualsiasi tentativo di manomissione dei dati.
Con Bitcoin, ogni blocco contiene un Merkle tree che rappresenta tutte le transazioni in esso incluse. Quando i miner creano un nuovo blocco, calcolano la Merkle root in base alle transazioni e la inseriscono nell’intestazione del blocco. Questo processo garantisce l’integrità e la sicurezza della blockchain.