
Tiempo de lectura aprox: 4 minutos, 48 segundos
Las transferencias en Bitcoin son muy parecidas a las de la banca tradicional, en ambos casos están compuestas por entradas (ingresos) y salidas (egresos). La diferencia radica en como son movido los fondos. En el caso de la banca tradicional se envía siempre el monto exacto que el usuario quiere pagar (no se genera un cambio o retorno), mientras que en Bitcoin es como pagar con dinero en efectivo: Imagina que compras con un billete de 10$ un artículo de 7$, en esa transacción el comerciante tendrá que entregarte 3$ de cambio.
En Bitcoin la dirección de pago es a la que envías los 7$ y la de cambio o retorno es donde se depositan los 3$ de mi ejemplo, esta ultima sirve de pista para que los espías de la blockchain obtengan la información de gastos, ahorros y posiblemente, identidades personales de los usuario de Bitcoin.
Esquema de una transacción básica de Bitcoin

Un espía puede detectar la dirección de Cambio «C» y usarla como pista para vigilar como gastas tus monedas o para saber cuántos ahorros tienes.
¿Qué sucede si descubren cuál es mi dirección de cambio?
La detección de la dirección de cambio le permite a tu adversario tener un punto de partida para vigilar tus transacciones futuras. A partir de esa dirección, un espía puede conocer cuántos ahorros tienes, los montos que gastas, la exchange que utilizas, si has enviado tus monedas a servicios de Coinjoins y hasta que billetera usas. Como puedes ver, un error al administrar el cambio en una transacción Bitcoin puede ser suficiente para crear un problema de pérdida de privacidad.
Métodos con los que identifican tu dirección de cambio
Heurística de la sombra (reutilización de una dirección)
Su premisa es que en toda transacción Bitcoin en la que se observa que una dirección es reutilizada (ingresos provenientes varias transacciones) esa dirección es la de pago. Por tanto, la dirección que no presenta reutilización es una dirección de cambio.

Esta suposición es fuerte porque el software de las billeteras crea de manera automática direcciones nuevas para recibir los cambios. Mientras que las direcciones de pago se escogen manualmente y se envían entre las personas, que por ignorancia o apatía pueden entregar una dirección ya utilizada.
¿Cómo combatirlo?
- No reutilizar direcciones al recibir un pago.
- Al realizar un pago verifica antes que la dirección que te entrego tu contraparte (receptor) no se haya reutilizado.
- Utiliza una billetera que generen nuevas direcciones publicas cada vez que recibes un pago.
- No utilizar paper wallet o direcciones estáticas para recibir pagos o donaciones.
Huella digital de la billetera
Un espía puede deducir la huella digital de la billetera que crea una transacción y utilizar esa información para detectar la salida de cambio. porque los diferentes softwares de las billeteras no siempre crean transacciones exactamente de la misma manera.
Por ejemplo, una billetera SegWit (inicia con “3”) con múltifirmas 2-de-3 paga en una transacción con dos salidas:
Una salida va a una dirección SegWit (inicia con “3”) múltifirmas 2-de-3 y la otra va a una dirección SegWit (inicia con “3”) múltifirmas 2-de-2.

Los scripts (diferentes) de las salidas son indicativo fuerte de cuál es la dirección de cambio.
¿Cómo combatirlo?
- Evita utilizar Scripts poco habituales para realizar pagos cotidianos. Utiliza firmas múltiples solo para tus ahorros a largo plazo.
Números redondos
Por lo general el monto de los pagos es en números redondos, por consiguiente, el cambio será un número no redondo. Esto es potencialmente útil para encontrar la dirección de cambio.

El monto puede ser un número redondo en otra moneda (fiat, altcoin).

¿Cómo combatirlo?
- Evitar realizar pagos con números redondos (en términos de BTC o de una moneda fiat)
- Usar billeteras como SamoraiWallet que cuenta con herramientas de PayJoin: Stonewall, StonewallX2 y Stonwaway, estas te permiten ofuscar el monto de tus pagos.
Aumento de la tarifa de minería (RBF/CPFP)
Si usas RBF o CPFP para acelerar la confirmación de un pago tu adversario puede observar las transacciones no confirmadas, ver tu transacción inicial de tarifa baja y la nueva transacción de tarifa alta (para confirmado pronto). La salida con el monto reducido sería la salida de cambio.

¿Cómo combatirlo?
- Verifica la mempool antes de elegir la fee de minería que pagaras para tu transacción.
- Usa una billetera que te permitan escoger la fee de minería y te muestre el aproximado de cuantos bloques tardara en confirmarse (SamouraiWallet es una buena opción).
- Evita usar RBF o CPFP.
- Reduciendo el monto de ambas salidas (pago y cambio).
- Reduciendo solo la cantidad de pago (en un modelo de remitente paga CPFP).
Heurística de Entrada innecesaria (heurística del cambio óptimo)
Si utilizas más de una entrada para pagar un monto que se saldaba con una sola, entonces tu adversario sabrá que la salida de pago es la de mayor valor y la de cambio la de menor valor.

¿Cómo combatirlo?
- Agregar más entradas hasta que la salida de cambio sea más alta que cualquier entrada. Desafortunadamente, esto cuesta más en tarifas de minero y solo se puede hacer si la billetera realmente posee otros UTXOs.
- Utilizar billeteras que te permitan control coin para que escoger la UTXO a gastar según el monto que a pagar (gastar el UTXO completo en la medida de lo posible).
- Usar una billetera como SamouraiWallet que de forma predeterminada genera transacciones con el monto más grande posible según lo que necesites pagar. Esto provoca que la salida de cambio sea superior a la de pago y aumenta la negación plausible de las transacciones.
Script diferente (formato de la dirección)
Usar una dirección de cambio con un scrip diferente a la dirección que se paga hace que sea más fácil saber qué salida (dirección) es de cambio.

¿Cómo combatirlo?
- Utilizando una dirección de cambio con mismo formato que la de pago, te permite ocultar cual es la salida de cambio y la salida de pago.
- Si no puedes seleccionar el formato de tus direcciones de cambio, pídele a quien pagas (tu contraparte) que te entregue una dirección pública de formato similar a la de tus direcciones de cambio.
- Utiliza billeteras como Samouraiwallet que de forma predeterminada y automática genera direcciones de cambio de formato similar a la dirección de pago.
Errores de la billetera
Algunas billeteras manejan el cambio de una manera poco privada: Colocando la salida del cambio en el último lugar de la transacción.
No dan soporte a los tres formatos de direcciones disponibles en Bitcoin (legacy “1”, SegWit native”bc1” y SegWit “3” compatible).
Agregan entradas en la transacción hasta que se genere un monto establecido para la salida de cambio.
¿Cómo combatirlo?
- Utiliza billeteras que den soporte los tres (3) formatos de direcciones y que te permitan escoger el formato de la dirección de cambio.
CoinJoin de igual rendimiento
Las transacciones CoinJoin con salidas iguales revelan la dirección de cambio, porque es la salida que no tiene el mismo valor.

¿Cómo combatirlo?
- Usando herramientas ConJoins en los que el cambio no participa en la transacción (Whrilpool de SamouraiWallet es buena opción).
Referencia:
https://en.bitcoin.it/wiki/Privacy#Change_address_detecti
«No Confíes, Verifica«
Sobre el autor de este artículo
Aprender y enseñar sobre Bitcoin son de las actividades que más disfruto. Si quieres apoyar mi trabajo, en temas de Seguridad y Privacidad en el uso de Bitcoin, puedes hacer una libre aportación via Lightning network u on chain 🙌
P_Hold
Paynyms (Samourai Wallet)
PM8TJLCBidk5DFPG8Q8HwpRthCEQRJm5BRCzgUPdVYzJnRqfTH4WzKBkdCk5HnBBmfCtuVhuuB9ipvyu89AjiZ6XDe9TpefZdj7wEjR8Cp2LMX9Zzndp +muddymath92c
