Descripción general
La raíz Merkle es un único hash de 32 bytes que se ubica en el vértice de un árbol de Merkle y se compromete criptográficamente con cada transacción incluida en un bloque. Se almacena en el encabezado del bloque, convirtiéndola en una huella compacta de todo el conjunto de transacciones. Cualquier cambio en cualquier transacción del bloque produciría una raíz Merkle completamente diferente.
Cómo se calcula
La raíz Merkle se construye hasheando recursivamente pares de hashes de transacciones (usando doble SHA-256) hasta que solo queda un hash:
Raíz Merkle
/ \
Hash AB Hash CD
/ \ / \
Hash A Hash B Hash C Hash D
| | | |
Tx A Tx B Tx C Tx D
Si hay un número impar de elementos en cualquier nivel, el último elemento se duplica antes de hashear.
Rol en los encabezados de bloque
El encabezado del bloque contiene seis campos: versión, hash del bloque anterior, raíz Merkle, marca de tiempo, objetivo de dificultad (bits) y nonce. Al incluir la raíz Merkle, el encabezado se compromete con el conjunto completo de transacciones sin tener que incluirlas todas directamente. Esto es lo que permite a los clientes ligeros realizar verificación SPV.
Pruebas Merkle
Una prueba Merkle permite verificar que una transacción específica está incluida en un bloque proporcionando solo los hashes hermanos a lo largo del camino desde la transacción hasta la raíz. Esto requiere solo log2(N) hashes para un bloque con N transacciones, haciendo la verificación extremadamente eficiente.
Casos límite
Si un bloque contiene solo la transacción coinbase (sin otras transacciones), la raíz Merkle es simplemente el hash de esa única transacción. La duplicación de elementos impares también puede crear una vulnerabilidad sutil conocida como el problema de maleabilidad del árbol de Merkle, que fue abordado por BIP 98.