Crypto Academy / Season 3 / Week 4 - Homework Post for [@pelon53]: Root Hash y Árbol Merkle
Vengo ahora con la tarea de esta semana del profesor @pelon53.
1.- Explique en detalle el hash rate.
Si nos preguntamos qué es el hash rate puede estarse refiriendo a dos cosas, porque es ambas cosas a la vez; podemos estar hablando de la tasa de velocidad de los mineros al minar una criptomoneda dentro de la blockchain; pero también podemos estarnos refiriéndonos a la velocidad de minería de la totalidad de los mineros dentro de una red blockchain.
La tasa de hash es entonces el porcentaje de hashes que los mineros son capaces de confirmar para así dar paso a los bloques en una blockchain y realizar así la correspondiente acción de minar un bloque nuevo de información. Puede decirse más largo, pero no más claro. Un hash rate es eso; pero un hash es una aleatoria secuencia o serie de letras y números que identifican a las transacciones que se producen en determinada cadena de bloques; es por tanto, una manera de cifrar la información.
El funcionamiento o eficiencia de los mineros al minar una determinada criptomoneda en una blockchain estará dada entonces por hashrate de los equipos informáticos con los que minan (las computadoras) y también, por la dificultad de minado que se deriva del hashrate en conjunto de todos los mineros de la red correspondiente.
Si los mineros no son capaces de confirmar adecuadamente las transacciones que se ejecutan, la red no produciría bloques de información y en fin, no se podría minar criptomonedas nuevas (estoy refiriéndome aquí a las que tienen consenso PoW). Además, una red blockchain con poco hashrate tiene enorme dificultad de verificación y por ello es susceptible de ataques por parte de manos maliciosas (hackers). La potencia de minado se refiere a la capacidad o habilidad de la red de mineros para confirmar precisa, acertada y en el menor tiempo posible cada transacción que se procesa. Y cuanto mayor es el hashrate de una red blockchain mejor habla de la seguridad de la misma; porque una blockchain con un hashrate considerable, es menos susceptible a ataques del tipo del 51%.
Un ataque de ese tipo es cuando nodos validadores están en manos maliciosas que confirman transacciones erróneas o incorrectas a fin de beneficiarse de la red en cuestión; perturbando con ello y creando inestabilidad en todo el sistema interconectado al generar problemas en todas las transacciones del bloque. Entonces, un hashrate potente o elevado es garantía de estabilidad y certeza de la confiabilidad de una red blockchain y una criptomoneda.
2.- Realice el siguiente Árbol Merkle:
Transacción (hojas del árbol): Steem1; Steem2; Steem3; Steem4; Steem5; Steem6; Steem7; Steem8.
No me voy a complicar la vida: Voy a presentarles el árbol gráficamente para mejor entendimiento:
Llegué hasta el Root Hash. Y coloque cada hash generado usando SHA-256, muestre captures de pantalla.
Hash Steem1:
7760E25BCB80ADF1DD92DB339BF5790A59E90CD54EFA072F1250DCE13FA97045
Hash Steem2:
FE00506E91CF52BC4B35321E6B978D1A7349397B19C6C1C01E095971FDEC9741
Hash Steem3:
A9418332E0C351D6A50C835AA9E57D514F0573C231D491E97726DB8A5844F2DC
Hash Steem4:
22F4EC8E20C9CCAF2C313B23F18981B1C73BF39081BCD739E5D998A95A46AB30
Hast Steem5:
2A3C87336683AB0DDFA56AFEFC740E6C13A02FEA0A43D6797343B26D7AF0C57B
Hash Steem6:
A7BAA6DE0C0658E9E3681966E542BACD116529F5AE9A2D9126CDB1C1D5BC1278
Hash Steem7:
D441688DDA7F9285E8811728DD9A3955CF74F0A3C7600C1589D0F1D3B48FFAC7
Hash Steem8
F2E38ED4FF662087B6E9BEAFA4158EBC488B995732057BDA019A6A77FFB5F9F5
Con esto ya hemos armado los hashes de la capa más baja del árbol de Merckle, o sea, la parte correspondiente a las hojas; tal como se aprecia a continuación:
Ahora vamos con el primer escalón de ramas:
Hash Steem1Steem2:
A5568957014F6AC3866923C7DE20D375E706B8D8C9F453636E90B9965ABEC62B
Hash Steem3Steem4:
18D25196DB699F6AB9222B7302EB8A6F6EBFADEC703C07DD5DB8D9455913A499
Hash Steem5Steem6:
D118E137F92A0DBEA138B6BF70C7714153A7BC393CD0272A44BD94864645224B
Hash Steem7Steem8:
A81D57BA11AEDFA9EFBBA42F6523D75D1EFA50B22C5E3557A21CEFFE87DDFC4A
Y con esto ya armamos la parte de los hashes correspondientes agregándolos a las ramas siguientes:
Seguimos entonces con el siguiente nivel de ramas:
Hash Steem1Steem2Steem3Steem4
8A248C05E69C4F1AA403AD18A7F445FF500C42483DA425CE0C980CDB2FD1AD9B
Hash Steem5Steem6Steem7Steem8
8B0935AEAB3F51BFA2B0750703EE2387E2B20EB19B0D24227E180C03A851AF17
Y con esto ya podemos integrar en el árbol la capa de hashes de la rama más cerca a la raíz (tal como vemos abajo):
Y ahora solo nos queda el Hash Root:
Hash Root: Steem1Steem2Steem3Steem4Steem5Steem6Steem7Steem8
9C2FC83F36D59B8ED5033D2BCC417728583C8DAA0AA9868FD374BE3619D6E4F9
Y ahora ya podemos decir que tenemos nuestro árbol de Merkle completo al integrar el hash root en el mismo:
Diga los pasos a seguir para verificar si Steem6 está incluido en el Árbol Markle.
Para lograr esto de ver si Steem6 está incluido en el árbol o no, tan solo debemos partir del nodo que tiene al lado, es decir, de Steem5.
Y posteriormente debemos verificar o confirmar la rama Steem5Steem7Steem8.
Y la rama par que es Steem1Steem2Steem3Steem4.
Con todo esto y el Hash Root, ya podremos verificar que efectivamente Steem6 es tomado en cuenta e incluido en el árbol.
3.- Usando el SHA-256; debes colocar cada hash completo en el Árbol Merkle.
Transacción (hojas del árbol): SCA1; SCA2; SCA3; SCA4; SCA5; SCA6; SCA7; SCA8. Explique cada paso, muestre captures de pantalla.
Hash SCA1:
13E0A04BB0E669E1C638DBE3A704743F99F162B25245E4D8C064D35BA38FA8C8
Hash SCA2:
27849353A9C8CC4E948EB6E5748EDD79CB83513D8C0ADAF3E8C83D3792C9149B
Hash SCA3:
67E872F952C105C35E0BCE130536D061F4999DCA5593754BA9BA7BE59B8E7C0D
Hash SCA4:
491928A32BAE70A12FA251412BBFD7C9999F317BA6BF577C283C724225270A43
Hash SCA5
99C078C39CDE7F47799E0E8691460A9F3E83E78D498EA989308FCFCC58907B19
Hash SCA6
7A648D887B124DB14E96E23BA92783E7F26D00957C19B9B8229632C2C1873729
Hash SCA7
7E0BBD6BA4BA9896F9911AF46B06DD2C47535F9C80B29D693FDF6B9319D0D68E
Hash SCA8
562ABCEEB497E1FE7AE275A883FD5EF9D92A05F5C19D82ABAA0DC1571B7DF3AD
Vamos ahora con la primera capa de ramas:
Hash SCA1SCA2
91B09BBA815748166FB36413342C7E4E7E809F4BAC538C0418841A4476B527EF
Hash SCA3SCA4
B49B48697A3ACBC5E3D2E36B6EE49C44020D88E664C5C1AA7A7CF34058177379
Hash SCA5SCA6
F026924CD1285FF92C2A2DE9B9313027EB67273A82375C939348C887F6B52F77
Hash SCA7SCA8
AA55EC5A6B11393B289C4B2B6916172ACC2941C5C978FB1D7BF02696BAB323A4
Vamos con la segunda capa de ramas
Hash SCA1SCA2SCA3SCA4
F50DC120CBF6C46923037F6D7F41D4153ECC9AB7430DDA662C142DB1FFE483F7
Hash SCA5SCA6SCA7SCA8
A3D8CA8494CC426ABD5E1FC5FA0FEAE4F2B2ECE4C4CECDCA05E19EB66542533F
Vamos con el Hash Root:
Hash: SCA1SCA2SCA3SCA4SCA5SCA6SCA7SCA8
CB40CA6DB72DD507CF9118963F94B7740822258E74AFB0FD45D89DB35D24B386
Y ahora presento el árbol completamente armado:
Si el número de las hojas del árbol es impar, ¿Qué debes hacer? Explique.
En el caso mencionado de que el total de las hojas del árbol sean impares, tan solo corresponde tomar la hoja que no tiene pareja y duplicarla; eso es lo que dice la teoría y solo eso hay que hacer.
Si el árbol esta formado por hoja 1, hoja 2, hoja 3, hoja 4, hoja 5, hoja 6, hoja 7
Entonces el sistema dice que hay que duplicar la hoja 7; y así en cada paso del árbol.
Conclusión
Qué conclusión puedo dar sobre una tarea tan eminentemente práctica, más que solo el hecho de que fue muy útil e instructiva para ayudarme a conocer algo que no entendía sobre las criptomonedas y la blockchain. De verdad que no tenía la más mínima idea de que así era cómo funcionaba.
Gracias a esta tarea, ahora entiendo un poco mejor las criptos y la blockchain y la manera en que funciona y se organizan las transacciones. Así que gracias profesor @pelon53.