Transacciones con la Bitcoin

Una transacción es una sección de datos que se confirma a través de una firma, esta transacción se envía a la red de Bitcoin y forma bloques. Por lo general, contiene referencias de transacciones anteriores y asocia una cierta cantidad de bitcoins con una o muchas claves públicas (), así mismo, esta no se encripta porque no hay nada que encriptar en el sistema de Bitcoin.

Un navegador blockchain es en donde se combinan todas las transacciones en forma de una cadena de bloque y se les puede encontrar y verificar. Esto es necesario para determinar los parámetros técnicos de las transacciones y verificar los detalles de los pagos.


Contenido

El formato general de las transacciones de Bitcoin (dentro de un bloque)

Campo Descripción Tamaño
Número de la versión Por ahora 1 4 bytes
Contador de input Entero positivo VI = VarInt 1-9 bytes
Lista de datos de input El primer input de la primera transacción también se llama «coinbase» (base monetaria) <Contador de input> una gran cantidad de datos de input
Contador de output Entero positivo VI = VarInt 1-9 bytes
Lista de datos de output Los datos de output de la transacción primera utilizan bitcoins extraídos para el bloque <Contador de output> muchos datos de output
Tiempo de bloqueo Si no es cero, y los números de serie son menos que 0xFFFFFFFF: altura del bloque o marca temporal (para transacciones finales) 4 bytes

Un ejemplo de transacción de bitcoin con un input y un output

Datos

Input: Previous tx: f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6 Index: 0 scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10 90db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501 


Output: Value: 5000000000 scriptPubKey: OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d OP_EQUALVERIFY OP_CHECKSIG 

Interpretación

La entrada en esta transacción importa 50BTC desde la salida # 0 en las transacciones f5d8 …, luego la salida envía 50 BTC a una dirección de Bitcoin (expresada aquí en forma de un sistema hexadecimal – 4043 …). Cuando el destinatario desea gastar su dinero, hará alusión a la salida # 0 de esta transacción para la entrada de la suya.

Input

La entrada es una referencia a la salida de otra transacción. Una transacción a menudo posee distintas entradas. Los valores de estas referencias se reanudan y se puede utilizar el valor total de las bitcoins para la salida de la transacción actual. El tx anterior es el hash de una transacción anterior. El índice es un cierto resultado de esta transacción. El scriptSig es la primera mitad del guión (véase más abajo para más detalles sobre esto). El script se compone de dos elementos: la firma y la clave pública. La clave pública por su parte, pertenece al usuario que aplica los resultados de la transacción y confirma que el creador de esta tiene el derecho a tener a su disposición la suma de dinero obtenida de los productos. Otro elemento es EDCSA (firma hash de una versión simplificada de la transacción). En combinación con la clave pública, se confirma que el propietario real creó la firma de esta dirección de Bitcoin.

Output

El resultado contiene instrucciones sobre el envío de las bitcoins. El valor es una cantidad en satoshi  (1 BTC = 100000000 satoshi) que utiliza la transacción por lo que la transacción actual es la entrada. El ScriptPubKey es la segunda mitad del script (esto se explicará más adelante). Puede haber más de un resultado y estos compartirán la cantidad enviada desde las entradas. Solo se puede usar una vez cada salida de transacción como entrada para la transacción subsiguiente, en consecuencia, se debe usar la suma de todas las entradas de transacciones actuales en la salida. De lo contrario, se perderá la suma restante de las entradas de la transacción. Por ejemplo, si la entrada es igual a 50BTC y el usuario solo debe enviar 25BTC, Bitcoin crea dos salidas de 25BTC cada una: una irá al destino y la otra irá al propietario de los fondos otra vez (llamado 'cambio'- una transacción en la que el usuario se envía dinero a sí mismo). Cualquier cantidad restante de la entrada de las bitcoins no utilizada en la transacción se convertirá en la tarifa de la transacción, mientras que la persona que genera el bloque recibirá esta tarifa. 

Verificación de la transacción

Para verificar si las entradas tienen permitido recoger las sumas requeridas de las salidas de las transacciones anteriores, Bitcoin usa el sistema estándar del script (véase a continuación) de la entrada scriptSig y de la salida de ScriptPubKey a la que hace referencia esta transacción. Se les evalúa con la ayuda de scriptPubKey al utilizar los valores restantes en la pila scriptSig. La entrada se confirma si el script scriptPubKey devuelve un valor “verdadero”. Al usar el sistema de script, el emisor puede crear condiciones muy complejas para cumplir por aquellos que desean obtener el valor de salida. Por ejemplo, es posible crear una entrada que cualquier usuario obtendrá sin autorización. También, es posible solicitar que la entrada se firme mediante 10 claves diferentes o verificadas por contraseña.

El formato general de cada input de transacción — Txin

Campo Descripción Tamaño
Hash de la transacción anterior Doble hash de SHA256 de la transacción anterior 32 bytes
índece de Txout anterior número entero no negativo, indexación da salida a la transacción anterior 4 bytes
Largo de script de Txin Entero no negativo VI = VarInt 1-9 bytes
Txin-script / scriptSig Script <largo dentro de script>-muchos bytes
sequence_no regularmente 0xFFFFFFFF; sólo funciona sí lock_time de transacción > 0 4 bytes

Sesión de input describe adecuadamente dónde y cómo obtener el número de Bitcoins que su nuevo propietario puede disponer . Si es la única entrada al primer bloque de la transacción, se llama la entrada de transacción de generación y sus contenidos están completamente ignorados.

El formato general de cada output de transacción — Txout

Campo Descripción Tamaño
value Entero no negativo, que da la suma de satoshis (1 BTC = 10^8 satoshis) necesaria para la transacción 8 bytes
Largo de Txout-script Entero no negativo 1-9 bytes
Txout-script / scriptPubKey Scrypt <largo de script de output> – muchos bytes

Output define las condiciones para el uso de los bitcoins en las siguientes transacciones.

La suma de los valores de output de la primera transacción en el bloque es el valor de los bitcoins extraídos del bloque plus la cantidad de de otras transacciones incluidas en este bloque.

Ver también en BitcoinWiki

Enlaces