Saltar al contenido
buybitcoinsmart

Glosario / Transacciones y comisiones

Índice de salida

También se conoce como vout.

¿Qué es un índice de salida?
Un índice de salida es la posición de una salida dentro de una transacción, contada desde cero, y es el número que va después de los dos puntos cuando una moneda aparece escrita como txid:1.

Las transacciones pueden pagar a decenas de destinatarios a la vez, así que el identificador por sí solo nunca dice qué pago es el suyo. El índice se almacena como un número de cuatro bytes, lo que permite valores de hasta 4.294.967.295, muchas más salidas de las que podría contener cualquier bloque. Junto con el ID de transacción forma un outpoint, la ubicación permanente de una moneda dentro del registro público.

Cómo funciona

Las salidas están ordenadas, y el orden es aquel en el que las haya serializado quien creó la transacción. La primera salida es el índice 0, la segunda es el índice 1, y la numeración continúa hasta el final de la lista sin saltarse ningún número. Nada en el índice describe el monto, el destinatario ni el propósito de la salida; es una posición y nada más.

Toda entrada de toda transacción lleva uno de estos números. Una entrada empieza por una referencia de 36 bytes: 32 bytes de ID de transacción seguidos de un índice de cuatro bytes en little endian (el byte menos significativo primero). Así es como un gasto indica qué moneda está consumiendo, y por eso los nodos pueden comprobar un gasto sin buscar en toda la cadena.

La transacción coinbase de cada bloque rompe el patrón a propósito. Como no tiene ninguna moneda que gastar, su única entrada apunta a un ID de transacción de 32 bytes cero con el índice en 0xffffffff, el valor máximo que puede contener el campo. Todo lo que hace referencia a ese outpoint se reconoce como dinero de nueva emisión y no como una transferencia.

La posición también filtra información, y por eso las billeteras la tratan como una opción de privacidad. Si el cambio cayera siempre en el índice 1, cualquier observador podría etiquetar al instante la salida de cambio de cada transacción. Bitcoin Core coloca la salida de cambio en una posición aleatoria, y el BIP69 propuso el enfoque opuesto, que consiste en disponer las entradas y las salidas en un orden lexicográfico determinista para que del orden no pueda deducirse nada en absoluto.

Dónde aparece

Las pantallas de control de monedas son donde la mayoría de la gente se encuentra con el número sin saber cómo se llama. Sparrow, Electrum y Bitcoin Core muestran cada uno sus monedas como un ID de transacción más un índice, porque dos salidas de la misma transacción pueden ser suyas las dos y solo el índice las distingue.

El procesamiento por lotes de los exchanges hace visible el número. Cuando Kraken o Binance pagan cien retiros en una sola transacción, su moneda queda en la posición que le haya asignado el software que agrupa los retiros por lotes, así que ver su dinero en el índice 87 de 120 salidas es completamente normal y no indica que algo haya salido mal.

Las herramientas para desarrolladores lo piden directamente. El comando gettxout recibe un ID de transacción y un índice como argumentos separados, los archivos PSBT hacen referencia a las entradas por su outpoint, y las billeteras de hardware muestran "output 2 of 3" en pantalla mientras usted aprueba un gasto. Los servicios de soporte que piden "el txid y el vout" están pidiendo esos mismos dos valores.

Índice de salida frente a outpoint

Un índice de salida por sí solo no significa nada, porque el índice 0 existe en todas las transacciones que se han hecho. Un outpoint es la combinación de ambos, ID de transacción e índice juntos, e identifica exactamente una moneda entre todas las que han existido. La distinción importa en cuanto usted pega algo en un campo de control de monedas o en una solicitud de soporte: media referencia no es una referencia.

No confundir con

Preguntas frecuentes

¿Qué significa vout en un explorador de bloques?

Es el índice de salida, la posición de una salida dentro de su transacción, empezando por cero. Los exploradores de bloques y el resultado de las llamadas RPC usan vout como nombre del campo, y las billeteras suelen llamar a lo mismo output number.

¿La salida 0 es siempre el pago y la salida 1 siempre el cambio?

No, y suponerlo es una debilidad de privacidad conocida. Bitcoin Core coloca la salida de cambio en una posición aleatoria precisamente para que los observadores no puedan deducir la intención a partir del orden.

Términos relacionados

Más en la sección Transacciones y comisiones

Leer esta página en inglés