Entrada (Input)

Una salida anterior siendo gastada en una transacción

Una entrada (input) es una salida que se está gastando en una transacción. Es básicamente una referencia a una salida no gastada anterior, junto con el código de desbloqueo que desbloquea la salida para que pueda gastarse.

Puedes tener varias entradas en una transacción. Eso es porque a veces necesitas consumir varias salidas (como entradas) para poder crear el valor total que quieres enviar.

La mayoría de las transacciones tienden a tener 1 o 2 entradas, pero puedes tener miles. Sin embargo, cuantas más entradas, mayor es la transacción (en bytes), lo que la hace más cara, ya que las transacciones se seleccionan para minería en función de la tarifa por espacio que ocupan. Así que quieres seleccionar estratégicamente el menor número de entradas que te permita crear el valor total.

Estructura

¿Qué hace una entrada de transacción?

La sección de entrada de las transacciones brutas tiene la siguiente estructura (repetida para cada entrada):

CampoTamañoFormato
TXID32 bytesorden natural
VOUT4 byteslittle-endian
Tamaño del ScriptSigvariablecompact size
ScriptSigvariablebytes
Sequence4 byteslittle-endian

Como puedes ver, cada entrada referencia una salida anterior por su TXID y VOUT, y luego proporciona el código de desbloqueo por medio del campo ScriptSig.

Para scripts de bloqueo SegWit (por ejemplo, P2WPKH, P2WSH), el código de desbloqueo se mueve del ScriptSig al campo de testigo (witness).

Ejemplos

¿Cómo es una entrada de transacción?

1. Una Entrada

Una transacción básica con una entrada (campos separados):

02000000 <- versión
01 <- contador de entradas
  9945a5a440f2d3712ff095cb1efefada1cc52e139defedb92a313daed49d5678 <- txid
  01000000 <- vout
  6a <- tamaño del scriptsig
  473044022031b6a6b7...eee971dc <- scriptsig
  ffffffff <- sequence
01 <- contador de salidas
  a702000000000000 <- valor
  17 <- tamaño del scriptpubkey
  a9148ce773d254dc5df886b95848880e0b40f105643287 <- scriptpubkey
00000000 <- locktime

Little-Endian. El campo de valor en las transacciones brutas está en little-endian. Convirtiendo a702000000000000 a big-endian, obtenemos 00000000000002a7, que en decimal es 679 sats.

Valores de las entradas. Las entradas en los datos brutos no contienen el valor de la salida que se está gastando. Para descubrir el valor, necesitas volver a la transacción que creó la salida.

2. Dos Entradas

Esta transacción tiene dos entradas (cada una referencia una salida anterior distinta):

02000000 <- versión
02 <- contador de entradas
  e925fec58184fe99a4789993b62963b0813851793350b1aec99f3e75466225a5 <- txid (entrada 1)
  19000000 <- vout
  6a <- tamaño del scriptsig
  473044022046e23b8f...724b9f <- scriptsig
  ffffffff <- sequence
  ca45253a9f908429e09986454e83dfaab6ea30502356078477c81f57967a5964 <- txid (entrada 2)
  1f000000 <- vout
  6b <- tamaño del scriptsig
  483045022100f39a8b1f...724b9f <- scriptsig
  ffffffff <- sequence
...

3. Transacción de la Pizza (131 entradas)

Esta es la famosa transacción de la pizza, que tiene 131 entradas. Reúne muchas entradas más pequeñas para crear una única salida grande de 10.000 BTC. Fíjate en que selecciona salidas de varias transacciones diferentes — lo cual es perfectamente normal; mientras puedas desbloquear la salida para gastarla, no importa de qué transacción provenga.

Este tipo de transacción suele ocurrir cuando has recibido varios pagos pequeños y quieres enviar una cantidad grande de una sola vez. Es normal, pero significa que tu transacción será más grande (en bytes) y, por tanto, más cara.

Coinbase

¿Qué es una entrada coinbase?

Una coinbase es un tipo especial de entrada que se encuentra en las transacciones coinbase. La entrada de una transacción coinbase no necesita referenciar ninguna salida anterior, ya que la coinbase solo sirve para cobrar la recompensa del bloque. Por eso, el TXID es todo ceros, el VOUT es el valor máximo, y el minero es libre de poner cualquier dato dentro del ScriptSig. Por ejemplo, esta es la transacción coinbase del bloque 56.214:

01000000 <- versión
01 <- contador de entradas
0000000000000000000000000000000000000000000000000000000000000000 <- txid
ffffffff <- vout
07 <- tamaño del scriptsig
0453ec131c0108 <- scriptsig
ffffffff <- sequence
...

Selección de Monedas

¿Puedes elegir las entradas de tu transacción?

Si usas una billetera de bitcoin para hacer una transacción, una buena billetera te permite seleccionar tus propias entradas. Un buen ejemplo de billetera que permite esto es Electrum: te muestra las salidas que tienes disponibles para gastar, y eliges cuáles quieres usar como entradas en tu próxima transacción.

El beneficio de esto es que puedes elegir qué monedas quedarán asociadas a la dirección de destino, lo cual puede ser bueno para la privacidad. Sin embargo, muchas billeteras orientadas a principiantes no tienen esta función: seleccionan automáticamente la combinación más eficiente de entradas por ti, sin cargarte con la complejidad de elegirlas. Esto es perfectamente normal, pero, si quieres más control, busca una billetera que ofrezca la selección manual de monedas (coin control).

Recursos