Crypto Academy / Season 3 / Week 4 - Homework Post for [Pelon53] ROOT HASH Y ÁRBOL MERKLE.
En la segunda semana, aprendí bastante en su clase sobre el Hash y la criptografía, y de las ventajas que ellos nos ofrecen, es por eso que no dudo que este tema sea muy interesante e instructivo para todos nosotros, así que vamos a aprender todos juntos!!
Hash rate.
El Hash rate es uno de los conceptos más importantes en el mundo de la blockchain, ya que es un poder de cómputo que tiene la capacidad de otrogarle fuerza y seguridad a la red de una moneda cuando es minada, evitando ataques o errores de los nodos maliciosos que busquen perjudicar a la red, es por eso, que es aquí donde entra el Hash Rate, permitiendo la creación de los bloques de una manera totalmente segura por parte de los mineros que hacen su trabajo, mientras que a su ves nos indica las operaciones que estos mismos son capaces de realizar.
El inicio del Hash Rate surgió con la creación de la moneda con mayor dominancia en el mercado, es decir, el BTC, por lo tanto no es casual que este concepto sea tan importante para la evolución y seguridad de la moneda, y desde entonces se fue implementando en las monedas que deriven de la misma.
• Función:
Su función se basa a través del algoritmo de consenso Prueba de trabajo (PoW), y en dónde se encarga de demostrar la capacidad que tiene un minero o equipo de trabajo para para procesar hashes en la red.
El Hash rate es una parte fundamental en la seguridad y evolución de las monedas que trabajen con este algoritmo, o por el contrario que deriven del Bitcoin, por lo tanto su función principal es encargase de que el trabajo de minería para la creación de cada bloque, funcione de una manera segura y evitando futuros errores.
• Importancia:
Cuando decidimos involucrar nuevas criptomonedas en nuestro portafolio, es importante que revisemos e investiguemos el porcentaje de Hash Rate que poseen, ya que mientras mayor sea el porcentaje, menor será el riesgo de que ocurran ataques y errores en su red de minería, y mayor será la seguridad que esta moneda nos presente, por lo tanto:
• Gracias al Hash Rate podemos saber que tan segura y confiable es la red de su minado, y por ende podemos decidir incluirla en nuestro portafolio.
Otro uso importante que nos puede aportar el Hash Rate, es que ayuda a buscar soluciones y a calcular las dificultades mineras que pueda presentar la red de una moneda, ayudando a descongestionar el sistema y a mejorar la duración de la creación de cada bloque que se desarrolla por segundo, por lo tanto:
• Las dificultades mineras se ajustan cuando existen problemas en la red y en la creación del tiempo para generar un bloque. (En el caso del BTC, esta se ajusta automáticamente al determinar cierta cantidad de bloques)
Entonces como podemos ver, el Hash Rate tiene otros usos importantes que aportan valor y seguridad a la red de minería de una moneda, por lo tanto su implementación en ellas, es de vital Importancia para que logren tener un mejor desarrollo, ya que nos indica la potencia y el valor de la red, junto con el trabajo de los mineros que lo conforman.
• Características:
• Importancia para el minero: El Hash Rate es fundamental para que los mineros logren hacer su trabajo de manera segura y confiable, por lo tanto la implementación del mismo, ayuda a que su poder aumente y que puedan realizar su trabajo de manera eficaz, para lograr obtener sus recompensas.
• Resistencia a ataques del 51%: Como sabemos, el valor del Hash Rate de una moneda determinará que tan fuerte es, por lo tanto mientras mayor sea su valor, menor serán las posibilidades de un ataque del 51%, es decir, esto solo ocurre cuando la mayoría de los nodos se ponen de acuerdo en este porcentaje de votación (51%) para falsificar información logrando dañar la red, y presentar errores en él.
Es por eso que mientras mayor sea el porcentaje de su Hash Rate, es poco probable que ocurra un ataque de éstos.
• Alta cantidad de energía: Otra de las características quizás no tan buenas del Hash Rate, es el alto consumo de energía que puede prorporcionar, ya que debido a su alto nivel de seguridad y tecnología que proporciona a los mineros, trae como consecuencia que los niveles de energía sean altos.
• Validar funciones dentro de la red: El Hash Rate también funciona para validar ciertas funciones que ocurren dentro de la red, y monitorear operaciones de cada uno de los bloques que se generan por segundo.
Tasa de Hash Rate:
El Hash Rate también se puede calcular, y es través de unidades, dependiendo de la cantidad de Hash que se procese en cada bloque H/S. (Por segundos)
Sus unidades son:
Hashes/segundos
• Kilo Hash: 1,000 hashes
• Mega Hash: 1,000,000 hashes
• Giga Hash: 1,000,000,000 hashes
• Tera Hash: 1,000,000,000,000, hashes
• Peta Hash: 1,000,000,000,000,000 hashes
• Exa Hash: 1,000,000,000, 000,000,000, hashes
2) Árbol Merkle
Con las siguientes hojas de árbol estipuladas, vamos a proceder a armar nuestro árbol Merkle, usando las siguientes hojas:
(Steem1; Steem2; Steem3; Steem4; Steem5; Steem6; Steem7; Steem8.)
Debemos colocar la palabra tal cuál como nos indica, ya que de lo contrario se podría alterar el Hash y obtendríamos un resultado no deseado para nuestro árbol Merkle.
Steem1:
7760E25BCB80ADF1DD92DB339BF5790A59E90CD54EFA072F1250DCE13FA97045
Steem2:
FE00506E91CF52BC4B35321E6B978D1A7349397B19C6C1C01E095971FDEC9741
Steem3:
A9418332E0C351D6A50C835AA9E57D514F0573C231D491E97726DB8A5844F2DC
Steem4:
22F4EC8E20C9CCAF2C313B23F18981B1C73BF39081BCD739E5D998A95A46AB30
Steem5:
2A3C87336683AB0DDFA56AFEFC740E6C13A02FEA0A43D6797343B26D7AF0C57B
Steem6:
A7BAA6DE0C0658E9E3681966E542BACD116529F5AE9A2D9126CDB1C1D5BC1278
Steem7:
D441688DDA7F9285E8811728DD9A3955CF74F0A3C7600C1589D0F1D3B48FFAC7
Steem8:
F2E38ED4FF662087B6E9BEAFA4158EBC488B995732057BDA019A6A77FFB5F9F5
Ramas del primer nivel
Ahora vamos a proceder a armar las ramas del primer nivel de nuestro Árbol Merkle, con las siguientes hojas:
Steem1Steem2:
A5568957014F6AC3866923C7DE20D375E706B8D8C9F453636E90B9965ABEC62B
Steem3Steem4:
18D25196DB699F6AB9222B7302EB8A6F6EBFADEC703C07DD5DB8D9455913A499
Steem5Steem6:
D118E137F92A0DBEA138B6BF70C7714153A7BC393CD0272A44BD94864645224B
Steem7Steem8:
A81D57BA11AEDFA9EFBBA42F6523D75D1EFA50B22C5E3557A21CEFFE87DDFC4A
Ramas del segundo nivel:
Ahora que ya tenemos lista nuestras primeras ramas, vamos a proceder a armar las de nuestro segundo nivel, combinando cada una de las siguientes hojas:
Steem1Steem2Steem3Steem4:
8A248C05E69C4F1AA403AD18A7F445FF500C42483DA425CE0C980CDB2FD1AD9B
Steem5Steem6Steem7Steem8:
8B0935AEAB3F51BFA2B0750703EE2387E2B20EB19B0D24227E180C03A851AF17
Raíz central del árbol
Ahora que ya obtuve mis ramas del primer y segundo nivel, vamos a proceder a realizar nuestra rama principal o central de nuestro árbol Merkle, y para ello solo demos juntar cada una de las hojas obtenidas:
Steem1Steem2Steem3Steem4Steem5Steem6Steem7Steem8:
9C2FC83F36D59B8ED5033D2BCC417728583C8DAA0AA9868FD374BE3619D6E4F9
Cómo podemos ver, esta es la raíz principal de nuestro árbol Merkle, y ahora lo voy a armar todo completamente:
• Las palabras: (Steem1; Steem2; Steem3; Steem4; Steem5; Steem6; Steem7; Steem8) De color negro, representan las hojas principales de nuestro árbol Merkle.
• Las palabras: (Steem1Steem2)(Steem3Steem4)(Steem5Stee6)(Steem7Steem8), de color rojo, representan las ramas del primer nivel de nuestro árbol.
• Las palabras: (Steem1Steem2Steem3Steem4) (Steem5Steem6Steem7Steem8) de color azul, representan las ramas del segundo nivel de nuestro árbol.
• Las palabras: (Steem1Steem2Steem3Steem4Steem5Steem6Steem7Steem8)de color verde, representan nuestra raíz principal de nuestro árbol Merkle.
¿Cómo verificar si Steem6 está incluido en el Árbol Markle?
Como dije anteriormente, al cambiar tan solo una letra de las palabras dadas, nuestra raíz del árbol principal cambiaría automáticamente, es por eso que debemos colocar muy bien la palabra correcta, para obtener el Hash correcto, y lograr así que nuestra raíz del árbol sea la indicada.
Para verificar si Steem6 es correcto y está incluído en las ramas de nuestro árbol, debemos verificar las ramas que están conectadas a él, es decir:
• Verificar la hoja Steem5 ya que es su pareja en la rama principal.
• Ahora debemos verificar los nodos que están por encima de el, en la segunda rama de nuestro árbol, los cuales sería Steem7Steem8
• Nos iremos al otro lado de nuestro árbol en la tercera rama, y verificaremos las combinaciones Steem1Steem2Steem3Steem4
• Finalmente llegamos a nuestra raíz principal de nuestro árbol Merkle, en dónde podemos ver la combinación de cada uno de los nodos, que nos dió un Hash general, logrando confirmar que nuestro nodo Steem6 si está incluído dentro de nuestro árbol.
• Raíz del árbol principal:
9C2FC83F36D59B8ED5033D2BCC417728583C8DAA0AA9868FD374BE3619D6E4F9
3) Árbol Merkle con distintas hojas
Ahora crearemos otro árbol Merkle con distintas hojas, las cuales son:
(SCA1; SCA2; SCA3; SCA4; SCA5; SCA6; SCA7; SCA8.)
Debemos colocar la palabra tal cuál como nos indica, ya que de lo contrario se podría alterar el Hash y obtendríamos un resultado no deseado para nuestro árbol Merkle.
Usaremos SHA-256 para obtener los Hash:
SCA1:
13E0A04BB0E669E1C638DBE3A704743F99F162B25245E4D8C064D35BA38FA8C8
SCA2:
27849353A9C8CC4E948EB6E5748EDD79CB83513D8C0ADAF3E8C83D3792C9149B
SCA3:
67E872F952C105C35E0BCE130536D061F4999DCA5593754BA9BA7BE59B8E7C0D
SCA4:
491928A32BAE70A12FA251412BBFD7C9999F317BA6BF577C283C724225270A43
SCA5:
99C078C39CDE7F47799E0E8691460A9F3E83E78D498EA989308FCFCC58907B19
SCA6:
7A648D887B124DB14E96E23BA92783E7F26D00957C19B9B8229632C2C1873729
SCA7:
7E0BBD6BA4BA9896F9911AF46B06DD2C47535F9C80B29D693FDF6B9319D0D68E
SCA8:
562ABCEEB497E1FE7AE275A883FD5EF9D92A05F5C19D82ABAA0DC1571B7DF3AD
Ramas del primer nivel:
Ahora vamos a empezar armar nuestras ramas del primer nivel, juntando las combinaciones obtenidas:
SCA1SCA2:
91B09BBA815748166FB36413342C7E4E7E809F4BAC538C0418841A4476B527EF
SCA3SCA4:
B49B48697A3ACBC5E3D2E36B6EE49C44020D88E664C5C1AA7A7CF34058177379
SCA5SCA6:
F026924CD1285FF92C2A2DE9B9313027EB67273A82375C939348C887F6B52F77
SCA7SCA8:
AA55EC5A6B11393B289C4B2B6916172ACC2941C5C978FB1D7BF02696BAB323A4
Ramas del segundo nivel:
Ahora vamos a empezar a armar nuestras ramas del segundo nivel, obteniendo las combinaciones anteriores:
SCA1SCA2SCA3SCA4:
F50DC120CBF6C46923037F6D7F41D4153ECC9AB7430DDA662C142DB1FFE483F7
SCA5SCA6SCA7SCA8:
A3D8CA8494CC426ABD5E1FC5FA0FEAE4F2B2ECE4C4CECDCA05E19EB66542533F
Raíz del árbol:
Ahora vamos a combinar cada una de las hojas anteriores para formar nuestra raíz del árbol Merkle:
SCA1SCA2SCA3SCA4SCA5SCA6SCA7SCA8:
CB40CA6DB72DD507CF9118963F94B7740822258E74AFB0FD45D89DB35D24B386
Después de unir cada uno de las hojas obtenidas, aquí les presento mi árbol Merkle:
• Las palabras (SCA1; SCA2; SCA3; SCA4; SCA5; SCA6; SCA7; SCA8.) De color negro, representan las hojas principales de nuestro árbol Merkle.
• Las palabras: (SCA1SCA2)(SCA3SCA4)(SCA5SCA6)(SCA7SCA8), de color rojo, representan las ramas del primer nivel de nuestro árbol.
• Las palabras: (SCA1SCA2SCA3SCA4) (SCA5SCA6SCA7SCA8) de color azul, representan las ramas del segundo nivel de nuestro árbol.
• Las palabras: (SCA1SCA2SCA3SCA4SCA5SCA6SCA7SCA8)
de color verde, representan nuestra raíz principal de nuestro árbol Merkle.
¿Qué sucede cuándo el número de hojas de un árbol Markle es impar?
Como sabemos, para generar cada una de las ramas que componen nuestro árbol Merkle, cada una de sus hojas deben estar de manera par, y tener una pareja a su lado, ya que la estructura de su árbol las agrupa para que estén de manera uniforme, y lograr así, generar el Hash de ellos. Es decir, si una de las ramas no posee una de sus hojas de manera par, no se podrá continuar con las ramas o niveles restantes de nuestro árbol, por lo tanto nunca podemos llegar a saber nuestra raíz principal.
Sin embargo, si llegara a ocurrir este caso, de que falte una hoja de una de nuestras ramas, lo que podemos hacer es duplicar la hoja impar que tenemos , y lograr así completar las demás ramas de nuestro árbol para completar nuestra raíz principal.
Por ejemplo:
Si en nuestro árbol nos falta una de las hojas del primer nivel, no podemos continuar con el resto de nuestro árbol, por lo tanto, lo que podemos hacer es duplicarlo y seguir con las demás ramas:
En este caso lo que voy a hacer es duplicar la hoja SCA7 para poder seguir con las demás ramas de mi árbol;
SCA7SCA7:
71AF5095F10844EDA37CFCF8EE7712ADD5940F4ADAE1946CE66793270438C39B
Luego seguir armando el resto de mis ramas con el resultado ya obtenido:
SCA5SCA6SCA7SCA7 :
2DAE9A09ABB66E133AEBD3F875490C194CD75E035B3AC6D1479379E89CFB2E67
Y para obtener nuestra raíz principal, colamos todos nuestras hojas obtenidas:
SCA1SCA2SCA3SCA4SCA5SCA6SCA7SCA7 :
79A243A66E564ABAFEADAAA763B0D5BA7CFFD5462ADDC77D88CA683210AA2784
Entonces podemos ver como al cambiar una hoja de nuestro árbol Merkle, cambia todo automáticamente. Entonces este será mi nuevo resultado de mi raíz principal, duplicando mi hoja SCA7.
Entonces cuando el número de hojas de nuestro árbol es impar, solo debemos duplicar la hoja que tenemos al lado, es decir su acompañante, para lograr obtener nuestra raíz principal.
Conclusión
Conclusión
• El árbol Merkle es de suma importancia en la red blockchain, ya que permite la verificación de cada uno de los nodos presentados, de madera rápida y concisa, uniendolo a cada una de sus ramas hasta obtener la raíz principal.
• Su creación le da mayor escalabilidad a la red que lo use, ya que el proceso de verificación de cada uno de ellos, se realizará de manera rápida.
• El nivel de seguridad que proporciona, es sumamente alto y factible, ya que evita que los (datos, nodos, hojas) se vean afectados y altere a todos los demás, obteniendo información falsa.
• El árbol de Merkle es muy práctico a la hora de validar gran cantidad de información en la red.
• EL hash Rate, es sumamente importante en la minería de criptomonedas, sin embargo, solo está permitido en las redes de criptomonedas que son derivadas del Bitcoin, y que trabajen con el algoritmo de consenso (PoW).
• El Hash Rate, le proporciona seguridad y respaldo a la red, es por eso que mientras más alto sea su valor de porcentaje, menor serán las opciones de un posible ataque del 51%.
• Para los trabajadores de minería, el Hash Rate es de suma importancia, ya que gracias a él, determina el valor y la fuerza que posee la red, ayudándolos a la creación de nuevos bloques de manera más rápida y eficaz.
En esta increíble clase del profesor @pelon53, le agradezco por su excelente conferencia, ya que la importancia del Hash Rate, y del árbol de Merkle, son temas muy importantes en el mundo de la blockchain, por ende, le aporta muchos beneficios a la red.
Fue un placer participar, hasta la próxima.
Compartido en Twitter: https://twitter.com/DairhiS/status/1418644654199803917?s=19
Gracias por participar en Steemit Crypto Academy Season 3:
Espero seguir leyendo tus publicaciones.
Pregunta 1, bien contestada.
Pregunta 2, todos los hash coinciden y buena su respuesta.
Pregunta 3, Todos los hash coinciden y muy bien explicado
Excelente trabajo, felicitaciones
Recomendaciones:
Calificación: 10.0
Un saludo profesor, fue un honor participar, gracias por sus recomendaciones, hasta la próxima!!!
Wowww amiga, excelente tu tarea, impecable 👏👏 sigue así.😉
Muchísimas gracias amiga, un saludo ☺️🙌