Steemit Crypto Academy Season 3 Week 4 || Root Hash & Arbol Merkle por @pelon53
"Cualquier poder, si no se basa en la unión, es débil."
Jean de La Fontaine
Imagen editada con PicsArt
Steemit Crypto Academy Season 3 Week 4 || Root Hash & Arbol Merkle por @pelon53
En la exposición anterior, tuvimos la oportunidad de conocer las diferencias entre dos términos de uso muy común en la blockchain, como lo son hash y criptografía; correspondiendo el primero de ellos, a una cadena de caracteres alfanuméricos de longitud fija, generados por algoritmos (funciones hash) que permiten la codificación o encriptación de los datos suministrados, y que permiten su verificación y almacenamiento de forma segura.
Por el contrario, el término criptografía, cuyo origen se remonta a los inicios de la humanidad, se emplea para denominar a la técnica de cifrado o codificación de escritura con el objeto de proteger mensajes o documentos, mediante la alteración de su representación visual, con el fin de preservarlos de receptores no autorizados por el emisor.
En esta ocasión, nos adentraremos en el conocimiento de otro término de uso frecuente en la blockchain y el cual es parte fundamental en su evolución, el hash rate y su significado como medida de la fortaleza y seguridad de una red.
Finalmente, a partir de una serie de datos suministrados por el Profesor @pelon53, construiremos un Arbol de Merkle, también conocido como "árbol hash", y el cual no es más que una estructura ramificada en forma de árbol invertido, de donde toma su nombre, que proporciona un método seguro y eficiente para la verificación de los contenidos de extensas estructuras de datos.
Imagen editada con PicsArt
¿Qué es Hash Rate?
El hash rate es una medida del poder computacional combinado de una red para el minado y procesamiento de transacciones en una blockchain, tal como Bitcoin. Es decir, es una expresión de la capacidad global de una red para resolver las complejas ecuaciones criptográficas y poder generar un hash válido, aunque también se emplea para describir el poder de cómputo de un minero en forma individual.
Además, bajo este término se denomina la métrica que se emplea para cuantificar la fortaleza y seguridad de una blockchain ante un ataque cibernético. En este sentido, cuanto mayor sea el hash rate de una red, menor será su vulnerabilidad ante un ataque de 51%, es decir, en la medida que se incrementa el poder combinado de cómputo de una blockchain, también se incrementa la potencia que debe poseer uno o varios mineros aislados para hackear la red, para lo cual requerirían una cantidad inmensa de equipos que le permitan alcanzar al menos un 51% del poder total de la red en cuestión, para vulnerarla.
Este concepto nace a la par de Bitcoin, la primera criptomoneda que salió a la luz pública; y desde entonces se ha convertido en parte fundamental de la tecnología blockchain, dado que indica la potencia de una red, y nos permite conocer su evolución a través del tiempo. Por supuesto, el hash rate es más que solo un número; es un concepto crítico para el funcionamiento de Bitcoin y de todas las criptomonedas posteriores.
Su expresión numérica está dada por la cantidad de hashes por segundo (H/s) que es capaz de procesar una red, tal como se observa a continuación:
Unidad | Hashes por Segundo |
---|---|
1 kH/s | 1.000 |
1 MH/s | 1.000.000 |
1 GH/s | 1.000.000.000 |
1 TH/s | 1.000.000.000.000 |
1 PH/s | 1.000.000.000.000.000 |
1 EH/s | 1.000.000.000.000.000.000 |
En un principio, la complejidad de las operaciones matemáticas para la resolución de acertijos criptográficos, y en consecuencia, para validar transacciones dentro de una blockchain era baja; sin embargo, con el transcurso del tiempo se incrementó, tanto el número de mineros participantes como la complejidad de dichas operaciones y el poder de cómputo requerido para el minado de criptomonedas, particularmente Bitcoin. Esto generó, como era de esperarse, un aumento significativo en el consumo de energía, principalmente de origen fósil, lo cual tiene un impacto negativo en el ambiente.
Por lo tanto, el reto de las nuevas generaciones es alcanzar una mayor eficiencia en el uso de los recursos energéticos, procurando minimizar el impacto ambiental sin sacrificar la seguridad de las múltiples redes.
Arbol de Merkle (Steem)
Haciendo uso del generador de hashes SHA-256, construiremos un Arbol de Merkle con la siguiente información (Hojas del Arbol: Steem1, Steem2, Steem3, Steem4, Steem5, Steem6, Steem7, Steem8) hasta llegar al Hash Root o "Hash Raíz".
La palabra Steem1 nos genera el siguiente hash
Como puede apreciarse en la siguiente imagen
Imagen editada con PicsArt
- Por otra parte, la palabra Steem2 genera el hash
Imagen editada con PicsArt
- El hash correspondiente a Steem3 es:
Imagen editada con PicsArt
- El hash correspondiente a Steem4 es:
Imagen editada con PicsArt
- El hash correspondiente a Steem5 es:
Imagen editada con PicsArt
- Mientras el hash que corresponde a Steem6 es:
Imagen editada con PicsArt
- El hash que corresponde a Steem7 es:
Imagen editada con PicsArt
- Mientras el hash que corresponde a Steem8 es:
Imagen editada con PicsArt
- La unión de Steem1 y Steem2, corresponde al primer nivel de las ramas del Arbol de Merkle, genera el siguiente hash:
Imagen editada con PicsArt
- La unión de Steem3 y Steem4 nos genera el siguiente hash:
Imagen editada con PicsArt
- La unión de Steem5 y Steem6 nos genera el siguiente hash:
Imagen editada con PicsArt
- La unión de Steem7 y Steem8 nos genera el siguiente hash:
Imagen editada con PicsArt
- En este momento nos corresponde generar el hash que proviene de la unión de Steem1Steem2 y Steem3Steem4, lo cual se observa a continuación:
Imagen editada con PicsArt
- El hash que proviene de la unión de las palabras Steem5Steem6 y Steem7Steem8, se observa a continuación:
Imagen editada con PicsArt
- Finalmente, el hash root, que se ubica en la parte superior del Arbol de Merkle se obtiene de la unión de las palabras Steem1Steem2Steem3Steem4 y Steem5Steem6Steem7Steem8, como se observa a continuación:
Imagen editada con PicsArt
Con toda la información, procedemos a construir un Arbol de Merkle de 8 hojas y 2 niveles de ramas, lo que genera un total de 15 hashes, como se aprecia en la siguiente imagen.
Imagen realizada con PowerPoint y editada con PicsArt
Verificación de Steem6
Para verificar si el hash asociado a la "hoja" Steem6 se encuentra incluido en el Arbol de Merkle recién construido, se procede de la siguiente manera:
Se verifica Steem5, la hoja, dato o input asociado al pareamiento Steem5Steem6
Posteriormente, en el primer nivel de ramas del árbol, se verifica el hash correspondiente a Steem5Steem6.
Luego nos trasladamos al segundo nivel de ramas del árbol para verificar el hash generado por Steem5Steem6Steem7Steem8.
Finalmente, en último nivel, se verifica el hash root o "hash raíz" del árbol, el cual fue generado por la unión de Steem1Steem2Steem3Steem4 por un lado, y por el otro, Steem5Steem6Steem7Steem8.
Arbol de Merkle (SCA)
Al igual que el procedimiento efectuado para dar respuesta a la pregunta anterior, hacemos uso nuevamente del generador de hashes SHA-256, construiremos un Arbol de Merkle con la siguiente información (Hojas del Arbol: SCA1, SCA2, SCA3, SCA4, SCA5, SCA6, SCA7, SCA8) hasta llegar al Hash Root o "Hash Raíz" en el último nivel.
La palabra SCA1 nos genera el siguiente hash
Como puede apreciarse en la siguiente imagen
Imagen editada con PicsArt
- Por otra parte, la palabra SCA2 genera el hash
Imagen editada con PicsArt
- El hash correspondiente a SCA3 es:
Imagen editada con PicsArt
- El hash correspondiente a SCA4 es:
Imagen editada con PicsArt
- El hash correspondiente a SCA5 es:
Imagen editada con PicsArt
- Mientras el hash que corresponde a SCA6 es:
Imagen editada con PicsArt
- El hash que corresponde a SCA7 es:
Imagen editada con PicsArt
- Mientras el hash que corresponde a SCA8 es:
Imagen editada con PicsArt
- La unión de SCA1 y SCA2, corresponde al primer nivel de las ramas del Arbol de Merkle, genera el siguiente hash:
Imagen editada con PicsArt
- La unión de SCA3 y SCA4 nos genera el siguiente hash:
Imagen editada con PicsArt
- La unión de SCA5 y SCA6 nos genera el siguiente hash:
Imagen editada con PicsArt
- La unión de SCA7 y SCA8 nos genera el siguiente hash:
Imagen editada con PicsArt
- En este momento nos corresponde generar el hash que proviene de la unión de SCA1SCA2 y SCA3SCA4, lo cual se observa a continuación:
Imagen editada con PicsArt
- El hash que proviene de la unión de las palabras SCA5SCA6 y SCA7SCA8, se observa a continuación:
Imagen editada con PicsArt
- Finalmente, el hash root, que se ubica en la parte superior del Arbol de Merkle se obtiene de la unión de las palabras SCA1SCA2SCA3SCA4 y SCA5SCA6SCA7SCA8, como se observa a continuación:
Imagen editada con PicsArt
Con toda la información, procedemos a construir un Arbol de Merkle de 8 hojas y 2 niveles de ramas, lo que genera un total de 15 hashes, como se aprecia en la siguiente imagen.
Imagen realizada con PowerPoint y editada con PicsArt
¿Qué se debe hacer si el número de hojas del árbol es impar?
Una estructura tradicional de Arbol Merkle, requiere agrupar las transacciones o hashes en pares para su construcción. En el caso de que no se cuente con un número par de entradas, datos o inputs; existe la posibilidad de "duplicar" el hash que no tiene pareja, para así poder rellenar el espacio y crear un nuevo hash que permitirá la generación de los demás, hasta alcanzar el hash root o "hash raíz".
En la imagen que se presenta a continuación, se puede observar tan solo 7 hojas en la base del árbol.
Imagen realizada con PowerPoint y editada con PicsArt
Se procede a duplicar la última hoja con la finalidad de que SCA7 tenga su pareja y se pueda continuar con el proceso hasta obtener nuestro hash root.
Imagen realizada con PowerPoint y editada con PicsArt
Conclusiones
El término hash, se emplea para denominar una cadena alfanumérica de longitud fija, que representa o contiene dentro de su interior datos o información de cualquier longitud.
La longitud de un hash es fija e invariable, independientemente de la longitud de la información de las "entradas" (inputs). En el caso del algoritmo SHA-256 usado por Bitcoin y otras criptomonedas, es de 64 caracteres alfanuméricos.
El hash rate es una medida del poder computacional de un minero individual, o más comúnmente, de la totalidad de una red, y que permite conocer su fortaleza y seguridad ante ataques cibernéticos. Mientras mayor es el hash rate de una blockchain, menor es la probabilidad de que pueda ser susceptible de un ataque por parte de piratas informáticos.
Un Arbol de Merkle es una estructura de datos en forma de árbol invertido, desarrollada en 1979 por Ralph Merkle, y el cual se emplea en la blockchain para verificar la integridad de una base de datos.
Gracias por participar en Steemit Crypto Academy Season 3:
Espero seguir leyendo tus publicaciones.
Pregunta 1, con buena información.
Pregunta 2, coinciden todos los hash. Pero para verificar Steem6, no debería tomarse él mismo, porque es a Steem6 que vamos a verificar. Entonces sería su hermano Steem5, Steem7Steem8 y la otra rama Steem1Steem2Steem3Steem4 y el Root hahs.
Pregunta 3, bien contestada y los hash coinciden.
Recomendaciones:
Calificación: 9.0
Gracias Profesor @pelon53
Saludos
twitter-promotion
#promo-steem
Congratulations, your post has been upvoted by @dsc-r2cornell, which is the curating account for @R2cornell's Discord Community.
Enhorabuena, su "post" ha sido "up-voted" por @dsc-r2cornell, que es la "cuenta curating" de la Comunidad de la Discordia de @R2cornell.
Gracias @dsc-r2cornell y @blessed-girl por el apoyo.
Saludos