Un root hash o bien merkle root, es una género de hash singular creado con el objetivo de facilitar la verificación de datos en un árbol Merkle. Indudablemente una interesante estructura informática con usos en muchos áreas y uno de ellas es la tecnología blockchain.

El root hash o bien hash raíz, es el nombre que se le da al hash resultante de un árbol Merkle. Su primordial utilidad, es la de servir de marcador para indicar la fiabilidad de la información del árbol Merkle en cuestión. Algo que resulta realmente útil en una red Peer to Peer.

Para explicar mejor esta situación imaginemos el próximo ejemplo:

Juan desea instalar un nodo Bitcoin completo. A lo largo de su inicialización, el nodo Bitcoin debe acompasarse con la red. Esto con el objetivo de conseguir toda la información amontonada en la blockchain Bitcoin. Para conseguir esto, el nuevo nodo Bitcoin descargase toda esta información. No obstante, Bitcoin es una red sin confianza que fundamenta su funcionamiento en una serie de funciones criptográficas. Esto con el objetivo de asegurar la veracidad de la información sin la necesidad de confiar en terceros.

Para ello, emplea funciones hash criptográficas como el SHA-256. Conforme el nodo descarga la información, va comprobando que los hashes “superiores de confianza” sean adecuados. De serlos, el nodo Bitcoin prosigue su trabajo de descarga. De lo contrario, desecha la información y empieza a descargar la información de otra nueva fuente en la que todos y cada uno de los hashes de confianza coincidan. Una vez acabada la descarga, el nuevo nodo puede empezar su trabajo, estando seguro de que toda la información ha sido verificada y es adecuada.

El ejemplo dado, nos deja en claro la utilidad del root hash en el momento de contrastar la autenticidad de los datos recibidos. Mas asimismo es de forma perfecta aplicable a todas y cada una de las blockchain y sus procesos de sincronización completos.

¿De qué forma se crea un Root hash?

Un root hash se produce desde un de hashing incremental de la información de cada bloque de datos. Este proceso garantiza que cada uno de ellos de los bloques de información sean tratados y etiquetados con un hash único y también inigualable. Tomemos por poner un ejemplo efectuar un árbol Merkle utilizando el algoritmo hash SHA-doscientos cincuenta y seis. En tal caso nuestros bloques de datos son:

Primer paso para calcular un root hash

Una vez que tenemos a mano los bloques de datos, empezamos a efectuar un hash de cada uno de ellos de ellos. Para esto usaremos la función SHA-doscientos cincuenta y seis lo que nos daría el próximo resultado.

Segundo paso para calcular un root hash

Así debemos cada bloque lleva asignado un hash SHA-doscientos cincuenta y seis único y también inigualable. Este va a ser nuestro marcados para reconocer la autenticidad y la manera en de qué manera vamos a organizar nuestro árbol de Merkle. Siguiendo con el procedimiento, nos queda ir uniendo los bloques de datos de la próxima manera:

Tercer paso para calcular el root hash

Como ven, concadenamos los hash de los bloques próximos unos con otros en pares. Así nos queda los pares AB, CD, EF, GH. Al finalizar la primera ronda, proseguimos edificando la unión de hashes mas esta vez con los pares ABCD y EFGH. Y por último acabamos concadenando todo en un solo hash que incluye los hashes de ABCD y EFGH para dar origen a la raíz merkle (ABCDEFGH).

Cuarto paso para calcular el root hash

Este último bloque en la parte superior es nuestra root hash o bien merkle root. Es el hash resultante del Árbol de Merkle.