Blockchain/Nivel II · Mecánica/2.3 Los bloques y la cadena/Lección 1
El encabezado del bloque
Ochenta bytes de metadatos que anclan toda la cadena
MaterialesUn explorador de bloques con capacidades de visualización en hexadecimal sin formato.Un editor hexadecimal o una calculadora en línea de hash SHA-256
Curiosidad
- ¿Cómo puede una estructura de tan solo 80 bytes comprometer criptográficamente datos de transacciones por valor de millones de dólares?
- ¿Qué reglas específicas impiden que un minero manipule el campo de fecha y hora para obtener una ventaja?
- ¿Por qué puede un smartphone verificar la seguridad de la red Bitcoin sin descargar todo su historial?
Explorar
- Cada bloque de Bitcoin comienza con un encabezado de 80 bytes, seguido por una lista de transacciones de longitud variable. Aunque la lista de transacciones puede alcanzar aproximadamente cuatro millones de bytes por bloque, solo el encabezado se utiliza para el hash de prueba de trabajo y la identificación de la cadena. Esta enorme diferencia en tamaño hace que el encabezado funcione como una huella dactilar compacta del contenedor completo, lo que permite a los nodos procesar los metadatos antes de descargar los datos masivos.
- El primer campo es ‘version’, que ocupa cuatro bytes. Originalmente estaba destinado a hacer un seguimiento de las iteraciones del software, pero ahora contiene bits de señalización para los soft forks según BIP9. Los mineros establecen números de versión específicos para indicar su soporte a nuevas reglas de consenso antes de la activación. Este campo también incluye restricciones; por ejemplo, BIP34 requería que los bloques de versión 2 incrustaran la altura del bloque en el script de transacción coinbase, lo que demuestra cómo el encabezado impone cambios estructurales en toda la red.
- El ‘hash del bloque anterior’ (32 bytes) vincula cada bloque con su padre al contener el doble hash SHA-256 del encabezado anterior. Cambiar cualquier byte en un bloque pasado altera su hash, lo que rompe el vínculo con todos los bloques posteriores. Esta cadena de hashes garantiza que los datos históricos no puedan ser alterados sin rehacer el trabajo computacional para todos los bloques siguientes.
- La ‘raíz Merkle’ (32 bytes) sirve como huella criptográfica para todas las transacciones dentro del bloque. Se obtiene al hashear recursivamente pares de identificadores de transacción hasta que queda un único valor. Esta estructura permite la verificación simplificada de pagos, donde un cliente ligero puede demostrar la inclusión de una transacción específica utilizando únicamente esta raíz y un pequeño conjunto de hashes hermanos, en lugar de descargar el bloque completo.
- La ‘timestamp’ (4 bytes) registra el momento de creación en segundos desde la época Unix. Las reglas de consenso restringen este campo para evitar manipulaciones: debe superar el tiempo mediano de los 11 bloques anteriores y es rechazado por un nodo si está más de dos horas por delante del reloj propio de dicho nodo (desde Bitcoin Core 27, se utiliza el tiempo del sistema del nodo; las versiones anteriores empleaban un tiempo ajustado por los pares). Estas restricciones garantizan que los tiempos de los bloques permanezcan razonablemente precisos para los cálculos de dificultad, al mismo tiempo que permiten cierta variación debido a las demoras en la propagación por la red.
- Los campos restantes son ‘nBits’ (4 bytes), una codificación compacta del objetivo de prueba de trabajo, y ‘nonce’ (4 bytes), un número arbitrario que los mineros modifican para encontrar un hash válido. Dado que los encabezados son pequeños, almacenar todos los encabezados desde 2009 requiere menos de 100 MB de espacio de almacenamiento. Un cliente ligero puede contener toda esta historia, verificar de forma independiente todas las restricciones de prueba de trabajo y asumir, sin verificar las transacciones, que la cadena con más trabajo acumulado es válida.
Datos clave
- El encabezado del bloque de Bitcoin consta exactamente de seis campos que suman un total de 80 bytes.
- El campo ‘version’ contiene bits de señalización de soft fork según lo definido en BIP9.
- La marca de tiempo de un bloque debe superar la mediana de los 11 bloques anteriores y no estar más de dos horas por delante del reloj del nodo validador.
- Un bloque completo puede ser casi 50,000 veces más grande que su encabezado debido a los datos de la transacción.
- Almacenar todos los encabezados de Bitcoin desde el origen requiere menos de 100 MB de espacio de almacenamiento.
- El campo ‘nBits’ almacena el objetivo de dificultad en un formato compacto uint32.
Ejercicio nueve, seis, tres, uno
9ReunirEnumera 9 cosas que puedes leer de un bloque en un explorador: sus seis campos de encabezado, más el hash del bloque, la altura y la dificultad derivadas de ellos.
6AgruparAgrupa los 9 en 6: conexión de la cadena, compromiso de transacciones, tiempo, objetivo de minería, búsqueda de minería y valores derivados.
3DestilarReduce los 6 a 3 trabajos que el encabezado realiza para la red.
1CristalizarEscribe una afirmación que defina la relación entre el encabezado de 80 bytes y la lista de transacciones de varios megabytes en términos de compromiso criptográfico.
Verificación de hechos
Fechas, cifras y afirmaciones verificadas con las fuentes publicadas que se enumeran a continuación.