Un Block, o bloque, es el siguiente grupo de transacciones en la historia de Bitcoin. Cuando tu pago entra en un bloque válido de la cadena que sigue tu nodo, recibe su primera confirmación. No lo decide un administrador central: un minero construye el bloque y los demás nodos comprueban las reglas de Bitcoin.
Envías un pago en bitcoin y la cartera indica inicialmente que espera confirmación. La transacción se propaga entre nodos y puede entrar en sus mempools, listas locales de transacciones sin confirmar. Un minero selecciona algunas para un bloque candidato. Si encuentra el Proof of Work (un resultado de la minería que cumple las reglas de la red) requerido y los nodos aceptan el bloque en la cadena activa, el pago incluido recibe su primera confirmación. El siguiente bloque construido encima eleva el contador a dos. El objetivo medio es unos diez minutos entre bloques, no garantizar que cada pago pase en diez minutos. [1] [3]
Cada bloque tiene una cabecera breve y sus transacciones. La cabecera incluye, entre otros datos, la huella criptográfica del bloque anterior: una referencia que cambia si cambian sus datos. Así se forma una historia enlazada, no un montón de pagos sueltos. Otra huella de la cabecera resume las transacciones del bloque y se llama Merkle root. El minero prueba variantes de la cabecera hasta que su hash, una huella numérica, cumple el límite de dificultad. Eso no demuestra todavía que los pagos sean válidos. Un nodo completo también verifica firmas, permisos de gasto y otras reglas: un Proof of Work válido no arregla una transacción inválida. [1] [3]
La primera transacción se llama Coinbase Transaction. El minero puede reclamar en ella, como máximo, la nueva emisión permitida y las comisiones de las transacciones incluidas. Después el nodo comprueba las transacciones ordinarias en orden: cantidades antes no gastadas dejan de estar disponibles y se crean otras nuevas. Esas cantidades individuales se llaman UTXO. Un pago puede gastar la salida de otro anterior dentro del mismo bloque si cumple las demás condiciones. No puede gastar dos veces la misma salida. La nueva recompensa de coinbase no puede gastarse inmediatamente en ese bloque: se aplica una espera especial de 100 bloques. [1]
Un bloque no tiene un número fijo de plazas para pagos. Una transacción sencilla necesita menos datos que una compleja, por lo que distintos números de transacciones pueden llenar la misma capacidad. Desde SegWit (una actualización de las reglas de Bitcoin que cambió cómo se almacenan y contabilizan los datos de las transacciones) se contabiliza mediante peso, con un límite de 4.000.000 de unidades: una medida técnica de datos, no una masa física. También se aplican otras reglas. El minero no está obligado a llenarlo. Un bloque llamado vacío puede omitir los pagos ordinarios, pero contiene una coinbase. Vacío no significa, por tanto, sin transacciones ni automáticamente inválido. [1] [2]
A veces dos mineros encuentran bloques casi a la vez y ambos enlazan con el mismo predecesor. Los dos pueden ser válidos, pero crean ramas competidoras. El nodo elige entre ramas válidas según el trabajo total demostrado, no por una votación simple ni solo por el número de bloques. Cambiar a otra rama es una reorganización. Un pago del bloque abandonado puede perder confirmaciones; si sigue siendo válido y no está en la nueva rama, puede volver a esperar inclusión. Más confirmaciones suelen aportar confianza, pero no son una promesa matemática de irreversibilidad. Como referencia técnica, la cabecera tiene 80 bytes. La Merkle root es una huella calculada a partir de los identificadores de transacción, llamados txid, en el orden que ocupan en el bloque. Los datos witness de SegWit, como las firmas necesarias para verificar un gasto, tienen otra huella criptográfica registrada mediante la coinbase. Estos vínculos permiten al nodo comprobar que los datos recibidos corresponden al bloque. [1] [2]
Para obtener la imagen más completa, lee esta entrada junto con Block Header, Transacción, Timechain / Blockchain, Minería. También enlazan con esta entrada Block Header, Merkle Tree, Confirmación, Transacción coinbase.