Introducción

Los bloques son la unidad de organización de datos de la tecnología blockchain o cadena de bloque. De estos dependen, que la información que generan los usuarios de la red se procese y quede almacenada de forma segura en el historial de la blockchain. Pero ¿Qué son realmente? ¿Cómo están conformados? ¿Cuáles son sus principales características? Descubramos esto y mucho más en este nuevo artículo de la sección Explicado de Cointelegraph.

¿Qué es un bloque?

Como hemos dicho antes, un bloque es una unidad fundamental en blockchain que sirve para organizar la información que se origina en la red de dicha blockchain. La creación de este concepto busca optimizar el proceso de validación de las transacciones que se realizan en la red.

Ahora bien, esto nos dice que los bloques son una especie de caja u organizador de transacciones de un blockchain. Y si es una analogía bastante correcta. Al igual que una base de datos crear filas y columnas para almacenar información, la blockchain crear bloques para almacenar la información que genera. El resultado, la blockchain puede crear una especie de base de datos donde los datos que almacenan una vez grabados, no se pueden modificar. Una gran adición en pro de transparencia e integridad de la información que queramos almacenar.

Los bloques en una blockchain son generados gracias a un proceso diseñado para tal fin. Por ejemplo, en Bitcoin la primera blockchain, el proceso de generación de bloques usa un complejo proceso de minería impulsado por la Prueba de Trabajo (Proof of Work - PoW). Pero en la actualidad, existen otros métodos de generación de bloques que están impulsados por otros sistemas como la Prueba de Participación (Proof of Stake - PoS) o la Prueba de Autoridad (Proof of Authority -  PoA). Como sea, cada blockchain tienen un método de producción de bloques único y ajustado a las realidades de su funcionamiento.

Relacionado: Qué es y cómo funciona la minería de Bitcoin. Todo sobre cómo minar bitcoins

Comprendiendo el concepto de bloque

Lo realmente importante en la conceptualización de un bloque es su finalidad. Para entender mejor esto tomemos el siguiente ejemplo:

Si estamos en una oficina y queremos llevar de un sitio a otro una gran cantidad de información en papel, lo mejor es poner todos esos papeles en una caja y trasladarlos hasta su destino. Pues bien, lo mismo pasa en una blockchain. Los usuarios de una criptomoneda generan gran cantidad de transacciones e información. Información que luego es organizada, procesada y almacenada.

Esta es una tarea que recae en los mineros de la red. Son ellos quienes toman las transacciones, las disponen en un bloque y por medio del proceso de minería generan un hash de bloque válido para que la red acepte el mismo. Solo así las transacciones dentro de ese bloque se confirman e incluyen en el historial de la blockchain.

Realizar el proceso de esta forma garantiza un mejor rendimiento que atender las transacciones de forma individual, y es la razón por la que los bloques fueron creados para organizar la información en la blockchain.

Partes que forman un bloque

Ahora bien, los bloques no son solo una caja de almacenamiento sin sentido. Estos tienen una estructura bien definida que ayuda a organizar la información de la mejor manera posible. Por ejemplo, esta estructura fundamental en Bitcoin cuenta con los siguientes elementos:

  1. Hash del Bloque o Block ID. Este es un hash identificador único creado para diferenciar los bloques unos de otros. Usualmente este hash es creado por medio del proceso de minería de la blockchain en cuestión. Para su generación se usa la función SHA-256 u otra habilitada por la blockchain.
  2. Altura. La altura nos indica la posición en la que se encuentra ubicado el bloque con respecto al resto de bloque de la blockchain.
  3. Número de Operaciones. Este campo nos muestra la totalidad de las transacciones procesadas en ese bloque.
  4. Timestamp o marca de tiempo. Este dato indica el momento en el que el bloque fue generado. Este dato normalmente se encuentra escrito en formato de tiempo UNIX, pero los exploradores de bloques transforman el mismo en formato de tiempo UTC o GMT para que sea fácilmente legible.
  5. Tiempo de recepción. Este campo nos indica el momento en el que la red ha recibido el bloque por parte de los mineros.
  6. Retransmitido. Generalmente te indica el nodo que ha transmitido el bloque a los demás nodos interconectados a la red.
  7. Dificultad. Este campo indica la dificultad de minería activa en la red. Además de servir como índice para saber con qué dificultad ha sido generado dicho bloque. Este es un dato que sirve para controlar el proceso de minería y que busca regular la emisión de bloques y criptomonedas en el tiempo.
  8. Tamaño del bloque. Esta es una medida de peso o tamaño de almacenamiento de ese bloque. Suele estar reflejado en bytes.
  9. Versión. Este número indica la versión del protocolo que está corriendo el nodo encargado del minado de ese bloque.
  10. Nonce. El nonce es un número arbitrario que se utiliza para la generación del bloque.
  11. Recompensa de bloque. Este dato refleja la recompensa del bloque activa para el momento en el que se ha minado dicho bloque.
  12. Merkle Root. Es el resultado final del Árbol Merkle originado por todas las transacciones contenidas dentro del bloque.
  13. Hash del bloque anterior. Como bien lo dice es el hash del bloque anterior. Este dato se usa para crear un enlace entre los distintos bloques de la blockchain. Además de ser usado en el proceso de minería, también sirve como un medio para garantizar que los bloques no se puedan manipular sin alterar completamente la historia de la blockchain.

Si bien estos elementos son básicos dentro de Bitcoin, otras blockchain pueden agregar otros campos ajustando la funcionalidad de los bloques a sus propias estructuras. Así,s por ejemplo, en Ethereum podemos información relacionada con el gasto de Gas o costo de procesamiento por parte de la red.

https://lh6.googleusercontent.com/yyimlvz5Wttv6Ef0Zgw1FsKJ3Rbnmlzybojqa1A3FXnR_Iu1YrqAi3rZocJVYezDlUQD46l2FnP3wLIPB4Qu1_3EnyI658MoOOu065UfTxadlGvmsxjlQxBTo33mCQ_tZqMkpPpp

¿Cómo se generan los bloques en blockchain?

Como lo comentamos en un principio, la generación de bloques responde a la programación de cada blockchain y los sistemas que esta use. Es decir, existen proyectos que pueden tener un proceso de generación muy parecidos, y otros proyectos con modelos de generación radicalmente distintos.

Sin embargo, el proceso básico de fondo es el mismo.  La generación de un bloque comienza en la mempool. Una mempool o pool de memoria, es un espacio donde son almacenadas las transacciones que aún no han sido atendidas por la red. Es una especie de sala de espera donde las transacciones esperan a ser atendidas por los mineros. Una vez que como usuarios emitimos una transacción este es el lugar al que va nuestra transacción.

A continuación, los mineros reciben de la red un target u objetivo a conseguir, ajustado por la dificultad de la red activa en ese momento para la minería. Esto es importante, porque la dificultad y el target son esenciales en el proceso de minería. Esto al menos en los sistemas que usan la Prueba de Trabajo, como es el caso de Bitcoin. En otros sistemas, como el de Prueba de Participación, este mecanismo no existe. Pero cuando la red llega a este punto, los mineros comienzan su trabajo.

El siguiente paso de los mineros es escoger las transacciones a atender. Generalmente, los mineros escogen las transacciones que pagan más comisiones, en un esfuerzo por obtener mayores ganancias. Ahora entiendes, porque muchas veces las transacciones que realizamos con bajas comisiones tardan tanto tiempo en confirmarse. Si la red y la mempool están congestionadas esto significa que solo aquel que pague comisiones altas recibirá mayor prioridad para confirmar sus transacciones.

Ahora bien, una vez que los mineros han escogido las transacciones a incluir en el bloque comienza el proceso de generación propiamente dicho. Para ello, los mineros crearán un Merkle Root de todas las transacciones incluidas en el bloque, crearán un timestamp, un nonce, y tomarán la versión, la dificultad, el hash del bloque anterior. Todos estos datos los usarán para crear un hash de bloque cuyo valor decimal sea menor que el valor del target dado por la red.

Este es un proceso sumamente costoso y que les llevará a explotar al máximo los recursos computacionales de los que dispone. Es el llamado proceso de minería de criptomonedas por medio de la Prueba de Trabajo. Otros procesos, como el PoS, DPoS, PoA o PoET no realizan este arduo trabajo sino que en su lugar hacen un trabajo más sencillo pero con el mismo objetivo: crear un hash o Block ID para el nuevo bloque.

Una vez se crea el nuevo hash, se comprueba que el mismo sea válido. Solo entonces se puede decir que se ha generado un nuevo bloque. Con ello, el nuevo bloque se incluye en el historial de la blockchain. Una vez allí quedará como testigo inmutable del proceso. Además, luego de terminado el proceso, los mineros pasan a reclamar tanto las comisiones de todas las transacciones del bloque y recompensa de bloque por su trabajo de minería. Seguidamente el proceso vuelve a repetirse una vez más, siguiendo el protocolo establecido.

Relacionado: ¿Qué es la recompensa de bloque?

Importancia de los bloques en blockchain

Cómo ven los bloques son parte importante para la blockchain. Estos son lo que permiten organizar la información dentro de la misma. Pero adicional a estos, permiten implementar una serie de funcionalidades adicionales.

Por ejemplo, es posible almacenar información de nombre de dominios o DNS a los bloques de Bitcoin. Como resultado, se almacena de forma única información esencial para el funcionamiento del Internet como lo conocemos. Cada uno de estos nombres de dominio identifica una web en especial con una dirección IP, y al estar grabada en una blockchain resulta imposible reescribir o manipular dicha información. Así, es posible crear un sistema DNS descentralizado seguro, confiable, auditable, abierto y resistente a la censura. Parece un sueño, pero proyectos como Namecoin y Unstoppable Domains, hacen precisamente esto. Este tipo de funcionalidades son posible gracias a que podemos almacenar la información en bloques de datos debidamente organizados.

De igual forma pasa con la creación de tokens y smart contracts. La creación de este tipo de funcionalidades es posible también gracias a los bloques. Al almacenar en estos bloques la información necesaria de estos elementos, podemos acceder a ellos cuando deseemos. Y debido a que la programación necesaria para estos elementos es muy grande, organizar dicha información en bloques resulta más óptima en todos los sentidos.

Así podemos tener bien en claro que los bloques no son solo un capricho del diseño, sino todo lo contrario, son la mejor forma para diseñar un sistema con las características de la blockchain.