Descripción general
Un árbol de Merkle (también llamado árbol de hash) es una estructura de datos inventada por Ralph Merkle en 1979 que permite la verificación eficiente y segura del contenido de grandes conjuntos de datos. En Bitcoin, los árboles de Merkle se utilizan para organizar todas las transacciones dentro de un bloque en una estructura jerárquica de hashes, culminando en una única raíz Merkle que se almacena en el encabezado del bloque.
Estructura
Nivel 3 (Raíz): H(ABCD)
/ \
Nivel 2: H(AB) H(CD)
/ \ / \
Nivel 1: H(A) H(B) H(C) H(D)
| | | |
Nivel 0: Tx A Tx B Tx C Tx D
(Hojas)
H() = hash SHA-256 doble
Cada hoja es el hash de una transacción. Cada nodo interno es el hash de sus dos hijos concatenados. Esto continúa hacia arriba del árbol hasta que queda un único hash raíz.
Eficiencia de las pruebas Merkle
La ventaja clave de los árboles de Merkle es que puedes demostrar que una transacción está incluida en un bloque sin descargar todas las transacciones. Una prueba Merkle para una transacción en un bloque con N transacciones requiere solo log2(N) hashes.
Para demostrar que Tx B está en el bloque, necesitas:
1. H(A) — hermano en nivel 1
2. H(CD) — hermano en nivel 2
3. Raíz Merkle para comparar
Verificar: H(H(H(A) + H(B)) + H(CD)) == Raíz Merkle
Para un bloque con 4,000 transacciones, una prueba Merkle requiere solo alrededor de 12 hashes en lugar de los 4,000 hashes de transacción. Esto permite que los clientes SPV verifiquen la inclusión de transacciones con un ancho de banda mínimo.
Malentendidos comunes
Los árboles de Merkle no cifran datos — solo proporcionan verificación de integridad. Cualquiera puede ver las transacciones; el árbol de Merkle simplemente permite una prueba eficiente de que una transacción dada fue incluida. Además, la implementación del árbol de Merkle de Bitcoin usa doble SHA-256 (hasheando dos veces), no SHA-256 simple.