Menú Cerrar

Merkle Root o Merkle Tree, que es y para que sirve

merkle root digitalkatt

Es posible que conozcas la tecnología Blockchain pero no sepas bien que es esto de Merkle Root o Merkle Tree, algo muy útil y necesario en las cadenas de bloques.

No importa si hace poco que conoces la tecnología Blockchain o llevas tiempo jugando con ella, seguramente te habrás topado con algo llamado Merkle Tree. El nombre proviene del inventor Ralph Merkle, el cual publicó un paper llamado “A Digital Signature Based on a Conventional Encryption Function” en 1979. En ese paper se explica como crear un método para estructurar información para que permita la verificación de estos de una forma rápida y eficiente en grandes cantidades de datos.

Hoy en día esta técnica se encuentra presente en la gran mayoría de tecnologías como Bitcoin, Etherum, Git, Bittorrent, Cassandra entre otras muchas mas.

Cual es su funcionamiento

El funcionamiento es bien sencillo, como su nombre indica, se estructuran todos los datos en forma de árbol. Su forma mas común es la de un árbol binario, donde se encuentran los datos estructurados en pares e hijos de un nodo padre.

Para conseguir esta estructura que se ve en la imagen, se empieza pasando por una función hash, un primer nivel como podrían ser los números 8 y 9. Los resultados que se obtienen, son concatenados en pares y pasados de nuevo por un función hash para obtener el nodo padre de estos mismo (si fuera un número impar el que se quedara, solo se pasaría a sí mismo). Esta función, se realizara sucesivamente hasta llegar al nodo padre (Merkle Root), en este caso el nodo número 1.

Como se puede ver, esta función permite reducir el número datos a verificar, ya que este método nos permite crear una cadena en forma de árbol, dando como resultado un uno hash a verificar. Al mismo tiempo, estamos seguros frente a ataques de terceros, ya que al usar funciones hash consecutivamente, estamos construyendo una estructura en base al contenido de los datos. Por lo tanto, un Merkle Tree, es como una huella dactilar creada a partir de un conjunto de datos. Esto nos da una enorme seguridad a modificaciones, ya que si se intenta modificar alguna dato en cualquier posición, el nodo padre o Merkle Root se vera afectado.

Como consecuencia, gracias a esta estructura de Merkle Tree, podemos verificar si un dato está incluido en el árbol fácilmente e, incluso, estar muy seguros de que no fue manipulado por un tercero.

Algunos casos donde se utiliza

Básicamente esta tecnología, se pude utilizar en todas aquellas situaciones donde necesitemos verificar datos, comprobar su consistencia y sincronizar datos.

Uso en Criptomonedas

Dentro de cada bloque, se almacenan las transacciones verificadas en ese momento. A través de las transacciones, se crea una Merkle Tree dando como resultado un único hash (Merkle Root). En este caso se utiliza para, una vez minado un bloque, comprobar que ninguna transacción a sido modificada.

Controlar versiones de software

En plataformas como Git, se utiliza una Merkle Tree, para el control de versiones de cada software. En este caso, gracias a este sistema, Git puede comparar los hashes creados por los commits y así verificar rápidamente, cualquier cambio que se haya producido.

Uso en Bases de datos

En este caso, el uso se hace en Base de Datos descentralizadas No-SQL. Por ejemplo Amazon la usa en su sistema DynamoDB. Utilizan una Merkle Tree para poder tener control sobre las copias que se realizan y comprobar su inconsistencia. Es una forma fácil de encontrar fallos en las copias y realizar las reparaciones necesarias.

Una de las cosas que se pueden sacar sobre lo que e explicado breve mente, es que, gracias a el uso de Merkle Tree, se ahorra mucho en tiempo y recursos que harían falta para poder comprobar todos los datos y cambios realizados en estos. En todos los casos, gracias a Merkle Tree, se aumenta la eficiencia en una buena parte y se consigue obtener resultados de verificación muy rápidos.

Imágenes gracias a Pixabay