
Un Merkle tree es una estructura de datos jerárquica que agrupa grandes volúmenes de información en un único “root hash”. Este sistema permite verificar si un dato específico forma parte de un conjunto sin descargar toda la información.
Un hash funciona como una “huella digital”: al procesar cualquier entrada mediante un algoritmo criptográfico (por ejemplo, SHA‑256, ampliamente utilizado en Bitcoin), se obtiene una cadena de longitud fija. La misma entrada siempre genera el mismo hash, mientras que una mínima modificación produce un hash completamente distinto. En un Merkle tree, cada dato se transforma en un hash que constituye las “hojas” del árbol. Los pares de hashes de hoja se combinan y se hashean nuevamente para crear los “nodos padre”. Este proceso se repite capa por capa hasta obtener el “root hash” superior (también llamado Merkle root).
Un Merkle tree opera combinando y hasheando sucesivamente los hashes adyacentes desde la base hasta la cima, generando finalmente un root hash único que compromete todo el conjunto de datos.
Por ejemplo, imagina cuatro transacciones: TxA, TxB, TxC y TxD.
Si el número de hojas es impar, normalmente se duplica la última o se aplica una regla de relleno para que cada capa pueda emparejarse. La ventaja esencial es que, mientras la función hash sea segura, cualquier modificación en los datos subyacentes se reflejará en el root hash y la falsificación de datos será prácticamente imposible.
Los Merkle trees se emplean principalmente para la verificación eficiente de inclusión y la sincronización ligera, lo que los convierte en herramientas ideales para gestionar grandes volúmenes de datos.
En entornos de light client, basta con el root hash del encabezado de bloque y unos pocos “branch hashes” (Merkle proofs) para confirmar que un dato concreto está incluido en el conjunto. Un Merkle proof actúa como las “piezas clave” en la ruta desde la hoja hasta la raíz, permitiendo reconstruir el root hash capa a capa con solo una fracción de los hashes.
En cross-chain solutions y Rollups, los Merkle trees se utilizan para comprometer lotes de transacciones o cambios de estado. La cadena principal almacena únicamente el root hash, lo que ahorra espacio y facilita la validación.
En las pruebas de reservas de exchanges, los Merkle trees hashean la entrada de activos de cada usuario como nodo hoja y luego los agrupan en un root hash público. Por ejemplo, Gate proporciona a los usuarios tanto el root hash como su propio hash de entrada anónimo y los branch hashes. Esto les permite verificar de forma independiente que sus activos están incluidos en el total, aunque también deben considerar el momento del snapshot y el alcance de la auditoría.
En diciembre de 2025, los Merkle trees y sus variantes siguen siendo estructuras clave para las principales blockchains públicas y redes layer 2, gracias a sus bajos costes de verificación y facilidad de implementación.
En Bitcoin, cada encabezado de bloque registra el Merkle root de todas las transacciones incluidas en ese bloque.
Los light clients suelen descargar solo los encabezados de bloque (aproximadamente 80 bytes cada uno), en lugar de todo el historial de transacciones. Para verificar si un pago existe en un bloque determinado, la red proporciona un Merkle proof (una serie de branch hashes para esa transacción). El light client calcula iterativamente los hashes desde la transacción hasta los branches; si el resultado coincide con el Merkle root del encabezado, confirma que “esa transacción está incluida en ese bloque”.
Este proceso se denomina SPV (Simplified Payment Verification). Su principal ventaja es el mínimo consumo de ancho de banda y almacenamiento, ideal para dispositivos móviles o embebidos. Sin embargo, SPV solo verifica la inclusión; no protege contra el doble gasto ni confirma la estabilidad de la cadena. Los usuarios deben considerar las confirmaciones de bloque y la seguridad de la red.
Ethereum utiliza una variante de Merkle tree para gestionar el estado de cuentas y contratos; su estructura típica es el “Merkle Patricia Tree”, que incorpora compresión de prefijos y almacenamiento ordenado clave-valor para búsquedas y actualizaciones eficientes.
En los Rollups, los operadores agrupan lotes de transacciones o balances de usuarios en un Merkle tree y periódicamente envían el root hash a la cadena principal. Este mecanismo (llamado “state commitment”) implica que, aunque los datos detallados no se almacenen on-chain, cualquiera puede emplear un Merkle proof para verificar si un balance o transacción está incluido en el lote. Muchos zk-Rollups utilizan funciones hash optimizadas para circuitos (como Poseidon) en la construcción del árbol, aunque el principio de verificación no varía.
En diciembre de 2025, la mayoría de las soluciones layer 2 relevantes siguen empleando Merkle roots para pruebas de estado por lotes y las combinan con soluciones de disponibilidad de datos (publicando datos brutos on-chain o en capas especializadas) para garantizar que cualquiera pueda reconstruir y verificar los cambios de estado.
La verificación de un Merkle proof consiste en partir del hash de la hoja y combinarlo sucesivamente con los branch hashes proporcionados para comprobar si se alcanza el root hash conocido.
Paso 1: Reunir los materiales. Se necesita: (1) El hash del dato a verificar (hash de hoja); (2) una lista ordenada de branch hashes; (3) el root hash objetivo. La información de dirección (izquierda/derecha) indica cómo concatenar los hashes en cada paso.
Paso 2: Comenzar desde la hoja. Según la dirección en cada nivel, concatena el hash de hoja con el branch hash correspondiente en orden y hashea para obtener el nodo padre.
Paso 3: Repetir el proceso. Continúa con los branch hashes siguientes hasta alcanzar el resultado final.
Paso 4: Comparar con el root hash. Si el resultado final coincide con el root hash publicado, se demuestra que el dato está incluido en el lote; si no, la prueba es inválida.
Por ejemplo, en la implementación de prueba de reservas de Gate, los usuarios reciben su hash de entrada anónimo, los branch hashes relevantes y el root hash. Siguiendo estos pasos de forma local confirman que “mis activos están incluidos”, aunque esto no implica que los fondos estén ya on-chain ni que sean inmediatamente retirables; la gestión de fondos y los informes de auditoría de la plataforma deben revisarse.
Los Merkle trees dependen de la seguridad de los algoritmos hash subyacentes. Hashes actuales como SHA‑256 y Keccak se consideran seguros, aunque en teoría podrían verse comprometidos en el futuro; los algoritmos deben actualizarse conforme al consenso de la industria.
Los Merkle trees solo verifican la inclusión, pero no garantizan la exactitud ni la integridad de los datos. Por ejemplo, la proof-of-reserves muestra únicamente que una entrada está incluida; no evita el doble conteo ni asegura la divulgación total de pasivos. Las auditorías externas, los flujos on-chain y las ventanas temporales deben emplearse conjuntamente para una evaluación exhaustiva.
El coste de actualización y el diseño del árbol también son relevantes. Los conjuntos de datos que cambian rápidamente requieren variantes y estrategias de almacenamiento eficientes; de lo contrario, las actualizaciones pueden causar recomputaciones innecesarias. Los errores de implementación (como el orden incorrecto o la concatenación inconsistente) pueden provocar fallos de verificación o vulnerabilidades.
La disponibilidad de datos representa otro riesgo. Si los datos originales no se publican o no son accesibles, incluso con un root hash la reconstrucción y auditoría resultan complejas. Los Rollups mitigan esto publicando los datos por lotes on-chain o en capas especializadas para mejorar la transparencia.
El principio fundamental de los Merkle trees es “usar hashes como huellas digitales y agregación jerárquica”: comprimir grandes conjuntos de datos en un solo root hash para que cualquiera pueda verificar la inclusión con solo unos branch hashes. Son la base del modelo SPV de Bitcoin, la gestión de estado en Ethereum, los compromisos de estado en Rollups y los sistemas de proof-of-reserves en exchanges. Para una comprensión práctica: construye un Merkle tree sencillo con ocho hojas y calcula manualmente su raíz; consulta Merkle roots reales de bloques de Bitcoin en exploradores; finalmente, realiza una verificación local con los materiales de proof-of-reserves de Gate, conectando la teoría con la práctica.
Los Merkle trees enlazan los datos a través de múltiples capas de hashing; cualquier alteración en cualquier nivel cambia por completo el root hash superior. Los verificadores solo deben comparar el root hash para detectar de inmediato cualquier manipulación. Este sistema permite a las blockchains validar grandes volúmenes de transacciones con costes mínimos.
Una light wallet no necesita descargar todos los datos de transacciones; solo almacena localmente los encabezados de bloque y los Merkle roots. Cuando quieres verificar tu transacción, la wallet solicita un “Merkle proof” (la ruta desde tu transacción hasta la raíz) a los nodos completos. Con solo unos pasos de hashing, la wallet puede confirmar la inclusión, permitiendo una verificación rápida incluso en dispositivos móviles sin sincronizar grandes volúmenes de datos blockchain.
Las soluciones Rollup usan Merkle trees para comprimir miles de transacciones de Layer 2 en un único root hash que se envía a la mainnet de Ethereum. La mainnet solo necesita validar esa raíz para confirmar todas las transacciones subyacentes, lo que reduce drásticamente los costes on-chain. Los usuarios disfrutan de transacciones rápidas en Layer 2 con garantías de seguridad del nivel principal.
Si los Merkle roots son idénticos, ambos árboles contienen exactamente los mismos datos organizados en el mismo orden. Esta propiedad es esencial para las blockchains: si tu conjunto de transacciones produce una raíz idéntica a la de mineros o validadores, puedes demostrar que has visto la misma lista de transacciones. Si las raíces difieren, los datos han sido modificados.
SPV es la base de las light wallets en Bitcoin. La wallet descarga únicamente los encabezados de bloque (que incluyen los Merkle roots), no todos los conjuntos de transacciones. Para verificar transacciones, solicita un “Merkle path” a los mineros, hasheando hasta comprobar si la transacción está incluida en ese bloque. Esto permite una verificación segura incluso con almacenamiento limitado en el dispositivo.


