Anexo:Estructura de transacciones y bloques en Bitcoin

El presente anexo muestra la estructura de las transacciones y bloques del protocolo Bitcoin.

Estructura de transacciones editar

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
Salidas
Cada transacción crea salidas. Todas las salidas, excepto las comisiones, crean UTXOs (salidas de transacción sin gastar, del inglés, Unspent Transaction Outputs) reconocidas por toda la red y que están disponibles para que el dueño las gaste en un futuro. Las salidas de una transacción están formada por dos partes:[1]
  • Un monto de satoshis.
  • Un script de bloqueo escrito en lenguaje Script, el cual restringe el poder gastar el monto especificando las condiciones que se tienen que cumplir para poder gastarlo. En la mayoría de los casos el script de bloqueo asigna el monto a una dirección, transfiriendo de esta forma los satoshis al nuevo dueño.
La estructura de una salida es la siguiente:[1]
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
La mayoría de las transacciones incluyen comisiones, las cuales compensan a los mineros por su trabajo de asegurar la red y desincentivan el abuso de la red al imponer un pequeño costo a cada transacción. Las comisiones no son obligatorias pero es una motivación para que los mineros incluyan la transacción en un bloque. La cantidad de la comisión está implícita en la diferencia entre las entradas y las salidas.[1]
Entradas
Las entradas son apuntadores a UTXO, a través de un valor de hash y el número de secuencia donde la UTXO se encuentra en la cadena de bloques. Para gastar una UTXO la entrada de la transacción incluye un script de desbloqueo, en lenguaje de script, que satisface la condición especificada por la UTXO gastada. Este script normalmente consta de una firma, la cual prueba la posesión de la clave privada asociada a la dirección que se encuentra especificada en el script de bloqueo de la UTXO.[1]
La estructura de una entrada es la siguiente:[1]
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
Bloqueo
El bloqueo indica una condición de tiempo para que la transacción puede ser agregada a la cadena de bloques. Posibles valores:
  • 0. Se puede incluir inmediatamente
  • Mayor que 0 y menor que 500 millones. La transacción no debe incluirse antes de ese número de bloque.
  • Mayor de 500 millones. Se interpreta como una fecha en forma UNIX a partir de la cual la transacción puede ser agregada a la cadena de bloques.

Estructura de bloques editar

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

Referencias editar

  1. a b c d e f Abraham Jesús Basurto Becerra. Centro de Investigación y de Estudios Avanzados del Instituto Politécnico Nacional. Mexico D.F. (diciembre de 2015). «Aspectos de seguridad de Bitcoin y su aplicación en una alternativa de infraestructura de llave pública». Consultado el 4 de diciembre de 2017.