Una radice hash o merkle root, è un tipo speciale di hash creato per facilitare la verifica dei dati all'interno di un albero Merkle. Indubbiamente una struttura informatica interessante con usi in molte aree e una di queste è la tecnologia blockchain.
El hash radice o hash radice, è il nome dato al hash risultante da a albero di merkle. La sua utilità principale è quella di fungere da indicatore per indicare l'affidabilità delle informazioni dell'albero di Merkle in questione. Qualcosa che è molto utile all'interno di una rete P2P.
Per spiegare meglio questa situazione, immaginiamo il seguente esempio:
Juan vuole installare un nodo Bitcoin pieno. Durante la sua inizializzazione, il nodo Bitcoin deve sincronizzarsi con la rete. Questo al fine di ottenere tutte le informazioni accumulate nel file blockchain Bitcoin Per ottenere ciò, il nuovo nodo Bitcoin scaricherà tutte queste informazioni. Tuttavia, Bitcoin è una rete senza fiducia che basa il suo funzionamento su una serie di funzioni crittografiche. Questo al fine di garantire la veridicità delle informazioni senza la necessità di affidarsi a terzi.
Per fare ciò, fa uso di funzioni hash crittografiche come SHA-256. Man mano che il nodo scarica le informazioni, verifica che gli hash "più attendibili" siano corretti. Se lo sono, il nodo Bitcoin continua il suo lavoro di download. In caso contrario, elimina le informazioni e avvia il download delle informazioni da un'altra nuova fonte in cui tutti gli hash attendibili corrispondono. Una volta completato il download, il nuovo nodo può iniziare il suo lavoro, assicurandosi che tutte le informazioni siano state verificate e corrette.
L'esempio fornito ci chiarisce l'utilità dell'hash di root quando si verifica l'autenticità dei dati ricevuti. Ma è anche perfettamente applicabile a tutte le blockchain e ai loro processi di sincronizzazione completi.
Come si crea un hash di root?
Un hash radice viene generato da un hash incrementale delle informazioni in ogni blocco di dati. Questo processo garantisce che ciascuno dei blocchi di informazioni venga trattato e contrassegnato con un hash unico e irripetibile. Prendiamo ad esempio la creazione di un albero Merkle utilizzando l'algoritmo di hashing SHA-256. In questo caso i nostri blocchi di dati sono:
Una volta che abbiamo i blocchi di dati a portata di mano, iniziamo a sottoporli ad hashing. Per questo useremo la funzione SHA-256 che ci darebbe il seguente risultato.
Quindi abbiamo che ad ogni blocco viene assegnato un hash SHA-256 unico e irripetibile. Questo sarà il nostro markup per riconoscere l'autenticità e come organizzeremo il nostro albero Merkle. Continuando con la procedura, ci resta da unire i blocchi di dati come segue:
Come puoi vedere, concateniamo gli hash dei blocchi vicini tra loro a coppie. Quindi abbiamo le coppie AB, CD, EF, GH. Alla fine del primo round, continuiamo a costruire l'unione di hash ma questa volta con le coppie ABCD ed EFGH. E infine finiamo per concatenare tutto in un unico hash che include gli hash di ABCD ed EFGH per dare origine alla radice merkle (ABCDEFGH).
Quest'ultimo blocco in alto è la nostra radice hash o merkle root. È l'hash risultante del Merkle Tree.