Bitcoin: Estructura y Minado De Un Bloque

Una Blockchain es una “cadena de bloques” que se encuentran referidos entre sí formando, como su nombre lo indica, una cadena imposible de romper.

Qué es el bloque en una Blockchain

Es la estructura de datos donde se almacena la información de las transacciones, se lo conoce como Bloque.

Elementos de un bloque en una Blockchain

Los elementos que componen a un bloque son:

  • Block header: metadata de un bloque, contiene información relevante del mismo.
  • Block size: tamaño del bloque, en bytes.
  • Transaction counter: cantidad de transacciones en el bloque.
  • Transactions: todas las transacciones almacenadas en este bloque.

El encabezado es el campo muy importante, contiene la información con la que se pueden realizar otros procesos. El encabezado de un bloque contiene:

  • Version: versión del software.
  • Prev hash: hash del bloque anterior para armar la cadena.
  • Merkle root: información relacionada al árbol de Merkle para validar el bloque
  • Timestamp: marca de tiempo del bloque en segundos del momento de su generación.
  • Difficulty target: dificultad del cálculo del algoritmo proof-of-work para encontrar el hash validador del bloque.
  • Nonce: número aleatorio para validar el bloque y generar el hash encontrado por el algoritmo proof-of-work.

Por otra parte, un bloque tiene dos formas de identificarse:

  • Block hash: se calcula pasando 2 veces el encabezado por el algoritmo SHA256.
  • Block height: número del bloque o posición en la cadena.

¿Qué es el bloque génesis?

El primer bloque que toda Blockchain genera se lo conoce con el nombre de “bloque génesis”.

En la Blockchain de Bitcoin, el mismo se originó el 3 de enero del 2009 y contiene un mensaje algo particular: “Canciller al borde de un segundo rescate bancario”.

En el momento de creado este bloque, se producía en el mundo la última gran crisis financiera.

Creación y encriptado de un nuevo bloque

Dos de los datos de más importancia en el encabezado de un bloque, son los que refieren a la dificultad de cálculo para la obtención del hash y al valor aleatorio encontrado para obtener el mismo conocido como nonce.

El nonce es un valor numérico que permite realizar la validación de un bloque cuyos mineros deben descubrir de forma aleatoria para lograrlo a través del algoritmo proof-of-work.

Qué es Proof of work (PoW)

El protocolo que permite que los mineros validen los bloques utilizando un alto poder de cómputo se lo conoce como Proof of Work o prueba de trabajo.

Es efectivo para su propósito, pero consume mucha electricidad y no resulta amigable con el medio ambiente. Es por eso que, en la actualidad, se originaron nuevos protocolos en otras Blockchains como Proof of Stake o prueba de participación.

Sin embargo, PoW sigue siendo altamente eficaz en su propósito de mantener el consenso de una Blockchain y validar bloques y transacciones.

Minado de un bloque

Aproximadamente, cada 10 minutos se genera un nuevo bloque en la Blockchain de Bitcoin. El proceso de generación o minado de cada bloque tiene sus propias características.

La minería es el mecanismo fundamental que habilita el consenso descentralizado, a través de cuatro pilares:

  • Validación independiente de transacciones
  • Agregación independiente de transacciones en nuevos bloques
  • Verificación de bloques
  • Selección independiente de la cadena con más computación acumulada

Dificultad de minado de un bloque

Validar un bloque mediante el algoritmo de proof-of-work requiere poder de cómputo para la obtención de un hash con determinadas características. El mismo se realiza encriptando el encabezado de un bloque que se construye con la siguiente información:

  • Versión
  • Hash del bloque previo
  • La raíz de Merkle
  • Timestamp (marca de tiempo)
  • Target (dificultad de cálculo del Nonce)
  • Nonce (calculado con el algoritmo de PoW)

La información de todo el encabezado se encripta a través de una función de encriptado “SHA256” en dos oportunidades con un número aleatorio llamado nonce. El resultado es un valor único y representativo del bloque que depende del target de dificultad.

Encontrar el nonce no es tarea fácil para los mineros, debe ser un número tal que produzca un hash con N cantidad de ceros a la izquierda para lograr validar un bloque.

Por ejemplo: 0x0000000000123456798. La cantidad de ceros, o sea, la dificultad es determinada por la cantidad de cómputo intentando localizar este número. A más cómputo tenga la red, más ceros requiere el hash y más difícil se vuelve la tarea.

Recompensas y comisiones para los mineros

Los mineros reciben una comisión por minar el bloque y dicha comisión lleva el nombre de “Coinbase Transaction”. La misma es la primera de todo bloque e incluye toda la información relevante para que un minero reclame su recompensa.

Existen dos tipos de recompensas:

  • Al añadir un nuevo bloque a la cadena principal.
  • La suma de las comisiones de todas las transacciones de un bloque. Restando la suma de las tarifas (fees) de las transacciones añadidas en el bloque: Tarifas totales = Suma(salidas) - Suma(entradas)

Políticas extras

El protocolo de Bitcoin implementa políticas que no son aplicadas directamente en el consenso, pero lo hacen más eficaz. Son un conjunto de reglas de validación que se aplican adicionalmente al consenso sobre transacciones no confirmadas que se almacenan en el Mempool. Permiten verificar transacciones antes de ser agregadas a un nuevo bloque sin afectar a las transacciones ya confirmadas.

Conclusión

El mecanismo por detrás de cada Bloque y del funcionamiento de toda Blockchain en general es una gran obra de ingeniería de software creada por un Satoshi Nakamoto.

Comprender su funcionamiento nos dará mayor contexto para poder trabajar profesionalmente con esta Blockchain, más allá de lo que representa Bitcoin económicamente en el mundo.

El mecanismo de transacciones y minado de bloques de la Blockchain de Bitcoin explica por qué este se convierte en un excelente sistema de pagos. Es una obra de ingeniería de software admirable.


Post creado en colaboración con el Curso de Bitcoin de Platzi.