¿Qué es un árbol Merkle? Una guía sencilla para los árboles Merkle

PrincipianteJan 08, 2024
Este artículo habla de los árboles Merkle como el secreto detrás de la verificación eficiente de datos en blockchain, brindando ventajas de velocidad y escalabilidad.
¿Qué es un árbol Merkle? Una guía sencilla para los árboles Merkle

Un árbol Merkle es un método de estructuración de datos que permite verificar la precisión de una gran cantidad de información de manera extremadamente rápida y eficiente. Cada árbol de Merkle genera una única cadena de datos, conocida como raíz de Merkle. Con la raíz de Merkle, además de algunos otros datos, cualquier computadora puede validar de manera eficiente todas las demás entradas en el árbol de Merkle. En la tecnología blockchain, estas entradas son números de identificación de transacciones.

Si estás involucrado en el mundo de blockchain, es posible que te hayas encontrado antes con la frase "árbol merkle". Si bien los árboles Merkle no son un concepto ampliamente comprendido, tampoco son demasiado complicados. Esta publicación explicará los árboles Merkle en un lenguaje sencillo y lo ayudará a comprender cómo hacen posible la tecnología blockchain.

Todo sobre los árboles Merkle

La historia de Merkle Trees comienza allá por 1979 con un tipo llamado Ralph Merkle. Mientras estaba en la escuela de posgrado en la Universidad de Stanford, Merkle escribió un artículo académico llamado "Una firma digital certificada ". En este ensayo, Merkle describió un método para crear firmas digitales y estableció un método nuevo y extremadamente eficiente para crear pruebas criptográficas. En otras palabras, diseñó un proceso para verificar datos que permitiría a las computadoras hacer su trabajo mucho, mucho más rápido que nunca.

Merkle llamó a su idea “Firmas de árbol” o “Autenticación de árbol”. Hoy en día, esta idea se conoce mejor como árbol Merkle, que lleva el nombre del inventor.

No es exagerado decir que Merkle Trees revolucionó el mundo de la criptografía y, por extensión, la forma en que funcionan los protocolos informáticos cifrados. De hecho, los árboles Merkle se mencionan repetidamente en el ensayo de Satoshi Nakamoto de 2008 que presentó Bitcoin al mundo. Se utilizan ampliamente en el protocolo Bitcoin.

Entonces, ¿qué es exactamente un árbol Merkle? Vamos a averiguar.

Primero, es importante comprender el concepto de función hash criptográfica. En pocas palabras, las funciones hash son funciones matemáticas irreversibles que toman una entrada de cualquier longitud (desde un carácter hasta el texto de un conjunto completo de enciclopedias) y producen una salida aleatoria de una longitud fija. Debido a que la salida parece aleatoria y tiene una longitud fija, un atacante no tiene pistas sobre qué entrada creó una salida específica. Las funciones hash también son deterministas, por lo que la misma entrada siempre producirá la misma salida. Por último, las funciones hash son irreversibles, por lo que no hay absolutamente ninguna manera de determinar una entrada a partir únicamente del conocimiento de la salida.

Todas estas propiedades permiten que las funciones hash creen huellas digitales electrónicas de una entrada en particular. Utilizando funciones hash, las redes blockchain crean un hash criptográfico (una huella digital electrónica) de cada transacción. El hash criptográfico de una transacción se denomina simplemente ID de transacción. Para casi todos los protocolos de blockchain, cada ID de transacción es una cadena de datos alfanumérica de 64 caracteres (256 bits).

Si se tiene en cuenta que las cadenas de bloques suelen estar formadas por cientos de miles de bloques, y que cada bloque contiene hasta varios miles de transacciones, se puede imaginar la rapidez con la que la verificación de las transacciones puede volverse computacionalmente difícil. Como tal, es óptimo utilizar la menor cantidad de datos posible al procesar y verificar transacciones. Esto minimiza los tiempos de procesamiento de la CPU y al mismo tiempo garantiza el más alto nivel de seguridad.

Bueno, eso es exactamente lo que hacen los Merkle Trees. En pocas palabras, los Merkle Trees toman una gran cantidad de ID de transacciones, los estructuran de una manera específica y usan funciones hash criptográficas para derivar una única cadena alfanumérica de 64 caracteres que actúa como una huella digital electrónica para todo el conjunto de datos. .

Esta cadena de datos, llamada Merkle Root, es extremadamente importante porque permite que cualquier computadora verifique rápidamente que una transacción específica tuvo lugar en un bloque en particular de la manera más eficiente posible.

¿Qué es una raíz de Merkle?

La única cadena de 256 bits que produce un árbol Merkle se llama raíz de Merkle. Cada bloque en una blockchain tiene exactamente uno. Y, como acabamos de mencionar, Merkle Root es un dato crucial porque permite a las computadoras verificar información con una velocidad y eficiencia increíbles.

Profundicemos un poco más. ¿Cómo se produce una raíz de Merkle? El primer paso es organizar todas las entradas de datos que, en este caso, son ID de transacción. Merkle Trees, por diseño, siempre agrupa todas las entradas en pares. Si hay un número impar de entradas, la última entrada se copia y luego se empareja consigo misma. Esto es válido para todos los ID de transacciones escritos en un bloque de una cadena de bloques.

Por ejemplo, supongamos que un solo bloque contiene un total de 512 transacciones. El árbol Merkle comenzaría agrupando esos 512 ID de transacciones en 256 pares. Luego, esos 256 pares de ID de transacciones pasarían por un proceso matemático (la función hash o algoritmo hash, como a veces se le llama) y tendríamos 256 nuevos hashes criptográficos de 64 caracteres.

El mismo proceso exacto ocurre nuevamente. Esos 256 nuevos hashes se emparejarían y se convertirían en 128 hashes. El proceso se repite, reduciendo el número de hashes a la mitad cada vez, hasta que solo quede un hash. Ese único hash es nuestra raíz Merkle.

Un ejemplo simple de un árbol Merkle

Para aclarar este concepto, veamos un ejemplo muy simple de árbol Merkle. Imagine que se realizaron 8 transacciones en un bloque en particular. En realidad, los ID de transacción tienen 64 caracteres, pero en aras de la simplicidad, supongamos que solo tienen 8 caracteres. Para facilitar aún más las cosas, usemos sólo números (e ignoremos las letras por completo).

Entonces, en este ejemplo, nuestros ocho ID de transacciones serán:

  • 11111111
  • 22222222
  • 33333333
  • 44444444
  • 55555555
  • 66666666
  • 77777777
  • 88888888

Ahora supongamos que el método para combinar los ID de las transacciones es tomar el primer, tercer, quinto y séptimo dígito de cada uno de los dos ID que se combinan y luego simplemente juntar esos números para formar un nuevo código de 8 dígitos.

Por supuesto, en realidad, las matemáticas detrás de los algoritmos hash son mucho más complicadas que esto. Pero para esta sencilla demostración, este sistema elemental será suficiente.

Así se vería nuestro árbol Merkle:

Observe que la cantidad de códigos se reduce a la mitad en cada paso hacia abajo en el árbol Merkle. Comenzamos con 8 ID de transacción y, después de solo 3 pasos, terminamos con un único código: Merkle Root. En este ejemplo, nuestra Merkle Root es el código en el cuadro inferior: 12345678.

El principal beneficio de Merkle Trees es que permiten una verificación de datos extremadamente rápida. Si queremos validar una única ID de transacción, no necesitaríamos volver a verificar cada transacción en el bloque. Más bien, sólo necesitaríamos verificar esa “rama” particular de nuestro árbol Merkle.

Eficiencia y velocidad: los beneficios de los árboles Merkle

Supongamos que queremos validar un ID de transacción en nuestro ejemplo actual. Bob dice que le pagó a Alice una determinada suma de Bitcoin y nos dice que el ID de la transacción es 88888888. También nos envía 3 hashes: 77777777, 55556666 y 11223344. Esa es toda la información que se debe enviar o recibir para verificar el pago de Bob a Alice.

Estos tres hashes, junto con el ID de la transacción en cuestión y la raíz Merkle de este bloque en particular, son los únicos datos necesarios para verificar el pago de Bob a Alice. Estos son muchos menos datos de los que se necesitarían para verificar todo el árbol Merkle. Como resultado, el proceso de verificación es mucho más rápido y eficiente para todos.

Así es como funciona. Ya tenemos Merkle Root del bloque, por lo que Bob no necesita enviarnos eso. Nos envía su ID de transacción y los 3 hashes adicionales que enumeramos anteriormente. También envía un poco de información sobre el orden y la ubicación en la que se utilizarán los hashes. Ahora, todo lo que tenemos que hacer es ejecutar el algoritmo hash en el conjunto de datos que Bob proporcionó.

Comenzamos aplicando hash al primer código 77777777 con el ID de transacción 88888888, lo que nos da el resultado 77778888. Bob no nos envió este código, pero no lo necesitaba porque usamos el mismo algoritmo hash que él. Por lo tanto, recibimos exactamente los mismos resultados.

Luego tomamos el segundo código que Bob nos envió, 55556666, y lo aplicamos con el nuevo código 77778888 que acabamos de derivar. Esto, por supuesto, produce el número 55667788.

Finalmente, combinamos el tercer código que Bob nos dio, 11223344, con el otro código nuevo que recibimos, 55667788, y terminamos con la raíz de Merkle correcta: 12345678.

Observe que solo necesitamos 3 códigos de Bob y solo tuvimos que ejecutar el algoritmo hash tres veces para ver que la transacción de Bob es válida. Eso significa que nuestra computadora ha hecho menos de la mitad del trabajo que hubiera sido necesario para verificar todo el árbol Merkle. El diagrama original de Merkle Tree tiene 15 números y el algoritmo hash debe ejecutarse 7 veces. ¡Pero no es necesaria más de la mitad de ese árbol para verificar la transacción de Bob!

Procedimientos de validación simplificados con Merkle Tree

Este procedimiento es suficiente para verificar que Bob, de hecho, le pagó a Alice esa cierta suma de Bitcoin porque obtuvimos números que, cuando se combinaron con los otros códigos que Bob nos envió, produjeron la misma raíz de Merkle que ya sabíamos que era verdadera. este bloque en particular.

Bob no puede falsificar una transacción porque eso requeriría encontrar una identificación de transacción falsa y un conjunto adicional de códigos falsos que, cuando se pasan por la función hash, producirían la verdadera raíz de Merkle. Las posibilidades de que esto suceda son tan astronómicamente pequeñas que podemos decir con confianza que es imposible.

En este sencillo ejemplo, el ahorro de potencia informática puede no parecer sustancial. Sin embargo, cuando se considera que los bloques en una cadena de bloques pueden contener varios miles de transacciones, es fácil ver cómo los Merkle Trees aumentan la eficiencia de manera tan espectacular.

En resumen, ese es el principal beneficio de un árbol Merkle. Permite a las computadoras verificar información de manera extremadamente eficiente y con muchos menos datos de los que se requerirían sin Merkle Tree.

Los Merkle Trees también son el concepto fundamental de la solución de la plataforma Komodo al problema de escalabilidad de blockchain. La solución de escalamiento de Komodo permite una interoperabilidad completa de blockchain y permitirá a Komodo procesar transacciones más rápido que cualquier otro servicio de procesamiento de pagos en el planeta. Actualmente, la nueva tecnología de escalado de Komodo procesa más de 20.000 transacciones por segundo en un entorno de prueba.

Descargo de responsabilidad:

  1. Este artículo está reimpreso de [komodo]. Todos los derechos de autor pertenecen al autor original [Delton Rhodes]. Si hay objeciones a esta reimpresión, comuníquese con el equipo de Gate Learn y ellos lo manejarán de inmediato.
  2. Descargo de responsabilidad: los puntos de vista y opiniones expresados en este artículo son únicamente los del autor y no constituyen ningún consejo de inversión.
  3. Las traducciones del artículo a otros idiomas están a cargo del equipo de Gate Learn. A menos que se mencione, está prohibido copiar, distribuir o plagiar los artículos traducidos.

¿Qué es un árbol Merkle? Una guía sencilla para los árboles Merkle

PrincipianteJan 08, 2024
Este artículo habla de los árboles Merkle como el secreto detrás de la verificación eficiente de datos en blockchain, brindando ventajas de velocidad y escalabilidad.
¿Qué es un árbol Merkle? Una guía sencilla para los árboles Merkle

Un árbol Merkle es un método de estructuración de datos que permite verificar la precisión de una gran cantidad de información de manera extremadamente rápida y eficiente. Cada árbol de Merkle genera una única cadena de datos, conocida como raíz de Merkle. Con la raíz de Merkle, además de algunos otros datos, cualquier computadora puede validar de manera eficiente todas las demás entradas en el árbol de Merkle. En la tecnología blockchain, estas entradas son números de identificación de transacciones.

Si estás involucrado en el mundo de blockchain, es posible que te hayas encontrado antes con la frase "árbol merkle". Si bien los árboles Merkle no son un concepto ampliamente comprendido, tampoco son demasiado complicados. Esta publicación explicará los árboles Merkle en un lenguaje sencillo y lo ayudará a comprender cómo hacen posible la tecnología blockchain.

Todo sobre los árboles Merkle

La historia de Merkle Trees comienza allá por 1979 con un tipo llamado Ralph Merkle. Mientras estaba en la escuela de posgrado en la Universidad de Stanford, Merkle escribió un artículo académico llamado "Una firma digital certificada ". En este ensayo, Merkle describió un método para crear firmas digitales y estableció un método nuevo y extremadamente eficiente para crear pruebas criptográficas. En otras palabras, diseñó un proceso para verificar datos que permitiría a las computadoras hacer su trabajo mucho, mucho más rápido que nunca.

Merkle llamó a su idea “Firmas de árbol” o “Autenticación de árbol”. Hoy en día, esta idea se conoce mejor como árbol Merkle, que lleva el nombre del inventor.

No es exagerado decir que Merkle Trees revolucionó el mundo de la criptografía y, por extensión, la forma en que funcionan los protocolos informáticos cifrados. De hecho, los árboles Merkle se mencionan repetidamente en el ensayo de Satoshi Nakamoto de 2008 que presentó Bitcoin al mundo. Se utilizan ampliamente en el protocolo Bitcoin.

Entonces, ¿qué es exactamente un árbol Merkle? Vamos a averiguar.

Primero, es importante comprender el concepto de función hash criptográfica. En pocas palabras, las funciones hash son funciones matemáticas irreversibles que toman una entrada de cualquier longitud (desde un carácter hasta el texto de un conjunto completo de enciclopedias) y producen una salida aleatoria de una longitud fija. Debido a que la salida parece aleatoria y tiene una longitud fija, un atacante no tiene pistas sobre qué entrada creó una salida específica. Las funciones hash también son deterministas, por lo que la misma entrada siempre producirá la misma salida. Por último, las funciones hash son irreversibles, por lo que no hay absolutamente ninguna manera de determinar una entrada a partir únicamente del conocimiento de la salida.

Todas estas propiedades permiten que las funciones hash creen huellas digitales electrónicas de una entrada en particular. Utilizando funciones hash, las redes blockchain crean un hash criptográfico (una huella digital electrónica) de cada transacción. El hash criptográfico de una transacción se denomina simplemente ID de transacción. Para casi todos los protocolos de blockchain, cada ID de transacción es una cadena de datos alfanumérica de 64 caracteres (256 bits).

Si se tiene en cuenta que las cadenas de bloques suelen estar formadas por cientos de miles de bloques, y que cada bloque contiene hasta varios miles de transacciones, se puede imaginar la rapidez con la que la verificación de las transacciones puede volverse computacionalmente difícil. Como tal, es óptimo utilizar la menor cantidad de datos posible al procesar y verificar transacciones. Esto minimiza los tiempos de procesamiento de la CPU y al mismo tiempo garantiza el más alto nivel de seguridad.

Bueno, eso es exactamente lo que hacen los Merkle Trees. En pocas palabras, los Merkle Trees toman una gran cantidad de ID de transacciones, los estructuran de una manera específica y usan funciones hash criptográficas para derivar una única cadena alfanumérica de 64 caracteres que actúa como una huella digital electrónica para todo el conjunto de datos. .

Esta cadena de datos, llamada Merkle Root, es extremadamente importante porque permite que cualquier computadora verifique rápidamente que una transacción específica tuvo lugar en un bloque en particular de la manera más eficiente posible.

¿Qué es una raíz de Merkle?

La única cadena de 256 bits que produce un árbol Merkle se llama raíz de Merkle. Cada bloque en una blockchain tiene exactamente uno. Y, como acabamos de mencionar, Merkle Root es un dato crucial porque permite a las computadoras verificar información con una velocidad y eficiencia increíbles.

Profundicemos un poco más. ¿Cómo se produce una raíz de Merkle? El primer paso es organizar todas las entradas de datos que, en este caso, son ID de transacción. Merkle Trees, por diseño, siempre agrupa todas las entradas en pares. Si hay un número impar de entradas, la última entrada se copia y luego se empareja consigo misma. Esto es válido para todos los ID de transacciones escritos en un bloque de una cadena de bloques.

Por ejemplo, supongamos que un solo bloque contiene un total de 512 transacciones. El árbol Merkle comenzaría agrupando esos 512 ID de transacciones en 256 pares. Luego, esos 256 pares de ID de transacciones pasarían por un proceso matemático (la función hash o algoritmo hash, como a veces se le llama) y tendríamos 256 nuevos hashes criptográficos de 64 caracteres.

El mismo proceso exacto ocurre nuevamente. Esos 256 nuevos hashes se emparejarían y se convertirían en 128 hashes. El proceso se repite, reduciendo el número de hashes a la mitad cada vez, hasta que solo quede un hash. Ese único hash es nuestra raíz Merkle.

Un ejemplo simple de un árbol Merkle

Para aclarar este concepto, veamos un ejemplo muy simple de árbol Merkle. Imagine que se realizaron 8 transacciones en un bloque en particular. En realidad, los ID de transacción tienen 64 caracteres, pero en aras de la simplicidad, supongamos que solo tienen 8 caracteres. Para facilitar aún más las cosas, usemos sólo números (e ignoremos las letras por completo).

Entonces, en este ejemplo, nuestros ocho ID de transacciones serán:

  • 11111111
  • 22222222
  • 33333333
  • 44444444
  • 55555555
  • 66666666
  • 77777777
  • 88888888

Ahora supongamos que el método para combinar los ID de las transacciones es tomar el primer, tercer, quinto y séptimo dígito de cada uno de los dos ID que se combinan y luego simplemente juntar esos números para formar un nuevo código de 8 dígitos.

Por supuesto, en realidad, las matemáticas detrás de los algoritmos hash son mucho más complicadas que esto. Pero para esta sencilla demostración, este sistema elemental será suficiente.

Así se vería nuestro árbol Merkle:

Observe que la cantidad de códigos se reduce a la mitad en cada paso hacia abajo en el árbol Merkle. Comenzamos con 8 ID de transacción y, después de solo 3 pasos, terminamos con un único código: Merkle Root. En este ejemplo, nuestra Merkle Root es el código en el cuadro inferior: 12345678.

El principal beneficio de Merkle Trees es que permiten una verificación de datos extremadamente rápida. Si queremos validar una única ID de transacción, no necesitaríamos volver a verificar cada transacción en el bloque. Más bien, sólo necesitaríamos verificar esa “rama” particular de nuestro árbol Merkle.

Eficiencia y velocidad: los beneficios de los árboles Merkle

Supongamos que queremos validar un ID de transacción en nuestro ejemplo actual. Bob dice que le pagó a Alice una determinada suma de Bitcoin y nos dice que el ID de la transacción es 88888888. También nos envía 3 hashes: 77777777, 55556666 y 11223344. Esa es toda la información que se debe enviar o recibir para verificar el pago de Bob a Alice.

Estos tres hashes, junto con el ID de la transacción en cuestión y la raíz Merkle de este bloque en particular, son los únicos datos necesarios para verificar el pago de Bob a Alice. Estos son muchos menos datos de los que se necesitarían para verificar todo el árbol Merkle. Como resultado, el proceso de verificación es mucho más rápido y eficiente para todos.

Así es como funciona. Ya tenemos Merkle Root del bloque, por lo que Bob no necesita enviarnos eso. Nos envía su ID de transacción y los 3 hashes adicionales que enumeramos anteriormente. También envía un poco de información sobre el orden y la ubicación en la que se utilizarán los hashes. Ahora, todo lo que tenemos que hacer es ejecutar el algoritmo hash en el conjunto de datos que Bob proporcionó.

Comenzamos aplicando hash al primer código 77777777 con el ID de transacción 88888888, lo que nos da el resultado 77778888. Bob no nos envió este código, pero no lo necesitaba porque usamos el mismo algoritmo hash que él. Por lo tanto, recibimos exactamente los mismos resultados.

Luego tomamos el segundo código que Bob nos envió, 55556666, y lo aplicamos con el nuevo código 77778888 que acabamos de derivar. Esto, por supuesto, produce el número 55667788.

Finalmente, combinamos el tercer código que Bob nos dio, 11223344, con el otro código nuevo que recibimos, 55667788, y terminamos con la raíz de Merkle correcta: 12345678.

Observe que solo necesitamos 3 códigos de Bob y solo tuvimos que ejecutar el algoritmo hash tres veces para ver que la transacción de Bob es válida. Eso significa que nuestra computadora ha hecho menos de la mitad del trabajo que hubiera sido necesario para verificar todo el árbol Merkle. El diagrama original de Merkle Tree tiene 15 números y el algoritmo hash debe ejecutarse 7 veces. ¡Pero no es necesaria más de la mitad de ese árbol para verificar la transacción de Bob!

Procedimientos de validación simplificados con Merkle Tree

Este procedimiento es suficiente para verificar que Bob, de hecho, le pagó a Alice esa cierta suma de Bitcoin porque obtuvimos números que, cuando se combinaron con los otros códigos que Bob nos envió, produjeron la misma raíz de Merkle que ya sabíamos que era verdadera. este bloque en particular.

Bob no puede falsificar una transacción porque eso requeriría encontrar una identificación de transacción falsa y un conjunto adicional de códigos falsos que, cuando se pasan por la función hash, producirían la verdadera raíz de Merkle. Las posibilidades de que esto suceda son tan astronómicamente pequeñas que podemos decir con confianza que es imposible.

En este sencillo ejemplo, el ahorro de potencia informática puede no parecer sustancial. Sin embargo, cuando se considera que los bloques en una cadena de bloques pueden contener varios miles de transacciones, es fácil ver cómo los Merkle Trees aumentan la eficiencia de manera tan espectacular.

En resumen, ese es el principal beneficio de un árbol Merkle. Permite a las computadoras verificar información de manera extremadamente eficiente y con muchos menos datos de los que se requerirían sin Merkle Tree.

Los Merkle Trees también son el concepto fundamental de la solución de la plataforma Komodo al problema de escalabilidad de blockchain. La solución de escalamiento de Komodo permite una interoperabilidad completa de blockchain y permitirá a Komodo procesar transacciones más rápido que cualquier otro servicio de procesamiento de pagos en el planeta. Actualmente, la nueva tecnología de escalado de Komodo procesa más de 20.000 transacciones por segundo en un entorno de prueba.

Descargo de responsabilidad:

  1. Este artículo está reimpreso de [komodo]. Todos los derechos de autor pertenecen al autor original [Delton Rhodes]. Si hay objeciones a esta reimpresión, comuníquese con el equipo de Gate Learn y ellos lo manejarán de inmediato.
  2. Descargo de responsabilidad: los puntos de vista y opiniones expresados en este artículo son únicamente los del autor y no constituyen ningún consejo de inversión.
  3. Las traducciones del artículo a otros idiomas están a cargo del equipo de Gate Learn. A menos que se mencione, está prohibido copiar, distribuir o plagiar los artículos traducidos.
เริ่มตอนนี้
สมัครและรับรางวัล
$100