CriptoDinero
Bitcoin

Àrboles de Merkle y Blockchain – ¿Cuál es su rol en Bitcoin?

Alan Savedra
03 January, 2020

Una descripción muy sintética y no técnica para comprender superficialmente la relación entre los árboles de Merkle y blockchain…

¿Qué son los árboles de Merkle?

Conocidos en inglés como «Merkle Trees», un árbol de Merkle es una forma de estructurar datos, que permite ahorrar espacio y reducir las exigencias de potencia de procesamiento informático, al tiempo que ofrece un modo de autentificar rápida y eficientemente gran cantidad de información.

Implementados en Bitcoin, los árboles Merkle también se usan en otras criptomonedas y proyectos criptográficos, incluyendo Ethereum, si bien utiliza otra variante denominada ‘Merkle Patricia Tree’.

Aportes de los árboles Merkle en Bitcoin de 1 vistazo

  • Reduce mucho la cantidad de datos que deben almacenarse a efectos de la verificación.
  • Prueba la validez e integridad de los datos, siendo suficiente con una relativamente pequeña cantidad de memoria y de información.
  • Verifica las transacciones en un bloque, sin necesidad de que el usuario descargue y ejecute un nodo completo.

¿Quién inventó los árboles de Merkle?

Ralph Merkle, científico de la computación y uno de los pioneros de la criptografía asimétrica o de clave pública y el hash criptográfico, creó este modelo a fines de la década del 70′, cuando presentó su trabajo ‘A Certified Digital Signature’ (1979) -‘Una firma digital certificada‘-.

Dicho artículo describe un sistema para verificar grandes cuerpos de datos en forma muy rápida.

¿Cuál es el vínculo entre los árboles de Merkle y Bitcoin?

En el «libro blanco» de Bitcoin, Satoshi Nakamoto cita el trabajo ‘Protocols for public key cryptosystems‘ (1980) de Ralph Merkle.

El uso de una estructura de árbol de Merkle en Bitcoin busca prevenir que el almacenamiento de transacciones (datos) sea un problema, además de servir como un mecanismo rápido para la verificación de las mismas.

Este modelo de organización de datos ayuda a dar un mayor grado de confianza, eficiencia y seguridad a la blockchain, ese historial digital y público donde se registran en forma irreversible las transacciones de los usuarios.

Resumiendo demasiado, podría decirse que estos árboles de datos proporcionan una alternativa para autentificar la información en una red descentralizada.

Para reducir las exigencias de espacio y los tiempos de procesamiento de la computadora al momento de procesar y validar las transacciones, resulta oportuno usar la menor cantidad de datos posibles.

Aquí entran en escena los árboles de Merkle y su capacidad de depuración.

La cadena de bloques se compone de muchísimos bloques. Cada uno de estos pueden contener varios miles de transacciones. Para gestionar esta escala de datos, se usan estos árboles de transacciones, los cuales permiten resolver y evitar problemas relacionados con el espacio de memoria y la potencia informática.

Sin ellos, la cantidad de potencia informática y almacenamiento necesarios serían demasiado costosos de ejecutar.

Su rol es central en la blockchain de Bitcoin y otras criptomonedas, ya que funciona como una pauta de certificación, al validar que las versiones posteriores del registro contienen todos los datos de la versión anterior, presentando la información en orden cronológico.

Sirven como una prueba de la consistencia e integridad de los datos registrados, saltando a la vista si se han agregado o manipulado registros previos en la cadena de bloques.

¿Cómo funcionan los árboles de Merkle?

Bajo un tipo de estructura específica, similar a un arbolito, prácticamente cualquier cantidad de datos puede organizarse en árboles Merkle.

Estos se encuentran coronados en su parte superior por lo que se conoce como «hash raíz», una especie de sello que sirve para la certificación de los datos.

El modelo propuesto por Merkle se creó como un método para autentificar los datos en un «archivo público». En vez de verificar cada entrada de datos dentro del árbol, el protocolo aplica un método a todo el conjunto, conocido como función hash unidireccional.

Como explica el propio Markle en el artículo citado en el white paper de Bitcoin:

«… Es posible autenticar selectivamente entradas individuales en el archivo público sin tener que conocer todo el archivo público utilizando la autenticación Merkle # s -tree (…) Cualquier intento de introducir cambios en el archivo público implicará R; H (archivo público alterado), un hecho fácilmente detectable».

Las funciones hash son un proceso matemático que convierte los datos en un conjunto único de números y letras.

En lugar de validar toda la información en todo el árbol completo, se exige solo la potencia informática de CPU necesaria para verificar una pequeña cantidad de datos y así determinar su validez.

Estas funciones hash son algoritmos que toman entradas, por ejemplo transacciones, generando salidas únicas.

Pretender hacer cambios en la entrada de un hash produce, sin vuelta atrás, cambios en su salida. Al intentar modificar cualquier dato cambia su correspondiente hash y también su hash raíz.

Se trata de un esquema usado para verificar y a la vez asegurar la integridad de los datos archivados, al certificar que no fueron cambiados, es decir falseados.

¿Qué es la raíz del árbol Merkle?

Los árboles Merkle toman la información de transacciones, cada una con su correspondiente ID, generando mediante un proceso matemático un código único de 64 caracteres, conocido como «raíz Merkle» (‘Merkle root’).

La raíz es un elemento crucial del árbol Merkle, porque hace posible una rápida y precisa verificación de los datos contenidos en bloques.

Cada bloque tiene una raíz Merkle, es decir un código único.

¿Cómo se organiza el árbol Merkle en la blockchain de Bitcoin?

Los árboles Merkle se organizan en pares de datos. Con esta estructura aparecen todas las transacciones registradas en un bloque en la blockchain.

Árbol de Merkle – Ejemplo básico

  • Si, por ejemplo, un solo bloque contiene 100 transacciones, el árbol Merkle las agruparía en 50 pares.
  • Luego, estos 50 pares de transacciones se hashean para obtener 50 códigos nuevos y únicos de 64 caracteres.
  • Esos 50 códigos se convertirían en 25 pares.
  • Así, el proceso se repite, cada vez generando la mitad del número de códigos hasta que quede un único código, llamado «raíz Merkle».

Si el hash raíz no coincide, esto sirve como una muestra segura de que los datos han sido alterados.

Además de organizar los datos con un formato simplificado, los árboles de Merkle ayudan a determinar la validez de la información contenida en una cadena de bloques, evaluando las conexiones de «ramas» del árbol que van hasta su «raíz».

Árboles de Merkle en el libro blanco de Bitcoin

Optimización del espacio

El documento técnico de Bitcoin contempla la posibilidad de desechar transacciones viejas para así ahorrar espacio.

En el capítulo 7 del libro blanco de Bitcoin, titulado ‘Reclaiming Disk Space’ (‘Recuperando espacio en disco’), Nakamoto escribe:

«Cuando la última transacción de una moneda está enterrada bajo suficientes bloques, las transacciones que se han gastado antes que ella se pueden descartar para ahorrar espacio de disco. Para facilitar esto sin romper el hash del bloque, las transacciones son hasheadas en un Árbol de Merkle, incluyendo solo la raíz en el hash del bloque. Los bloques viejos pueden compactarse podando ramas del árbol. Los hashes interiores no necesitan ser guardados».

«Una cabecera de bloque sin transacciones pesaría unos 80 bytes. Si suponemos que los bloques se generan cada 10 minutos, 80 bytes × 6 × 24 × 365 = 4.2MB por año. Siendo habitual la venta de ordenadores con 2GB de RAM en 2008, y con la Ley de Moore prediciendo un crecimiento de 1.2GB anual, el almacenamiento no debería suponer un problema incluso si hubiera que conservar en la memoria las cabeceras de bloque».

Verificación simplificada

En el capítulo 8, titulado ‘Simplified Payment Verification’ (‘Verificación de pago simplificada’), se señala que es posible sumarse a validar transacciones, sin necesidad de ejecutar un nodo completo en la red Bitcoin.

La «rama Merkle» es uno de los componentes que hace posible la verificación simplificada de pagos.

En lugar de tener que descargar y ejecutar un nodo completo, el usuario sólo necesita obtener una copia de los encabezados de bloques de la «cadena más larga de proof-of-work» y obtener seguidamente la «rama de Merkle».

Si bien no puede verificar una transacción por sí misma, sí puede asociarla a la cadena existente y saber que un nodo la ha validado.

«Los bloques añadidos posteriormente confirman además que la red la ha aceptado».

Gracias a los árboles Merkle, más usuarios pueden participar de la red y validar los datos de la cadena de bloques, sin tener que descargar todos los datos contenidos en cada bloque.

Fuentes:

White paper Bitcoin

Decrypt

Selfkey.org

Te Puede Interesar:



Copyright 2016 - 2024 © CriptoDinero - Todos los derechos reservados