Inicio Arquitectura técnica Árboles de Merkle

Árboles de Merkle

Un árbol de Merkle es una estructura de datos que permite verificar eficientemente que una transacción está incluida en un bloque sin necesidad de descargar todas las transacciones. Es la pieza clave que hace posible la verificación ligera (SPV) en Bitcoin.

¿Cómo funciona?

Cada transacción del bloque se hashea individualmente. Después, los hashes se agrupan de dos en dos y se hashean juntos. Este proceso se repite nivel a nivel hasta obtener un único hash: la raíz de Merkle (Merkle root), que se incluye en la cabecera del bloque.

La estructura resultante es un árbol binario donde cada nodo es el hash de sus dos hijos. Si cualquier transacción cambia, la raíz de Merkle cambia, lo que invalida el bloque entero.

Verificación eficiente

Para demostrar que una transacción concreta está en un bloque, solo necesitas proporcionar los hashes del «camino» desde esa transacción hasta la raíz (lo que se llama prueba de Merkle). En un bloque con 4.000 transacciones, esto requiere solo ~12 hashes en lugar de las 4.000 transacciones completas. Es una verificación logarítmica: O(log n).

¿Por qué importa?

Los árboles de Merkle permiten que nodos ligeros (SPV) verifiquen transacciones sin descargar la blockchain entera. También son la razón por la que la cabecera del bloque es tan compacta (80 bytes): contiene la raíz de Merkle en lugar de todas las transacciones.

Errores habituales

  • Confundir la raíz de Merkle con el hash del bloque (la raíz de Merkle es un componente de la cabecera; el hash del bloque es el hash de la cabecera completa)
  • Pensar que los nodos SPV son igual de seguros que los nodos completos (son más ligeros pero confían en que los mineros no les mintieron)

Conceptos relacionados

Fuentes primarias

  • Whitepaper de Bitcoin, sección 8
  • Ralph Merkle, «Secrecy, Authentication, and Public Key Systems» (1979)