¿Qué es un merkle tree?

Un merkle tree es una estructura de datos dentro de la informática que sirve para condensar información y poder verificarla de forma rápida. Es decir, en vez de guardar datos uno detrás de otro en forma de lista, se puede guardar en forma de árbol. De esta manera, se puede verificar la información sin tener que recorrer todos los datos uno por uno. Vemos cómo funcionan los merkle trees y como se usan dentro del ecosistema crypto.

Si ya sabés cómo funciona esto, ¿qué esperás para comenzar a invertir en criptomonedas? Intercambiá tus monedas favoritas en Lemon fácil y rápido:

¿Merkle qué? ¿Qué es un arbol merkle?

Como lo dice su nombre, un merkle tree se destaca por tener una estructura parecida a un árbol. En informática, los árboles están constituidos por hojas que se van uniendo para formar ramas que después se convierten en la raíz. Por alguna razón, se suele dibujar estos árboles al revés que los reales, es decir con las hojas abajo y la raíz arriba. 

La idea detrás de un merkle tree es separar una base de datos de datos en muchas partes y después ir uniendo de a pares los datos a través de funciones hash. ¿Qué son estas funciones? En términos simples, son una forma de obtener un código único a partir de un pedazo de información. Las funciones hash nos dejan obtener una “huella digital” de un dato o conjunto de datos. 

que-es-un-merkle-tree

En los merkle trees, se van combinando los códigos (o huellas digitales) de todos los datos hasta llegar a la raíz, la cual representa en unos pocos caracteres la totalidad de la base de datos. Con esta raíz, podemos verificar la integridad de todas las hojas sin recorrerlas una por una. 

Como puede ser confuso, vamos con un ejemplo de un merkle tree…

Supongamos que tenemos dos cajas con libros y queremos chequear de manera rápida si alguien saco o cambio algún libro. Una opción es anotar todos los ejemplares en una lista y controlar uno por uno a ver si están, pero llevaría mucho tiempo. Un merkle tree nos permite hacer un “resumen” de cada caja en forma de un código o huella digital. Si alguien saca o cambia un libro, el código va a cambiar.

Entonces, para controlar los libros de una caja, solo hace falta comparar el código actual con el anterior. Si son iguales, los libros son los mismos. ¿Qué pasa si queremos controlar las dos cajas al mismo tiempo? Lo que hace el merkle tree es unir los códigos de ambas cajas (u hojas) para formar un código nuevo (o raíz). Si cambia algún libro en alguna de las cajas, el código nuevo también va a cambiar. 

ejemplo-merkle-tree-que-es

¿Para que se usan los merkle trees en crypto?

  • Para condensar transacciones

En la blockchains descentralizadas, hay muchos nodos verificando y guardando transacciones. En una blockchain como la de Bitcoin, se crean cientos o miles de transacciones por día. Teniendo en cuenta que esta red viene funcionando hace más de 12 años, es mucha información. Para guardar y trabajar con esa cantidad de datos, se necesitarían computadoras muy potentes. 

Es por eso que se usan merkle trees para condensar la información de las transacciones y hacerlas mucho más livianas. En vez de guardar la transacción entera, se arma un merkle tree para guardar solo los códigos generados. De esa manera, se logra que cualquier persona con una computadora regular pueda correr su propio nodo, aportando descentralización a la red.  

  • Para comparar y verificar transacciones rápidamente

Más allá de ahorrar memoria, los merkle trees nos dejan comparar distintas copias de la blockchain y verificar la validez de transacciones al instante.  Por ejemplo, usando la raíz de un bloque dentro de la blockchain, podemos saber si este fue manipulado o alterado sin tener que revisar las transacciones una por una. 

En definitiva, los merkle trees nos permiten separar la información de la prueba de esa información. ¿Qué quiere decir esto? Que los nodos no tienen que guardar ni compartir entre sí todos los datos, sino que con tener la prueba de esos datos es suficiente. Esto hace a las blockchain mucho más eficientes. 

  • Para construir merkle proofs

Como dijimos arriba, los merkle trees sirven para establecer una prueba matemática sobre cierta información. Estas merkle proofs se pueden usar, por ejemplo, para probar que un dato pertenece a un merkle tree sin tener que guardar ni ver la información que el árbol representa. Así, la verificación se vuelve muy eficiente y privada. 

Un caso de uso concreto de las merkle proofs es la construcción de un Proof of Liabilities (o prueba de pasivos) de un exchange de crypto. ¿Cómo funcionaría? Los balances de cada usuario pueden ser una hoja del árbol, las cuales se van uniendo hasta llegar a la raíz. 

Los usuarios entonces, sabiendo su balance más los balances parciales de las ramas superiores, van a poder calcular el balance total del árbol. Este número representa la cantidad de cryptos que el exchange debería tener. Si se combina con un Proof of Reserves, se puede comprobar la solvencia de la empresa.

Un merkle tree es una estructura de datos utilizada en la informática para condensar y verificar información de manera rápida. Funciona dividiendo la información en varias partes y uniéndose mediante funciones hash para formar una “raíz” que representa la totalidad de la base de datos. Los merkle trees se utilizan en las blockchains descentralizadas para condensar transacciones y verificar su integridad de manera rápida y eficiente. También, se pueden utilizar para construir Proof of Liabilities y darle más transparencia a los exchanges y plataformas centralizadas.