Albero di Merkle: nodo radice, nodo, nodo foglia
Come vengono utilizzati gli alberi di Merkle nella tecnologia blockchain e perché?
Nella rete Bitcoin, tutte le transazioni all'interno di un blocco vengono riassunte in un albero di Merkle, producendo una sorta di impronta digitale dell'intero insieme di transazioni. In questo modo un utente è in grado di verificare se una transazione è inclusa o meno in un blocco.
Tutti i nodi della struttura ad albero dell'albero di Merkle sono rappresentazioni parziali dei dati sottoposti ad hash sottostanti.
A questo punto forse ti chiederai perché è necessario un albero di hash per effettuare tale verifica. Non sarebbe possibile fare l'hash di tutti i messaggi (i dati originali), mettere i valori con hash in un'unica stringa e ottenere il valore dell'hash principale in questo modo? Perché gli alberi di Merkle semplificano le cose?
Il problema della fiducia
Immagina la vita senza alberi di Merkle. Al posto della radice Merkle, dovremmo memorizzare un hash di tutte le transazioni della blockchain nell'intestazione del blocco. Ciò significa che per verificare una sola transazione, dovresti scaricare i dati di tutte le transazioni.
Gli alberi di Merkle riducono la quantità di dati necessari per la verifica. Supponiamo che Susanna voglia dimostrare a Giovanni che la transazione "m6" non è stata alterata. Giovanni potrebbe ottenere l'hash radice da una fonte affidabile e verificare che effettivamente sia così.
Se Susanna e Giovanni procedessero senza alberi di Merkle, Susanna dovrebbe fornire a Giovanni tutte le transazioni con hash per dimostrare che la transazione "m6" non è stata alterata. Un albero di Merkle offre un modo migliore per effettuare tale verifica. Anche in questo caso, Giovanni ottiene la radice da una fonte di cui si fida. Questa volta, se Susanna vuole dimostrare che "m6" non è stata alterata, deve solo inviare il messaggio e i quattro valori con hash (mostrati in viola) a Giovanni, come indicato nel grafico sottostante: