Steemit Crypto Academy, Season 3: Week 4 || ROOT HASH Y ÁRBOL MERKLE.//TAREA

in SteemitCryptoAcademy3 years ago


blockchain_merkle_tree - copia.jpg
fuente

Saludos a todos los amigos y participantes de la Steem Crypto Academy, al profesor @pelon53 y al profesor @imagen, su más cercano colaborador.

Nuevamente por acá escudriñando en el mundo de los hash, la criptografía y los métodos, como el uso de los árboles de Merkle, que permitan optimizar su uso en las blockchain.
Cómo de costumbre y en aras de no redundar dejaré por acá la clase base de esta tarea.

Steemit Crypto Academy, Season 3: Week 4 || ROOT HASH Y ÁRBOL MERKLE.

Pasamos a realizar el trabajo pedido.

separador.png

1.- Explique en detalle el hash rate.

Básicamente el hash rate es una medida que nos permite saber cual es la velocidad con la que una maquina, grupo o la blockchain en su totalidad puede procesar los Hash por segundo de las transacciones que aparecen en los distintos bloques . El hash rate nos da una forma numérica de saber que tan efectivo está siendo el proceso de minado en el nodo o red de nodos al que se le calcula o asigna.

Este concepto ha estado presente desde los albores de la blockchain de BITCOIN.
Es bueno resaltar que la efectividad de un minero o grupo de estos es directamente proporcional a su hash rate. es decir, mientras más alto sea su hash rate, más alta será su efectividad. Esta medida ha sido verificada como un método válido y real para medir esta efectividad. No es solo un premio simbólico. Para los mineros es muy importante lograr un alto hash rate puesto que esto significa que sus probabilidades de ser a quienes se les asigne un bloque serán más altas y por lo tanto podrán lograr la recompensa que esto conlleva (el último valor que logré ver de esta recompensa era de 6.5BTC por bloque).

separador.png

Actualmente es bastante complicado lograr tener un hash rate elevado. Para esto se necesitan equipos sofisticados con velocidades de procesamientos muy alta. Es común ver ahora que las tarjetas de video de gran poder las compren más los mineros que los mismos "gamer". Aparte de esto, también se han creado pool's de mineria, un poco imitando las pool's de liquidez que se hacen en las cadenas donde se trabaja con PoS. En estas, los mineros particulares ofrecen su poder de computo a estas piscinas virtuales, lo que aumenta la probabilidad de entrar en el minado de algún bloque, aunque en este caso obtiene una recompensa menor acorde a lo que haya aportado de poder de computo en el pool.

Como el hash rate es una "medida" debemos entonces conocer las unidades con que se hacen estas mediciones.Estas se han hecho imitando un poco las unidades de medida para saber cuanta memoria tiene un computador.
Así tenemos que :
•1 kilo hash por segundo representa 1000 de hashes por segundo.
•1 mega hash por segundo representa 1,000,000 de hashes por segundo.
•1 giga hash por segundo representa 1,000,000,000 (mil millones) de hashes por segundo.
•1 tera hash por segundo representa 1,000,000,000,000 (un millón de millones) de hashes por segundo.
•1 peta hash por segundo representa 1,000,000,000,000,000 (mil millones de millones) de hashes por segundo.
•1 exa hash por segundo representa 1,000,000,000,000,000,000 (un millón de millones de millones) de hashes por segundo.
Cifras realmente mareantes.

separador.png

Importancia del hash rate

• Un alto hash rate mejora la seguridad en la blockchain. Mientras más capacidad de computo haya, habrá más velocidad de transacciones, más comprobación de datos y más dificultad para cualquier hacker para hacer daño.
• Un hash rate alto también puede llegar a garantizar menor consumo energético, puesto que a mayor velocidad de computo, se consume menos tiempo para minar y también menos consumo de energía.
• Nos permite también determinar la dificultad de la minería. Con un hash rate elevado podemos decir que la dificultad de la minería se ve reducida. Al procesar los bloques de manera más rápida se facilita y agiliza todo el procedimiento asociado con la PoW, que es la base de todos los cálculos necesarios para la validación de los bloques y comprobac{on de las transacciones implícitas en él.

separador.png

2.- Realice el siguiente Árbol Merkle:
Transacción (hojas del árbol): Steem1; Steem2; Steem3; Steem4; Steem5; Steem6; Steem7; Steem8.
Llegué hasta el Root Hash. Y coloque cada hash generado usando SHA-256, muestre captures de pantalla.
Diga los pasos a seguir para verificar si Steem6 está incluido en el Árbol Markle.

Primero colocaré este árbol como guía para hacer el árbol con los hash pedidos

arbol de merkle 1 - copia (2).png

Imagen realizada con herramientas de Windows 10

Hash calculados para el proceso.

Los 8 nodos del nivel 4, contando al root hash como el primero

hash 4.2.png

Imagen realizada con herramientas de Windows 10 y capturas de SHA256

hash 4.2.png

Imagen realizada con herramientas de Windows 10 y capturas de SHA256

Nivel 3 , donde se combinan los primeros pares inferiores.

Una acotación importante. en todas las lecturas que he realizado se toma como primer paso la generación de los hash's de los nodos del nivel más bajo en el árbol invertido(el cuatro en nuestro caso). Luego se combinan de dos en dos estos "números " para crear los hash's superiores. En algunas fuentes se toma esta combinación como una "suma" de estos pares, en otros hablan de una combinación , pero no dicen exactamente como se hace. Yo haré una sola secuencia combinando ambos hahs's para con este string generar el hash superior.
PD: los hash son números en base 16 por lo tanto tendría sentido calcular su suma.

hash nivel 3.png

Imagen realizada con herramientas de Windows 10 y capturas de SHA256

En la última imagen asociada este proceso vemos emparejados los hash's generados para el nivel 2 y en la parte de abajo la generación del Root Hash

root hash.png

Imagen realizada con herramientas de Windows 10 y capturas de SHA256

Por último colocamos el Árbol de Merkle con los hash calculados, teniendo en cuenta que el Root Hash es el que aparece en el cuadro superior del árbol:

arbol de merkle 1.png

Imagen realizada con herramientas de Windows 10

Ahora, para comprobar que Steem6 está en este árbol de Merkle, necesitamos tener los hash's exactos del árbol, salvo el del hash de Steem6 que es sobre el que tenemos dudas. Lo primero que tenemos que hacer es calcular el hash de Steem6 y lo colocamos en el lugar que le corresponde según los datos aportados. Luego tomamos el hash generado por Steem5,(ya dado), y lo combinamos con el de Steem6 . Calculamos el nuevo hash asociado a Seem5 y Steem6 y vemos que coincida con los datos de nuestro árbol para esta posición. Si esto ocurre quiere decir que Steem6 está en el árbol. En caso contrario no lo estaría. Debemos recordar que cualquier cambio en los datos para la generación de nuestros hash, los cambia a ellos también de manera sustancial. También se supone que con el único dato que existe la duda es con el de Steem6, por lo tanto todos los demás datos deberían ser correctos. Si no tuviésemos certezas con respecto a la veracidad de del resto de datos no tendría sentido hacer esta comprobación Creo que no hace falta repetir los cálculos para este proceso porque precisamente nuestro árbol incluye a Steem6.

separador.png

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.
Si el número de las hojas del árbol es impar, ¿Qué debes hacer? Explique.

El proceso a seguir para calcular el nuevo árbol pedido es idéntico al de la pregunta anterior.

Es decir, se calcula cada uno de los hash's de SCA1; SCA2; SCA3; SCA4; SCA5; SCA6; SCA7; SCA8.

SCA1234.png

Imagen realizada con herramientas de Windows 10 y capturas de SHA256

SCA1234.png

Imagen realizada con herramientas de Windows 10 y capturas de SHA256

Ahora colocamos las capturas donde unimos los pares de hash's consecutivos correspondientes SCA1 Y SCA2, SCA3 y SCA4, SCA5 y SCA6 , SCA7 y SCA8 para obtener los hash del siguiente nivel.

SCA12 34 56 7.png

Imagen realizada con herramientas de Windows 10 y capturas de SHA256

Por último colocamos la gráfica donde se genera el ROOT HASH usando a sus sus hijos directos.

final sca.png

Imagen realizada con herramientas de Windows 10 y capturas de SHA256

Ahora sí estamos en condiciones de colocar nuestro Árbol de Merkle definitivo.

arbol de merkle 2.png

Imagen realizada con herramientas de Windows 10

Con respecta a la última pregunta sobre como se puede proceder cuando el número de hojas en un árbol es impar, suponiendo que esto implique que uno de los nodos hijos no tenga pareja para combinar, en este caso una de las estrategias que se utiliza es combinar este nodo solitario con el mismo y generar el hash superior correspondiente con base en esta combinación.

separador.png

Conclusiones

La importancia que tiene el uso de los Árboles de Merkle en blockchain's como la de BITCOIN es innegable. Al suministrar el Root Hash como parte de la cabeza de sus bloques y permitir simplificar la verificación de los datos de las transacciones implícitas en estos, permite también optimizar los procesos y por ende dar mayor velocidad y eficacia a sus algoritmos de validación. Los Árboles de Merkle fueron patentados por Ralph Merkle en 1979 y ya habían demostrado su utilidad en el manejo de base de datos antes de la creación del BITCOIN, pero fue con la aparición de esta plataforma que se convirtió en un método conocido y estudiado universalmente. BITCOIN parece ser el inicio de un cambio radical en el manejo de la economía mundial y el nombre de Merkle estará por siempre asociado a esta revolución.

Por otra parte el aumento del Hash Rate debe ser el objetivo de la masa que vive en, y de este nuevo ámbito que representan las cripto monedas y sus derivados. Este siempre estará asociado a plataformas y redes más seguras, rápidas, eficientes y confiables. Obviamente esto debería ir acompañado de una baja en el uso de recursos energéticos para la minería.

separador.png


Gracias por pasar ver y leer.
Espero haber cubierto las expectativas y haber hecho un trabajo correcto y útil.
Cualquier observación o corrección serán agradecidas.
Éxitos para todos.

separador.png

Sort:  

Gracias por participar en Steemit Crypto Academy Season 3:

Espero seguir leyendo tus publicaciones.

NoPreguntas.Puntaje.
1Explique en detalle el hash rate.1.0
2Realice el Árbol Merkle. Pregunta 2. Diga los pasos a seguir para verificar si Steem6 está incluido en el Árbol Markle.2.0
3Realice el Árbol Merkle. Pregunta 3. Si el número de las hojas del árbol es impar, ¿Qué debes hacer? Explique.2.9
4Presentación y originalidad1.5
  • Pregunta 1, me hubiera gustar leer un poco del ataque 51%.

  • Pregunta 2, Las hash de las hojas todos coinciden. El resto lo hicistes de otra manera, pero es válido. El Steem6 se verifica teniendo el hash del nodo hermano Steem5, luego el hash Steem7Steem8 para combinarlo con la otra rama Steem1Steem2Steem3Steem4 y luego con el Root hash. No debemos tomar ningún hash que involucre el Steem6 porque es el que vamos a verificar.

  • Pregunta 3, los hash de las hojas coinciden, más no el resto porque lo hicistes de otra orma que se puede aceptar. Me gustaría ver el dibujo donde expliques cuando una hoja es impar en el Árbol Merkle.

Recomendaciones:

  • Leer con detenimiento y dar las respuestas acertadas.

  • Profundizar un poco más en el tema.

Calificación: 7.4

Saludos profesor. Para la generación de los hash usé la fórmula en la imagen que fue la que vi en los artículos donde se daban expresiones explícitas para calcularlos. En estos se tomaba esta "suma" como la concatenación de los hash de pares anteriores.
La verdad todavía tengo un mar de dudas con respecto a la lógica en la verificación de una transacción. Sé cómo aplicar el método, la receta, pero no termino de entender su fundamento. Quizás estoy entendiendo mal las premisas. esto me frustra un poco porque creo que aprender no es solo copiar un algoritmo, sino conocer su esencia. Estaré pendiente de seguir investigando para lograr la compresión necesaria.
Sería excelente haber podido tener una consulta directa en este sentido.
Gracias por sus observaciones.


arbol-merkle.jpg
fuente

Coin Marketplace

STEEM 0.35
TRX 0.12
JST 0.040
BTC 70557.88
ETH 3560.83
USDT 1.00
SBD 4.75