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".
Romper el árbol de 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 sea el mismo que el conjunto original de transacciones, pero no para 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 al mismo tiempo. En cambio, cada transacción se codifica, luego cada par de transacciones se concatena y se codifica, 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 a continuación, "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 conocen como "hojas", los hashes intermedios como "ramas" y el hash en la parte superior como "raíz". La raíz de Merkle de un bloque dado 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 de 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: 00000000000000000000bfc767ef8bf28c42cbd4bdbafd9aa1b5c3c33c2b089594 en el caso del bloque # 48 del caso # 48 del caso # 48 del caso # 48. Este hash no se incluye realmente en el bloque relevante, sino en el siguiente; Es distinto de la raíz de Merkle.
El árbol Merkle es útil porque permite a los usuarios verificar una transacción específica sin descargar la cadena de bloques completa (más de 130 gigabytes a fines de agosto de 2017). Por ejemplo, supongamos 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 a la red sobre H D, y devuelve H C, H AB y H EFGH. El árbol de Merkle le permite verificar que todo se tenga en cuenta con tres hashes: dado H AB, H C, H EFGH, y la raíz H ABCDEFGH, H D (el único hash faltante) tiene que 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 hashing criptográfico.