Árbol de Merkle

Un árbol hash de Merkle (en inglés: Merkle hash tree) o árbol de Merkle o árbol hash es una estructura de datos en árbol, binario o no, en el que cada nodo que no es una hoja está etiquetado con el hash de la concatenación de las etiquetas o valores (para nodos hoja) de sus nodos hijo.Permite que gran número de datos separados puedan ser ligados a un único valor de hash, el hash del nodo raíz del árbol.En sus aplicaciones prácticas, normalmente el hash del nodo raíz va firmado para asegurar su integridad y que la verificación sea totalmente fiable.Además permiten que los datos de un bloque puedan ser entregados por partes: un nodo puede descargar solamente la cabecera de un bloque (árbol) desde una fuente, y otra pequeña parte del árbol relevante para él, desde otra fuente, y todavía asegurar que los datos son correctos.La razón por lo que esto funciona es porque los hashes se propagan hacia arriba: si un usuario malintencionado intenta hacer un cambio en una transacción falsa en la parte inferior del árbol de Merkle, este cambio provocará un cambio en el nodo superior y seguidamente otro cambio en el nodo por encima de este, hasta que finalmente, se produzca un cambio en la raíz del árbol y por tanto en el hash del bloque, haciendo que el protocolo tenga que registrarlo como un bloque completamente diferente (y casi con toda seguridad con una prueba de trabajo inválida).
Un ejemplo de árbol de Merkle binario. Los hashes 0-0 y 0-1 son los valores de los hash de los bloques de datos 1 y 2 respectivamente, y 0 es el hash de la concatenación de hashes 0-0 y 0-1.