¿Qué es el blockchain? Entre otras cosas, es una de las palabras de moda en los últimos tiempos. La cadena de bloques es también un concepto que plantea una enorme revolución no solo en nuestra economía, sino en todo tipo de ámbitos.
Una cadena de bloques no es más que una serie de ”bloques” que agrupan transacciones y que están enlazados siguiendo un orden temporal.
Ahora bien, ¿cómo se pueden imaginar los componentes individuales de la Blockchain, los bloques?
Cada bloque puede considerarse como una página en un libro mayor. Los bloques individuales se componen de varios componentes. Aproximadamente, estos se pueden diferenciar en la cabeza del bloque (encabezado del bloque) y su cuerpo (cuerpo del bloque).
La cabecera del bloque
Los bloques de la cadena se componen de una cabecera de bloque y un contenido. Cada bloque dentro de la Blcokchain se identifica mediante el cálculo de una función hash de la cabecera del bloque. Cada bloque hace referencia a un bloque anterior, conocido como el bloque padre, a través del campo “hash de bloque anterior” en la cabecera del bloque.
La secuencia de los hashes que unen cada bloque a su padre crea una cadena que se remonta hasta el primer bloque jamás creado, conocido como el bloque génesis. Está dividida en seis componentes
- El número de versión del software: esto no importa en la mayoría de los casos, sin embargo, un minero puede señalar que decisiones de protocolo admite con un número de versión particular.
- Hash del bloque anterior: El hash del bloque anterior es, por así decirlo, la cadena de blockchain. Debido a que el hash del bloque anterior está contenido en el hash del nuevo bloque, los bloques de la Blcokchain se construyen unos sobre otros. Sin este componente, no habría conexión ni cronología entre cada bloque.
- El hash del árbol Merkle: Todas las transacciones contenidas en un bloque se pueden agregar en un hash. Este es el hash raíz del árbol Merkle.
- El tiempo en segundos desde 1970-01-01 T00: 00 UTC: Una marca de tiempo en el propio bloque. El tiempo se da en segundos desde el 1.1.1970.
- El objetivo de la dificultad actual: Cada Hash tiene un tamaño de bits. Cuanto menor es el objetivo en bits, más difícil es encontrar un hash coincidente. El objetivo indica qué tan pequeño debe ser el nuevo hash para reclamar validez.
- El nonce: Es la variable incrementada por la prueba de trabajo. De esta manera, el minero adivina un hash válido, un hash que es más pequeño que el objetivo. Los seis componentes forman el encabezado del bloque.
Los seis componentes forman el encabezado del bloque. El encabezado de bloque desempeña un papel fundamental en Bitcoin porque conecta todos los bloques juntos. Puedes imaginarlo como la cabina de un camión. Estos son los documentos importantes con los que el camión pasa a través de los controles de la red.
Contenido del bloque
Los bloques incluyen, a parte de una cabecera, la lista de transacciones incluidas en dicho bloque.
La principal diferencia de la blockchain de Ethereum con respecto a la de Bitcoin en cuanto a la arquitectura es que los bloques en Ethereum contienen, aparte de la lista de transacciones, el estado más reciente resultado de procesar las transacciones en el bloque.
Arboles de Merkle
Un árbol de Merkle, también conocido como un árbol hash binario, es una estructura de datos que se usa para resumir y verificar de manera eficiente la integridad de grandes conjuntos de datos. Los árboles merkle son árboles binarios que contienen hashes criptográficos.
Los árboles merkle se usan en Bitcoin y otras blockchain para resumir todas las transacciones en un bloque, produciendo una huella digital completa de todo el conjunto de transacciones, proporcionando un proceso muy eficiente para verificar si una transacción está incluida en un bloque.
Un árbol de Merkle se construye mediante la ejecución de una función de hash en pares de nodos de forma recursiva hasta que solo queda un único hash, al que se le llama raíz o raíz merkle.
Crear el hash de raíz es rápido y fácil, siempre y cuando se conozcan todas las ramas y hojas. Recordamos la función de una función hash: funciona clara y rápidamente en una dirección y es imposible descomponerla en la otra dirección. Si el hash raíz es conocido, pero las transacciones son desconocidas, es imposible adivinar las transacciones.
Por lo tanto, un hash de raíz por sí solo no es suficiente, y el resto del bloque debe guardarse. Por lo tanto, el minero puede validar el hash de raíz en cualquier momento al volver a copiar la información contenida en el bloque. Mientras la función hash sea la misma, los mineros siempre obtienen el mismo hash para una entrada de datos determinada. Esto es muy útil porque solo pueden verificar si están en el mismo nivel que el hash.



En búsqueda de un Hash especial
En cuanto a la extracción de la prueba de trabajo, se conoce que cuando se extrae el encabezado del bloque, se cambia de manera incremental para obtener un hash especial. En este sentido, el encabezado cuenta de cinco constantes y una variable.
El número de versión del software son entendidas como las constantes. Así como también el hash del bloque anterior, el hash raíz del árbol Merkle, la marca de tiempo y el tamaño de destino del hash buscado en bytes.
Mientras que, el nonce vendría siendo la variable. Un nonce es un número elevado por uno. Luego, el minero procesa los datos y comprueba si los datos dan como resultado un hash que está por debajo del valor objetivo buscado.
La minería es entendía como un proceso bastante repetido que tiene el objetivo de encontrar un hash especial. Y una vez que este se encuentra, inicia nuevamente el proceso. La dificultad varía, por lo que la probabilidad de encontrar un hash va sujeta a esto.
La característica especial de este proceso es que el hash especial solo se puede encontrar adivinando. Esta tarifa cuesta poder de computación y por lo tanto mucha energía.