Blockchain/Nivel II · Mecánica/2.2 Transacciones/Lección 4
Cambiar salidas
El resto que revela al remitente y los algoritmos que intentan ocultarlo
MaterialesUn explorador de bloques (p. ej., mempool.space o blockchain.com)Una billetera de Bitcoin con al menos dos UTXOUna hoja de cálculo para registrar los ID de las transacciones, los valores de entrada y las estructuras de salida.
Curiosidad
- ¿Por qué una transacción que paga una cantidad exacta suele verse diferente de una que requiere cambio?
- ¿Cómo puede un analista determinar cuál salida es el pago y cuál es el cambio sin ver el estado interno de la billetera?
- ¿Qué hace que un algoritmo de selección de monedas prefiera una comisión ligeramente más alta a una más baja?
Explorar
- Las entradas de las transacciones en Bitcoin funcionan como billetes físicos indivisibles. Si Alice pretende pagar 5 BTC pero solo posee un UTXO de 20 BTC, no puede dividir esa cantidad. Debe gastar los 20 BTC completos y recibir 15 BTC de vuelta como cambio, una vez deducidas las comisiones. Por lo tanto, la mayoría de las transacciones incluyen dos salidas: una para el destinatario y otra para el cambio.
- A nivel de protocolo, no existe distinción entre una salida de ‘pago’ y una salida de ‘devolución’. Ambas son scripts de bloqueo estándar, como P2PKH o P2WPKH, que esperan las condiciones para ser gastados. Solo el creador de la transacción identifica su propiedad. Esta falta de diferenciación es un mecanismo fundamental de privacidad: si una dirección de devolución y una dirección de pago parecen idénticas, los observadores externos no pueden distinguirlas con certeza.
- Las billeteras utilizan algoritmos de selección de monedas para determinar qué entradas gastar. Si Alice posee dos UTXO de 50,000 satoshi y desea pagarle a Bob 85,000 satoshi, gasta ambas entradas (100,000 sats) y crea dos salidas: una para Bob (85,000 sats) y otra para ella misma (15,000 sats menos la comisión). Esta estructura, con una o más entradas y exactamente dos salidas, es una de las más comunes en la cadena.
- Por cuestiones de privacidad, es habitual asignar el cambio a una dirección nueva, nunca utilizada antes, del conjunto de claves de la billetera. Reutilizar una dirección antigua para el cambio permite a los analistas de cadena conectar la actividad transaccional anterior con la nueva. En los casos óptimos, tanto las salidas de pago como las de cambio se asignan a direcciones nuevas, lo que garantiza que parezcan idénticas para los observadores externos.
- No todos los pagos necesitan cambio. Los algoritmos de selección de monedas como Branch and Bound, descritos por Mark Erhardt en 2016 y utilizados en Bitcoin Core, buscan un conjunto de entradas cuyo total coincida lo suficientemente bien con el pago más la comisión, de modo que el pequeño remanente pueda destinarse simplemente a dicha comisión. Una transacción sin cambio es más económica, no genera nuevas salidas pequeñas y le brinda a los analistas una pista menos.
- Las salidas muy pequeñas generan su propio problema. Por debajo del umbral de polvo (por defecto, unos 546 satoshis para las salidas P2PKH y 294 para las P2WPKH), gastar una salida cuesta más de lo que vale, y los nodos no retransmitirán transacciones que generen dichas salidas. Los analistas también buscan patrones de cambio característicos: la salida con número redondo suele ser el pago, mientras que una salida cuyo tipo de dirección coincide con las entradas a menudo corresponde al cambio.
Datos clave
- Las entradas de la transacción son indivisibles; el remanente que excede al pago y la comisión se devuelve como cambio, a menos que sea lo suficientemente pequeño para sumarse a la comisión.
- A nivel de protocolo, no existe diferencia técnica entre una salida de cambio y una salida de pago; solo quien crea la transacción sabe cuál es cuál.
- La selección de monedas mediante Branch and Bound (Erhardt, 2016) busca conjuntos de entradas que no necesiten una salida de cambio.
- Las transacciones sin cambio no tienen ninguna salida que devuelva fondos al remitente; cualquier pequeño remanente se destina a la comisión.
- Usar una dirección nueva, nunca antes vista, para el cambio impide que terceros la distingan fácilmente de una salida de pago.
- El umbral por defecto de dust en Bitcoin Core es de aproximadamente 546 satoshis para salidas P2PKH y 294 para P2WPKH.
Ejercicio nueve, seis, tres, uno
9ReunirEnumera 9 transacciones recientes de Bitcoin que hayas observado o creado. Anota el número de entradas y salidas de cada una, y si había una salida de cambio.
6AgruparAgrupa las 9 transacciones en 6 categorías según su estructura: entrada única/salida única, múltiples entradas/dos salidas (cambio), múltiples entradas/salida única (sin cambio), coinbase, OP_RETURN u otras estructuras complejas.
3DestilarReduce los 6 grupos a 3 implicaciones de privacidad distintas en relación con la facilidad con que un analista puede vincular los resultados a una identidad de usuario específica.
1CristalizarEscribe una oración que explique por qué la ausencia de una distinción técnica entre las salidas de pago y las de cambio es al mismo tiempo una característica para la fungibilidad y un desafío para la privacidad individual.
Verificación de hechos
Fechas, cifras y afirmaciones verificadas con las fuentes publicadas que se enumeran a continuación.
- M. Erhardt, 'An Evaluation of Coin Selection Strategies' (2016)
- A. M. Antonopoulos & D. A. Harding, Mastering Bitcoin, 3rd ed. (2023)
- Bitcoin Core documentation on transaction relay policies and dust limits
- Satoshi Nakamoto, Bitcoin: A Peer-to-Peer Electronic Cash System