A ver si no me hago un lío explicándome:
Una transacción bitcoin está formada, a grandes rasgos, por dos partes diferenciadas. Una primera parte sería la parte "imput" que serían las entradas de dinero, y una parte "output" que serían las salidas.
La parte input, además de incluir las entradas de dinero de la transacción también contiene la demostración criptográfica de que el usuario que quiere realizar la transacción es el verdadero propietario de los bitcoins que van a intercambiarse. Normalmente, pero no siempre, la única condición que se exige para poder incluir los bitcoins en "input" es que el usuario que realiza la transacción demuestre que es el legítimo propietario de la dirección bitcoin desde la que los bitcoins van a salir. Esto se hace indicando la clave pública que corresponde a la dirección desde la que salen los bitcoins y firmando un hash de la transacción completa con la clave privada.
La parte output incluye las diferentes direcciones a las que se van a enviar los bitcoins que se marcan en la parte input y, algo que la gente suele pasar por alto, las condiciones que deberá cumplir el receptor de los bitcoins para poder gastarlos. Ojo, gastar bitcoins significa permitir que alguien los incluya dentro de un "input" en una transacción futura. Tiene sentido ya que, gastar dinero no es más que tener autorización para realizar una transacción monetaria.
A ver si queda un poco más claro con un ejemplo:
Input:
Previous tx: f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6
Index: 0
scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10
90db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501
Output:
Value: 5000000000
scriptPubKey: OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d
OP_EQUALVERIFY OP_CHECKSIG
Aquí tenemos una transacción muy básica con sus dos partes bien diferenciadas.
En la región input lo primero que encontramos es "previous tx" que es la parte en la que indicamos el hash de la transacción previa en la que nos llegaron los bitcoins a nuestra dirección.
"Index" es, dentro de la transacción previa indicada anteriormente, la posición en la que encontraríamos la llegada de bitcoins a nuestra dirección. ¿Por qué es necesario esta variable? pues porque dentro de una misma transacción puede haber varios destinatarios u outputs y con esta variable aclaramos completamente cuál es el trazado previo de los bitcoins que vamos a gastar. El 0 del ejemplo nos dice que es la primera.
Y ahora vamos a lo más complicado. El "ScriptSig". Aunque veáis un chorizo de números está formado por dos partes. La primera es la clave pública de la dirección desde la que saldrán los bitcoins. Y la segunda parte es la firma de un hash de toda la transacción (simplificada sin firmas) con la correspondiente clave privada de la dirección bitcoin. Esta es la forma que tiene el protocolo de que alguien pueda demostrar que es el legítimo propietario de los bitcoins que van a salir en esta transacción.
Y ahora la parte "output".
Value: es la cantidad de bitcoins que van a ir a la dirección de destino en la transacción medidos en Satoshis. Ojo! porque si la suma de bitcoins en los outputs es inferior a la suma de bitcoins incluídos en los inputs, la diferencia es considerada como transaction fee (comisión) y se la quedará el minero que incorpore esta transacción en un bloque.
ScriptPubKey: Aquí viene otra de las parte importantes en una transacción. ScriptpubKey recoge las condiciones para poder emplear los bitcoins intercambiados en esta transacción como "imput" en una hipotética transacción futura. Esto es, impone la condición que debe ser validada para poder gastar los bitcoins en el futuro. Normalmente, tal y como pone en el ejemplo, la condición más empleada suele ser la de que el futuro usuario demuestre que posee la clave privada de la dirección bitcoin a la que han sido enviados. Es la misma condición que el usuario actual ha tenido que cumplir para poder realizar la transacción del ejemplo.
No sé si me he explicado con la suficiente claridad o sencillez. Es un tema un poco complicado porque son las tripas del protocolo, pero creo que lo mejor es que, conforme vyan surgiendo preguntas, vayamos respondiéndolas entre todos y así podamos entender mejor el funcionamiento de Bitcoin.
Os lo he contado tal y como yo entiendo que funcionan las transacciones. Puedo estar equivocado, así que no dudéis en corregirme o completar lo que he escrito, ya que no soy programador ni informático.