Tabla de contenidos
¿Qué es un árbol Merkle?
¿Cómo funciona un árbol Merkle?
¿Por qué se utiliza Merkel Root en Bitcoin?
Minería
verificar
Resumir
¿Qué es un árbol Merkle?
A principios de la década de 1980, Ralph Merkle, un conocido científico informático en el campo de la criptografía de clave pública, propuso el concepto de árbol de Merkle.
La estructura de árbol de Merkle puede verificar eficazmente la integridad del conjunto de datos y es más eficaz en redes de igual a igual que requieren que los participantes compartan y verifiquen información de forma independiente.
Las funciones hash están en el corazón de la estructura del árbol de Merkle. Por lo tanto, le recomendamos que comprenda qué es el hash antes de continuar con este artículo.
¿Cómo funciona un árbol Merkle?
Digamos que desea descargar un archivo grande. Con las descargas de software de código abierto, a menudo es necesario comprobar si el hash del archivo descargado coincide con el hecho público por el desarrollador. Si coinciden, los dos documentos son consistentes.
Si los hashes no coinciden, estás en problemas. O descargó un archivo malicioso disfrazado de software o lo descargó incorrectamente y el resultado final es que el archivo no se puede utilizar. Si la descarga es incorrecta, definitivamente se sentirá molesto porque ha estado esperando durante mucho tiempo a que se descargue el archivo. Ahora bien, si empiezas de nuevo, debes esperar que no vuelva a ocurrir el mismo problema.
¿Alguna vez has considerado si existe una manera más fácil de resolver este problema? Aquí es donde entra en juego el árbol Merkle. Los árboles Merkle pueden dividir archivos en múltiples bloques de datos. Por ejemplo, un archivo de 50 GB se puede dividir en 100 copias, cada una de las cuales tiene un tamaño de 0,5 GB. Luego, podrás descargarlos uno por uno. Así funcionan los torrents.
La fuente del archivo en este momento es un valor hash, llamado raíz de Merkle. Este valor hash único representa todos los bloques de datos que componen el archivo. Además, las raíces de Merkle facilitan la validación de datos.
Para facilitar la comprensión ponemos un ejemplo. A continuación, un archivo de 8 GB se divide en ocho partes y cada fragmento se denomina de la A a la H respectivamente. Luego, cada fragmento se conecta a una función hash, lo que da como resultado ocho valores hash diferentes.

Mediante la función hash se calculan los valores hash de los ocho fragmentos.
Esperemos que la explicación del ejemplo anterior sea fácil de entender. Tenemos los valores hash de todos los fragmentos. Si uno de ellos es incorrecto, ¿podemos encontrar el problema comparándolo con el archivo fuente? Quizás, pero sigue siendo extremadamente ineficiente. Si el archivo tiene decenas de miles de fragmentos, ¿necesitamos analizar todos los fragmentos y comparar los resultados en detalle?
innecesario. Solo necesitamos combinar un par de valores hash y realizar una operación hash combinada. Es decir, hacemos hash con hA + hB, hC + hD, hE + hF y hG + hH. El resultado serán cuatro valores hash. Luego pasamos a la siguiente ronda de hashes combinados hasta que obtengamos dos valores hash. Estos dos valores hash luego se combinan y finalmente se obtiene el valor hash principal, que es la raíz de Merkle (también llamada valor hash raíz).

La estructura parece un árbol al revés. La fila inferior de hojas se combina entre sí para crear nudos y finalmente raíces.
Ahora tenemos la raíz de Merkle que representa el archivo descargado. Compare el hash raíz con el valor del archivo fuente y, si coincide, ¡todos estarán contentos! Una vez que los valores hash son diferentes, demuestra que los datos han sido manipulados. En otras palabras, uno o más fragmentos generaron un valor hash diferente. Por lo tanto, incluso pequeñas modificaciones de datos pueden cambiar completamente la raíz de Merkel.
Afortunadamente, también es fácil comprobar si hay segmentos erróneos. Supongamos que el error es hE. Primero, pedimos a otros dos hashes (hABCD y hEFGH) para generar la raíz de Merkle. Nuestro valor hABCD debe coincidir con el de otros, lo que demuestra que el subárbol está libre de errores. Si hEFGH no coincide, podemos corregir el error desde aquí. Luego pregunte a otros por sus hashes de hEF y hGH y compárelos con el suyo. Si la hGH está bien, hEF es la culpable. Finalmente, comparamos los valores hash de hE y hF. Una vez que encontramos que la fuente del error es hE, podemos volver a descargar el bloque de datos.
En resumen, la función del árbol Merkle es dividir los datos en varias partes y luego realizar operaciones hash repetidamente para finalmente formar la raíz de Merkle, de modo que pueda verificar de manera efectiva dónde ocurren los datos erróneos. En la siguiente sección, presentaremos otras aplicaciones interesantes.
¿Quieres comenzar tu viaje con las criptomonedas? ¡Vaya a Binance y compre Bitcoin ahora!
¿Por qué se utiliza Merkel Root en Bitcoin?
Hay muchos casos de uso para los árboles Merkle, pero este artículo se centra en su importante papel en blockchain. Bitcoin y muchas criptomonedas son inseparables de los árboles Merkle. El árbol Merkle es una parte integral de cada bloque, generalmente ubicado en el encabezado del bloque. A través del valor hash de transacción (TXID) de cada transacción del bloque, podemos obtener las hojas.
En este contexto, la raíz de Merkel tiene varios propósitos. Echemos un vistazo a la aplicación de Merkle Root en la minería de criptomonedas y la verificación de transacciones.
Minería
Los bloques de Bitcoin constan de dos partes. La primera parte es el encabezado del bloque, que tiene un tamaño fijo y contiene metadatos del bloque. La segunda parte es el cuerpo del bloque, que es de tamaño variable pero normalmente mucho más grande que el encabezado del bloque y contiene la lista de transacciones.
Los mineros necesitan analizar repetidamente los datos hasta que se produzca un resultado que cumpla con ciertas condiciones antes de poder extraer un bloque válido. Para obtener el resultado correcto, deben intentarlo billones de veces. Con cada intento, el minero cambia el número aleatorio en el encabezado del bloque, el valor Nonce, para generar resultados diferentes. Sin embargo, el resto del bloque sigue siendo el mismo y las miles de transacciones que contiene aún deben procesarse cada vez.
Merkel ha simplificado enormemente el proceso. Cuando comienza la minería, todas las colas de transacciones se empaquetan y construyen en un árbol Merkle, y el valor hash raíz de 32 bits generado se coloca en el encabezado del bloque. Entonces, no hay necesidad de aplicar hash a todo el bloque, solo al encabezado del bloque.
Este método evita la manipulación de datos y, por lo tanto, es eficaz, ya que permite resumir todas las transacciones de un bloque de manera eficiente en una forma compacta. La lista de transacciones de encabezados de bloque válidos no se puede modificar; de lo contrario, se cambiará la raíz de Merkle. Después de que el bloque se envía a otros nodos, el hash raíz se calcula a partir de la lista de transacciones. Si no coincide con el valor en el encabezado del bloque, el bloque puede rechazarse.
verificar
También podemos utilizar otra propiedad interesante de las raíces de Merkle, que se relaciona con la aplicación de clientes ligeros (nodos que no mantienen una copia completa de la cadena de bloques). Si está ejecutando un nodo en un dispositivo con recursos limitados, no desea descargar y procesar todas las transacciones en un bloque. En su lugar, simplemente solicita una prueba de Merkle, que es una prueba proporcionada por un nodo completo de que una transacción se incluyó en un bloque específico. Esta prueba se conoce mejor como Verificación de pago simple, o SPV, y fue detallada en el documento técnico de Bitcoin de Satoshi Nakamoto.

Para verificar HD, simplemente verifique el hash rojo.
Supongamos que queremos obtener información de transacción sobre el TXID hD. Si se conoce hC, se puede calcular hCD. Luego, a través de hAB, se puede calcular hABCD. Finalmente, al consultar hEFGH, puede verificar si la raíz de Merkle calculada es consistente con el hash de raíz en el encabezado del bloque. Una coincidencia exitosa demuestra que la transacción se incluyó en el bloque, ya que generar el mismo hash usando datos diferentes es casi imposible.
En el ejemplo anterior, solo aplicamos hash tres veces. Sin la certificación de Merkel, se necesitarían siete. Los bloques actuales contienen miles de transacciones y las pruebas de Merkle nos ahorran mucho tiempo y potencia informática.
Resumir
Los árboles Merkle han demostrado ser importantes en aplicaciones informáticas y, como hemos visto, también son valiosos en blockchain. Los árboles Merkle hacen que la verificación de la información en sistemas distribuidos sea más conveniente y evitan la congestión de datos redundantes en la red.
Sin los árboles y las raíces de Merkle, Bitcoin y otros bloques de criptomonedas no serían tan compactos como lo son hoy. Aunque los clientes ligeros carecen de ventajas en términos de privacidad y seguridad, con las pruebas de Merkle, los usuarios pueden verificar que las transacciones se incluyen en bloques con tarifas mínimas.

