Steemit Crypto Academy | Season 3 - Week 4 | Root Hash y Merkle Tree | By @minikay
Buenas noches estimados compañeros de la Cryptoacademy, me complace saludarnos en una nueva semana de enseñanza, les presento mi tarea de esta semana para el profesor @pelon53 donde seguimos aprendiendo sobre el Hash y su importancia dentro de la tecnología Blockchain.
1️⃣ ¿Qué es el Hash Rate?
Como ya tuvimos la oportunidad de conocer en la clase anterior un Hash se trata de un código alfanumérico fijo, que representa o contiene dentro de sí un mensaje, qué puede ser de cualquier longitud, ya sean códigos, datos, etc.
Ahora bien, cuando hablamos de Hash Rate o Poder de Hash se refiere específicamente al poder de computo que necesita un minero para agregar nuevos bloques a una cadena blockchain y de esta manera minar criptomonedas mediante el consenso de prueba de trabajo. En otras palabras, también se podría definir como una medida estandarizada que permite conocer la cantidad de Hashes que un equipo tiene la capacidad de procesar por segundo.
El concepto de Hash Rate nació cuando nació Bitcoin, y hoy en día es de vital importancia para el minado de todas las criptomonedas que usan el protocolo de prueba de trabajo en su blockchain.
➡️ ¿De que se trata?
El Hash Rate se podría decir que es el arma de todo minero, pues mientras mayor tecnología tenga un minero, mayor será su poder de Hash Rate y por lo tanto, mayores probabilidades tendrá de completar el bloque y quedarse con la tan anhelada recompensa.
Un minero puede medir su efectividad dentro de la red calculando cuál es su taza de Hash, sin embargo este no es el único factor necesario para conocer la calidad de su minería. En Internet hay disponibles varias calculadoras de rentabilidad minera por medio de las cuáles puedes conocer tu poder de Hash.
Esta medida tiene su propia tabla y denominaciones de acuerdo a la cantidad de Hash que se puede procesar por segundo H/s, a continuación les presento la tabla con sus denominaciones:
➡️ ¿Cuál es su importancia?
Radica en una palabra clave "Seguridad" mientras mayor sea el número Hash Rate de una blockchain, quiere decir que mayor es su seguridad y mas protegidos están los datos dentro de ella, ya que a mayor número de Hash Rate, mayor es la capacidad de computo necesario para llevar a cabo un ataque del 51%.
También este número indica lo complejo que es el minado de una criptomoneda, tal es el caso de Bitcoin, que tarda en minarse alrededor de 10 minutos por bloque, debido a las complicadas operaciones y alta energía necesaria para su minado.
➡️ ¿Qué es un ataque del 51%?
Es muy sencillo de entender, en la blockchain de Bitcoin, en necesario que el 51% de los nodos estén de acuerdo para validar una información, entonces existe una posibilidad muy remota de que el 51% de los nodos de la red se pongan de acuerdo para falsificar alguna operación por ejemplo, pero con un nivel tan alto de Hash Rate esto es prácticamente imposible.
➡️ Hash Rate y el impacto ambiental
Sin embargo no todo es bueno al momento de hablar de un número muy alto de Hash Rate, pues mientras mayor sea la complejidad para resolver las operaciones de una blockchain mayor será el gasto energético que está necesitará para su minado, por lo que impacta negativamente el ambiente y temas cómo éste han sido de gran importancia en la actualidad, ya que se ha visto cómo incluso algunos de sus inversores como Elon Musk han querido alejarse un poco de Bitcoin debido a su alto impacto ambiental, por lo que las empresas de tecnología tienen el reto de crear equipos que presenten cada vez mayor eficiencia energética.
2️⃣ El árbol de Merkle
El profesor nos presenta las hojas del árbol, en base a esto comenzamos a elaborar los códigos HASH para la publicación de nuestro Árbol de Merkle.
➡️ Hojas del árbol.
Steem1
7760E25BCB80ADF1DD92DB339BF5790A59E90CD54EFA072F1250DCE13FA97045
Steem2
FE00506E91CF52BC4B35321E6B978D1A7349397B19C6C1C01E095971FDEC9741
Steem3
A9418332E0C351D6A50C835AA9E57D514F0573C231D491E97726DB8A5844F2DC
Steem4
22F4EC8E20C9CCAF2C313B23F18981B1C73BF39081BCD739E5D998A95A46AB30
Steem5
2A3C87336683AB0DDFA56AFEFC740E6C13A02FEA0A43D6797343B26D7AF0C57B
Steem6
A7BAA6DE0C0658E9E3681966E542BACD116529F5AE9A2D9126CDB1C1D5BC1278
Steem7
D441688DDA7F9285E8811728DD9A3955CF74F0A3C7600C1589D0F1D3B48FFAC7
Steem8
F2E38ED4FF662087B6E9BEAFA4158EBC488B995732057BDA019A6A77FFB5F9F5
➡️ Ramas del primer nivel.
Ya teniendo todas las hojas listas, procedemos a hacer las respectivas combinaciones para obtener las primeras ramas.
Steem1Steem2
A5568957014F6AC3866923C7DE20D375E706B8D8C9F453636E90B9965ABEC62B
Steem3Steem4
18D25196DB699F6AB9222B7302EB8A6F6EBFADEC703C07DD5DB8D9455913A499
Steem5Steem6
D118E137F92A0DBEA138B6BF70C7714153A7BC393CD0272A44BD94864645224B
Steem7Steem8
A81D57BA11AEDFA9EFBBA42F6523D75D1EFA50B22C5E3557A21CEFFE87DDFC4A
➡️ Ramas del segundo nivel.
Ahora vamos a volver a hacer las combinaciones de los mensajes para obtener el segundo nivel de las ramas y estar más cerca de la raíz de nuestro árbol.
Steem1Steem2Steem3Steem4
8A248C05E69C4F1AA403AD18A7F445FF500C42483DA425CE0C980CDB2FD1AD9B
Steem5Steem6Steem7Steem8
8B0935AEAB3F51BFA2B0750703EE2387E2B20EB19B0D24227E180C03A851AF17
➡️ Raíz del árbol.
Aquí vamos finalmente a generar la Raíz del árbol de merkle, donde deben estar incluidos todos los mensajes anteriores, de no ser así, el código generado tendría distintos dígitos a éstos.
Steem1Steem2Steem3Steem4Steem5Steem6Steem7Steem8
9C2FC83F36D59B8ED5033D2BCC417728583C8DAA0AA9868FD374BE3619D6E4F9
Con ayuda de mi programa de edición de Illustrator creo mi árbol de Merkle, copiando cada Hash correspondiente a su mensaje. Y este es el resultado:
➡️ Cómo verificar si Steem6 está incluido en el Árbol Markle.
Cómo bien sabemos, al alterar el hash de alguno de los nodos del árbol, todos lo siguientes Hash cambiarían también, obteniendo una Raíz totalmente distinta e invalidando por completo la transacción.
Al estar todos los nodos interconectados, para verificar alguno de ellos por separado, debemos aplicar una función de logaritmo binario con los hahs, y por ende conocer los nodos que están alrededor del nodo en cuestión.
Debemos verificar las 2 rutas del árbol para llegar a la raíz y así poder haber verificado correctamente que el nodo Steem6 esté incluido dentro del Hash Raíz. Ya que Steem5 es su pareja en el Árbol, este será el primero en ser verificado.
Luego procedemos a verificar las ramas que están por encima de esos nodos hoja, sería el Hash de Steem7Steem8.
Ahora pasamos al otro lado del árbol verificando directamente Steem1Steem2Steem3Steem4
Cerrando con el Hash Raíz de nuestro árbol y constatando así que Steem6 efectivamente se encuentra dentro del árbol y Hash raíz.
3️⃣ Creando nuestro propio Árbol Markle a partir de sus hojas.
➡️ Hojas del árbol.
SCA1
13E0A04BB0E669E1C638DBE3A704743F99F162B25245E4D8C064D35BA38FA8C8
SCA2
27849353A9C8CC4E948EB6E5748EDD79CB83513D8C0ADAF3E8C83D3792C9149B
SCA3
67E872F952C105C35E0BCE130536D061F4999DCA5593754BA9BA7BE59B8E7C0D
SCA4
491928A32BAE70A12FA251412BBFD7C9999F317BA6BF577C283C724225270A43
SCA5
99C078C39CDE7F47799E0E8691460A9F3E83E78D498EA989308FCFCC58907B19
SCA6
7A648D887B124DB14E96E23BA92783E7F26D00957C19B9B8229632C2C1873729
SCA7
7E0BBD6BA4BA9896F9911AF46B06DD2C47535F9C80B29D693FDF6B9319D0D68E
SCA8
562ABCEEB497E1FE7AE275A883FD5EF9D92A05F5C19D82ABAA0DC1571B7DF3AD
➡️ Ramas del primer nivel.
SCA1SCA2
91B09BBA815748166FB36413342C7E4E7E809F4BAC538C0418841A4476B527EF
SCA3SCA4
B49B48697A3ACBC5E3D2E36B6EE49C44020D88E664C5C1AA7A7CF34058177379
SCA5SCA6
F026924CD1285FF92C2A2DE9B9313027EB67273A82375C939348C887F6B52F77
SCA7SCA8
AA55EC5A6B11393B289C4B2B6916172ACC2941C5C978FB1D7BF02696BAB323A4
➡️ Ramas del segundo nivel.
SCA1SCA2SCA3SCA4
F50DC120CBF6C46923037F6D7F41D4153ECC9AB7430DDA662C142DB1FFE483F7
SCA5SCA6SCA7SCA8
A3D8CA8494CC426ABD5E1FC5FA0FEAE4F2B2ECE4C4CECDCA05E19EB66542533F
➡️ Raíz del árbol.
SCA1SCA2SCA3SCA4SCA5SCA6SCA7SCA8
CB40CA6DB72DD507CF9118963F94B7740822258E74AFB0FD45D89DB35D24B386
➡️ Resultado final del árbol Markle.
Esta imagen al igual que el árbol anterior fueron realizadas por mi @minikay en el programa de diseño Adobe Illustrator.
➡️ ¿Qué pasa si el número de hojas de un árbol Markle es impar?
Una estructura de árbol Merkle agrupa las transacciones en pares, lo que significa que para poder que el árbol continúe, cada hash necesita estar con su pareja para pasar al siguiente nivel. En caso de que no se cuente con un número par de nodos, existe la posibilidad de duplicar el hash que no tiene pareja para de esta manera así poder rellenar el espacio y crear un nuevo Hash con el que se seguirán creando los demás hasta llegar al hash raíz. Esto se haría de la siguiente manera:
Cómo podemos apreciar en la siguiente imagen al faltar el hash de una de las hojas base, es imposible continuar con la conformación del árbol y llegar al Hash Raíz.
Por lo que procedemos a duplicar la última hoja para que "SCA7" tenga su pareja y poder continuar con el proceso.
Este modo lo que resta por hacer es generar los nuevos Hash del nodo duplicado "SCA7" hasta obtener nuestro hash raíz.
SCA7SCA7
71AF5095F10844EDA37CFCF8EE7712ADD5940F4ADAE1946CE66793270438C39B
SCA5SCA6SCA7SCA7
2DAE9A09ABB66E133AEBD3F875490C194CD75E035B3AC6D1479379E89CFB2E67
➡️ Raíz del árbol.
SCA1SCA2SCA3SCA4SCA5SCA6SCA7SCA7
79A243A66E564ABAFEADAAA763B0D5BA7CFFD5462ADDC77D88CA683210AA2784
➡️ Árbol terminado con su hoja duplicada.
4️⃣ Conclusión
• La creación del árbol Markle ocupa un lugar fundamental en el mundo de las criptomonedas, aportando un importante grado de escalabilidad en las blockchain ya que es una forma muy eficiente de validar los datos y de procesar la información de una manera inteligente y resumida, así como también ayuda a detectar alguna alteración en los mismos.
• Mientras mayor sea la tasa de Hash, mayor es el nivel de seguridad con el que cuenta la blockchain, pero también será mayor el gasto energético para minar dicha criptomoneda.
• Si queremos ser unos mineros con alto rendimiento indispensablemente debemos contar con un equipo de cómputo lo suficientemente avanzado para contar con una taza de Hash alta y así poder obtener nuestra recompensa de minado.
Gracias por leer mi publicación.
Cc. @pelon53
Gracias por participar en Steemit Crypto Academy Season 3:
Espero seguir leyendo tus publicaciones.
Pregunta 1, muy buena explicación.
Pregunta 2: Excelente explicación. Al detalle.
Pregunta 3, Excelente explicación, Al detalle.
Recomendaciones:
Calificación: 10.0