Salida (Output)
Un paquete de bitcoins creado en una transacción
Una salida (output) es un paquete de bitcoins creado en una transacción.
Puedes crear varias salidas en una transacción, donde cada salida contiene un valor de bitcoin y una traba. Una transacción futura puede entonces gastar esas salidas (como entradas), desbloqueándolas, y crear nuevas salidas con nuevas trabas. Así que las salidas son los bloques de construcción para enviar y gastar dinero en bitcoin.
Una transacción solo puede gastar salidas no gastadas anteriormente, y una vez que una salida fue gastada, no puede gastarse de nuevo.
Cajas de Seguridad
Es más fácil pensar en una salida como una caja de seguridad. Cuando haces una transacción, estás seleccionando una caja existente, abriéndola y moviendo su contenido a nuevas cajas. Las trabas que colocas en estas cajas impiden que otra persona las abra (salvo la persona a la que quieres "enviar" los bitcoins). Puedes pensar en la blockchain como una gran bóveda llena de cajas de seguridad, o, como las llamamos en Bitcoin, salidas.
Cambio
Al gastar una salida, necesitas consumir el valor entero de esa salida; no puedes abrir una salida y gastar solo parte de los bitcoins, dejando el resto bloqueado en la salida original. Así que, si la salida contiene más bitcoins de los que quieres enviar, necesitas crear una salida de cambio para enviarte el resto de vuelta. La mayoría de las transacciones usan una salida de cambio (normalmente la última salida de la transacción).
Cualquier cantidad de bitcoins que no quede bloqueada en salidas se clasifica como la tarifa de transacción y la recoge un minero. Así que, si olvidas agregar una salida de cambio, perderás algunos bitcoins.
Estructura
¿Qué hace una salida de transacción?
Una salida en una transacción bruta es solo un valor (un entero) junto con un script de bloqueo. La estructura se repite para cada salida:
| Campo | Tamaño | Formato |
|---|---|---|
| Valor | 8 bytes | little-endian |
| Tamaño del ScriptPubKey | variable | compact size |
| ScriptPubKey | variable | bytes |
Valor
El campo valor tiene 8 bytes y puede contener valores entre 0 y 18446744073709551615. Está en little-endian (los bytes aparecen "al revés" en los datos brutos) y se mide en satoshis (1 satoshi = 0,00000001 BTC).
Conversor de Unidades
El total de las salidas de una transacción no puede exceder el total de las entradas.
Tamaño del ScriptPubKey
Contiene el tamaño del script de bloqueo que viene a continuación. Es un campo compact size, así que normalmente tiene 1 byte, pero puede expandirse para scripts grandes.
Compact Size
ScriptPubKey
El campo ScriptPubKey contiene la traba que quieres colocar en la salida. Hay varios tipos de trabas, pero la más común es bloquear la salida a la clave pública de alguien (es decir, a su dirección); estos tipos de traba se llaman P2PKH y P2WPKH.
Técnicamente es posible que el campo ScriptPubKey esté vacío. Sin embargo, eso significaría que no hay traba en la salida, así que cualquiera podría gastarla.
Ejemplos
¿Cómo son las salidas de una transacción?
1 Salida
La forma más simple: una transacción con una única salida, que envía todo el valor (menos la tarifa) a un único destino. La estructura es solo monto + tamaño del scriptpubkey + scriptpubkey.
2 Salidas
El caso más común: una salida para el pago y otra para el cambio de vuelta al remitente. La estructura de salida simplemente se repite dos veces en los datos brutos.
3 Salidas
Puedes tener tantas salidas como quieras. Una transacción con 3 salidas (por ejemplo, dos pagos + un cambio) solo concatena la estructura de salida tres veces.
Monto Cero
Es posible definir el valor de una salida como 0 satoshis. Mira, por ejemplo, la transacción 3ef405a8...d225, que tiene una salida con valor cero.
ScriptPubKey Vacío
La transacción 87d8ed6a...253c tiene una salida con el ScriptPubKey vacío. Normalmente esa salida sería gastable por cualquiera (ya que no hay traba), pero el valor es cero, así que no hay valor en gastarla. En la práctica, esa transacción donó todos los satoshis de las entradas (100000 + 100000 sats) al minero como tarifa.
Resumen
¿Por qué usamos salidas?
Aunque sería posible manejar las monedas individualmente, sería poco práctico hacer una transacción separada por cada centavo en una transferencia. Para permitir que el valor se divida y combine, las transacciones contienen múltiples entradas y salidas. Normalmente habrá una única entrada de una transacción anterior mayor, o múltiples entradas combinando montos menores, y como máximo dos salidas: una para el pago y otra devolviendo el cambio, si lo hay, al remitente.
Así que, al final, las salidas son solo pequeños paquetes digitales de bitcoin, bloqueados a una condición de gasto, que pueden dividirse y recombinarse a lo largo de nuevas transacciones.