¿Qué es un árbol de Merkle?

Los árboles de Merkle se utilizan para la verificación de datos. Es muy eficiente porque se utilizan hashes en lugar de un archivo completo de información.

Resumen

Los árboles de Merkle suelen tener un factor de dos ramas, lo que significa que cada nodo puede tener dos hijos. De nuevo, los árboles de Merkle se implementan típicamente como árboles binarios (onoff o 10), pero de nuevo podrían crearse como un árbol con n hijos por nodo.

Ventajas y métodos

La verificación de los datos es importante y también lo es la sincronización de los mismos. Por ejemplo, cuando se comercia de usuario a usuario se quiere asegurar que los artículos que se envían se reciben, pero también que ellos están enviando los artículos prometidos. La propia columna vertebral de los contratos inteligentes y los sistemas peer-to-peer se basan en la verificación de datos.

En una cadena de bloques, los mismos datos existen en múltiples ubicaciones, si los cambias en una ubicación necesitas cambiarlos en todas las ubicaciones si es un cambio real y verdadero.

Sería demasiado arduo copiar archivos largos y complejos en todos los sistemas cada vez que se cambia algún dato, sólo para verificar un cambio. Un árbol de Merkle se utiliza para limitar la cantidad de información y datos que se envían por la red, enviando sólo un hash para comparar. Cada hash puede ser comparado y luego los hashes de los hashes pueden ser comparados. El único momento en que se necesita desglosar el hash más grande es cuando se detecta una diferencia.

Cuando se detecta una diferencia en un hash, echa un vistazo a las ramas de ese hash. Dado que los ordenadores pueden hacer varias cosas a la vez, puede ejecutar múltiples comparaciones de hash y hacer esta comparación con bastante rapidez.

Para los sistemas distribuidos, no es eficiente comprobar todo el archivo en busca de problemas. Para los sistemas peer-to-peer, ayuda verificar la información incluso de una fuente no confiable. Se puede hacer esto utilizando la fuente más confiable, y el hash comienza en la parte superior y compara los elementos entre sí hasta que se encuentra una pieza que no coincide y se tira, y se busca una nueva fuente.

Protocolo de envío de un Hash

El protocolo de envío de un hash es el siguiente

  1. El ordenador 1 envía un hash de un fichero al ordenador 2.
  2. El ordenador 2 comprueba el hash con la raíz del árbol de Merkle.
  3. Si no hay diferencias, el proceso se completa. En caso contrario,
  4. Al haber una diferencia, el ordenador 2 solicita las raíces de los dos subárboles de ese hash.
  5. El ordenador 1 crea los hashes necesarios y los envía al ordenador 2.
  6. Repite los pasos 4 y 5 hasta encontrar los bloques de datos que son inconsistentes. Es posible encontrar más de un bloque de datos que tenga errores de diferencia.

Casos de uso de Bitcoin y Blockchain

Como se ha dicho anteriormente, los sistemas distribuidos y peer-to-peer utilizan árboles de Merkle. Son muy útiles en los casos en que los datos deben existir en múltiples lugares, y esos datos deben estar sincronizados y ser los mismos.

Bitcoin se almacena en bloques en una cadena de bloques. Ese blockchain se almacena en el ordenador de cada usuario de bitcoin. Las hojas del árbol de Merkle suelen ser hashes de bloques individuales de la cadena de bloques. Es muy importante que los datos de las transacciones se verifiquen y sean los mismos para todos.

Conclusión

El árbol de Merkle es un componente necesario para facilitar la verificación de los datos. Sin él, habría que copiar sectores enteros de la cadena de bloques y compararlos con cada transacción o pregunta de seguridad. Proporciona un almacenamiento de datos eficiente y reduce la cantidad de datos necesarios para verificar los cambios en la cadena de bloques.

El árbol de Merkle permite comparar los hashes y considerarlos viables si coinciden, ahorrando tiempo y potencia de cálculo. Como los hashes son un fragmento del contenido completo, los ordenadores pueden comparar y verificar fácilmente los datos de la cadena de bloques para asegurarse de que no hay errores y reducir los sectores en los que hay diferencias cuando se encuentran.

Deja un comentario