El presente anexo muestra la estructura de las transacciones y bloques del protocolo Bitcoin.
Las transacciones son estructuras de datos que almacenan las transferencias desde unos participantes origen, a los que se les llama entradas, hacia unos participantes destinos, a los que se les llama salidas. Su estructura se define según el siguiente esquema:[1]
Tamaño | Campo | Descripción |
---|---|---|
4 bytes | Versión | Reglas a las cuales se apega la transacción |
1-9 bytes | Total de entradas | Número de entradas que se incluyen |
Variable | Entradas | Una o más entradas de la transacción |
1-9 bytes | Total de salidas | Número de salidas que se incluyen |
Variable | Salidas | Una o más salidas de la transacción |
4 bytes | Bloqueo | Fecha en formato UNIX o un número de bloques |
Tamaño | Campo | Descripción |
---|---|---|
8 bytes | Monto | Cantidad de satohis |
1-9 bytes | Tamaño del script de bloqueo | Tamaño en bytes que tiene el script de bloqueo |
Variable | Script de bloqueo | Script que define las condiciones a cumplir para poder gastar el monto |
Tamaño | Campo | Descripción |
---|---|---|
32 bytes | Hash de la transacción | Identificación de la transacción que contiene la UTXO a gastar |
4 bytes | Índice de la salida | El índice de la UTXO a ser gastada |
1-9 bytes | Tamaño del script de desbloqueo | Tamaño en bytes que tiene el script de desbloqueo |
Variable | Script de desbloqueo | Script que cumple las condiciones del script de bloqueo de la UTXO |
4 bytes | Número de secuencia | No usado. Actualmente vale 0xFFFFFFFF |
Los mineros eligen las transacciones y las agrupan en bloques. Cada bloque tiene la siguiente estructura:
Tamaño | Campo | Comentario |
---|---|---|
4 bytes | Número mágico 0xD9B4BEF9 | Valor poco probable que se produzca en tabla ASCII de los datos de siguiente bloque. |
4 bytes | Tamaño de bloque | |
80 bytes | Cabecera de bloque | |
1-9 bytes | Contador de transacciones | |
Variable | Transacciones | Lista de las transacciones incluidas en el bloque |
La cabecera de bloque, que se incluye en la tabla anterior, tiene la siguiente estructura:
Tamaño | Campo | Comentario |
---|---|---|
4 bytes | Versión | Número de versión del protocolo bitcoin |
32 bytes | Hash de la cabecera del bloque anterior | Encadena los bloques, dando un orden bien definido a las transacciones y una firma acumulativa de las mismas (se firma lo actual y todo lo anterior enlazado) |
32 bytes | Hash del contenido del bloque | Es un resumen de la raíz del árbol de Merkle de las transacciones del bloque. Esto asegura que las transacciones del bloque no se pueden cambiar una vez que son parte de un bloque |
4 bytes | Marca temporal tipo UNIX | Es el número de segundos pasados desde enero de 1970 |
4 bytes | Dificultad minera del bloque | Número de ceros al principio que tiene que poseer el resumen de la cabecera. Esto regula la dificultad para validar un bloque. |
4 bytes | Nonce | Bits con valor arbitrario |