Anexo:Estructura de transacciones y bloques en Bitcoin
Apariencia
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]- ↑ 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.