Árbol Merkle
¿Qué es un árbol Merkle?
Un árbol de Merkle es una estructura de datos que se utiliza en aplicaciones informáticas. En bitcoin y otras criptomonedas, los árboles Merkle sirven para codificar datos de blockchain de manera más eficiente y segura.
También se les conoce como «árboles hash binarios».
Rompiendo el árbol Merkle
En la cadena de bloques de bitcoin, un bloque de transacciones se ejecuta a través de un algoritmo para generar un hash, que es una cadena de números y letras que se pueden usar para verificar que un conjunto de datos dado es el mismo que el conjunto original de transacciones, pero no obtener el conjunto original de transacciones. Sin embargo, el software de Bitcoin no ejecuta todo el bloque de datos de transacciones, lo que representa un promedio de transacciones de 10 minutos, a través de la función hash a la vez. En su lugar, cada transacción tiene un hash, luego cada par de transacciones se concatenan y se combinan, y así sucesivamente hasta que haya un hash para todo el bloque. (Si hay un número impar de transacciones, una transacción se duplica y su hash se concatena consigo mismo).
Visualizada, esta estructura se asemeja a un árbol. En el diagrama siguiente, «T» designa una transacción, «H» un hash. Tenga en cuenta que la imagen está muy simplificada; un bloque promedio contiene más de 500 transacciones, no ocho.
Los hash en la fila inferior se denominan «hojas», los hash intermedios como «ramas» y el hash en la parte superior como la «raíz». La raíz de Merkle de un bloque determinado se almacena en el encabezado: por ejemplo, la raíz de Merkle del bloque # 482819 es e045b18e7a3d708d686717b4f44db2099aabcad9bebf968de5f7271b458f71c8. La raíz se combina con otra información (la versión del software, el hash del bloque anterior, la marca de tiempo, el objetivo de dificultad y el nonce) y luego se ejecuta a través de una función hash para producir el hash único del bloque: 000000000000000000bfc767ef8bf28c42cbd4bdbafd9aa1b5c3c33c2b089594 en el caso del bloque # 482819. Este hash no se incluye realmente en el bloque relevante, sino en el siguiente; es distinto de la raíz de Merkle.
El árbol de Merkle es útil porque permite a los usuarios verificar una transacción específica sin descargar toda la cadena de bloques (más de 130 gigabytes a fines de agosto de 2017). Por ejemplo, digamos que desea verificar que la transacción T D esté incluida en el bloque del diagrama anterior. Si tiene el hash raíz (H ABCDEFGH ), el proceso es como un juego de sudoku: consulta la red sobre H D y devuelve H C, H AB y H EFGH. El árbol de Merkle le permite verificar que todo se tiene en cuenta con tres hash: dado H AB, H C, H EFGH, y la raíz H ABCDEFGH, H D (el único hash que falta) debe estar presente en los datos.
Los árboles Merkle llevan el nombre de Ralph Merkle, quien los propuso en un artículo de 1987 titulado » Una firma digital basada en una función de cifrado convencional «. Merkle también inventó el hash criptográfico.