Árbol de Merkle (árbol hash de Blockchain)

Fiabilidad

¿Qué es un árbol de Merkle?

Un árbol de Merkle, también conocido como árbol de hash, es una estructura de datos utilizada en criptografía, cadenas de bloques y algunas criptomonedas para verificar la integridad de los elementos de datos dentro de un conjunto de datos mayor.

Los árboles de Merkle constan de bloques de datos, cada uno de los cuales se convierte en un hash único. A continuación, los hash individuales se emparejan y se vuelven a convertir en hash, un proceso conocido como concatenación. Este proceso continúa hasta que sólo queda un hash, la raíz Merkle.

La raíz proporciona un único punto de referencia para todo el conjunto de datos.

Definición de Árbol de Merkle

Las estructuras de árbol son estructuras de datos jerárquicas que tienen una relación padre-hijo entre los nodos. Con el tiempo, colocar las raíces de un árbol en la parte superior de un diagrama se ha convertido en una forma estándar de representar estructuras de árbol en informática.

La razón de la orientación invertida puede atribuirse a convenciones históricas en la diagramación. Por ejemplo, muchas representaciones jerárquicas, como los organigramas, se leen naturalmente de arriba abajo.

ejemplo árbol merkle
Techopedia

 

Cómo se crean los árboles de Merkle

Los árboles de Merkle se construyen utilizando funciones hash criptográficas que convierten los datos de entrada en cadenas de caracteres de tamaño fijo llamadas hashes. Cada hash del árbol representa un elemento de datos específico o un bloque de elementos de datos.

A medida que el árbol se construye desde la base (nivel de hoja del árbol), cada hash posterior representa una combinación de los hashes hijos del padre, hasta que el hash superior, la raíz Merkle, representa efectivamente la totalidad de los datos de entrada.

Para construir un árbol de Merkle, primero se divide todo el conjunto de datos en segmentos más pequeños llamados bloques. Si no hay un número par de bloques, el último bloque se duplica para conseguir paridad. A cada bloque se le asigna un hash, que se convierte en un nodo hoja del árbol.

Para establecer la jerarquía del árbol, se combinan (concatenan) dos hashes de nodos hoja vecinos. El par concatenado se somete a un hash para producir un nodo padre que se sitúa por encima de los dos nodos hoja originales.

El proceso de emparejamiento y hash continúa capa por capa, ascendiendo por el árbol hasta que sólo queda un hash en la parte superior. El hash final, conocido como “raíz de Merkle” o “hash raíz”, resume todo el conjunto de datos.

Cómo se utilizan los árboles de Merkle para la verificación de datos

Los árboles de Merkle permiten verificar rápida y eficazmente elementos de datos específicos que forman parte de un gran conjunto de datos mediante la inspección de un subconjunto de hashes del árbol. Básicamente, el proceso consiste en comprobar la ruta desde el bloque de datos en cuestión hasta la raíz Merkle.

A continuación se presenta un desglose simplificado del proceso de verificación:

  • Empieza por el proceso de verificación localizando el hash del bloque de datos específico que se va a verificar.
  • Sube por el árbol. En cada nivel del árbol, localiza el hash adyacente (hermano) al hash actual, concaténelo (combínelo) con su hermano y haga un hash de la combinación resultante.
  • Compara el hash recién calculado con el hash del nodo padre en el árbol. Si coincide, continúa el proceso hasta llegar a la raíz Merkle.

Siempre que los nuevos hashes calculados coincidan con los hashes del nodo padre en el árbol original, se podrá verificar la integridad del bloque de datos específico en cuestión.

(Cualquier alteración en los datos causaría discrepancias en los hashes de la ruta o en la raíz Merkle).

El papel de los árboles de Merkle en Blockchains y Bitcoin

Los árboles de Merkle son útiles para comprobar inconsistencias y validar cadenas de bloques.

Al organizar los hashes de las transacciones en un Árbol de Merkle, cualquier nodo de la cadena de bloques puede verificar rápida y eficientemente si una transacción en particular existe dentro de un bloque. Esta estructura también ayuda a garantizar la integridad de los datos de un bloque concreto, ya que si cambia incluso una sola transacción, la raíz Merkle (el hash superior del árbol) también cambiará y permitirá detectar incoherencias.

En el protocolo Bitcoin, cuando se añade un nuevo bloque a la cadena de bloques, cada bloque incluye la raíz Merkle de un árbol Merkle en la cabecera. Esto crea automáticamente una “prueba de inclusión” para cada transacción de Bitcoin.

La prueba de inclusión es una forma de demostrar que una transacción específica forma parte de un bloque sin tener que revelar o comprobar todas las transacciones de ese bloque. Esta prueba es especialmente crucial para los monederos ligeros SPV (Simplified Payment Verification) que no descargan la cadena de bloques completa para verificar las transacciones.

Los árboles de Merkle también desempeñan un papel en la “prueba de reservas”. La prueba de reservas es un método utilizado por las bolsas de criptomonedas y los proveedores de monederos para demostrar que tienen fondos suficientes para cubrir los saldos de sus clientes.

Temas relacionados

Margaret Rouse
Experta en tecnología

Margaret Rouse es una galardonada escritora técnica y profesora conocida por su habilidad para explicar temas técnicos complejos a una audiencia de negocios no técnica. Durante los últimos veinte años, sus explicaciones han aparecido en sitios web de TechTarget y ha sido citada como autoridad en artículos del New York Times, Time Magazine, USA Today, ZDNet, PC Magazine y Discovery Magazine. La idea de diversión de Margaret es ayudar a profesionales de TI y negocios a aprender a hablar los idiomas altamente especializados de cada uno. Si tienes una sugerencia para una nueva definición o cómo mejorar una explicación técnica,…