¿Por qué Bitcoin envía el "cambio" a una dirección diferente?

Por ejemplo, tengo una dirección (A) con 20 BTC y envío 9 BTC a la dirección (B). Bitcoin creará una parte de "cambio" de la transacción donde los 11 BTC restantes van a la dirección (C).

¿Por qué no devolver el cambio a A?

En vez de:

Initial balance: 
A: 20 BTC 
B: 0 BTC 
C: 0 BTC

Transaction Pair: 
A -> B 9 BTC 
A -> C 11 BTC

End result 
A: 0 BTC 
B: 9 BTC 
C: 11 BTC

¿Por que no?

Initial balance:
A: 20 BTC
B: 0 BTC

Transaction Pair:
A -> B 9 BTC
A -> A 11 BTC

End result
A: 11 BTC
B: 9 BTC
¿Y hay una opción en el cliente para desactivar esto (es decir, enviar de vuelta a la dirección original)?
Tengo una rama 'sin privacidad' en github.com/gavinandresen/bitcoin-git que envía el cambio a la dirección de financiación, pero confunde muchísimo el código de 'cuentas' y hace que las listas de transacciones parezcan confusas.
¿Hay alguna solución que? También preferiría cuando el cambio vuelva a la dirección original.

Respuestas (3)

Dos razones:

  1. Por lo tanto, quien envió a su dirección "A" no puede afirmar que le envió 31 bitcoins ("¡Vea! Mire en el explorador de bloques, hay dos transacciones que se envían a "A", una por 20 bitcoins y otra por 11: envíeme ¡devuélveme los 11 adicionales!")

  2. El uso de una nueva dirección de cambio hace que sea más difícil para otras personas rastrear cuántos bitcoins tiene o dónde los está gastando.

También oculta qué salida es el "gasto" y cuál es el "cambio".
La prevención de afirmaciones falsas sería de dudoso valor. Las transacciones son irreversibles de todos modos y la transacción indicará claramente que las monedas pasaron de A a A. La segunda parte de su respuesta más la aclaración de David parece probablemente racional.
Enviar el cambio a otro lugar hace que parezca que gastas todo tu saldo, lo cual no es el caso. Puede ser muy confuso para los usuarios principiantes. Creo que esta debería ser una opción opcional para el cliente predeterminado.
También creo que las direcciones de cambio separadas son una "característica" muy mala. Enviar de vuelta a la misma dirección evitaría que las billeteras de papel se vuelvan obsoletas cuando se gasta una parte de ellas. La ofuscación del flujo de pago tampoco debería ser parte del cliente bitcoin "oficial". Mantener el libro mayor claro le daría a Bitcoin más legitimidad.
@DeathAndTaxes, ¿entonces básicamente el primer punto de Gavin es incorrecto/no válido?
Estoy de acuerdo con @Steven Roose. Look this address: blockchain.info/address/175fTMj3sNZANncHTGEGw4SAims14ZDxNX I sent 5 mBTC from 175fTMj3sNZANncHTGEGw4SAims14ZDxNX to 1JGZbBj5iuxzskxAxRmoQgKZXoDehGEA6r and then my client creates an address 15taCtq1Mj76wuweVjnvrmKxSt3gKMVXqJ to receive the left 0.8 mBTC. Pero mi cliente muestra solo dos direcciones: 1GzeYtD8KGVw7LmWCtsQ7wMX3Me7KUBwna y 175fTMj3sNZANncHTGEGw4SAims14ZDxNX. Ambos con saldo cero. Pero mi bitcoin-qt muestra que tengo un saldo de 0,8 mBTC. Es muy extraño y confuso.
Mira esto también: bitzuma.com/posts/… Es difícil para el usuario final. Prefiero como antes.
@DeathAndTaxes, ¿Quiere decir que si estamos inventando una nueva moneda que no necesita una "ventaja de ocultación", sería más beneficioso tener un solo objetivo?
@Pacerier, ¡Eso espero! :) Ese argumento de seguridad a través de la oscuridad parece increíblemente tonto. Pero todavía parece algo no trivial demostrar que se es el remitente de un tx. (especialmente con múltiples entradas); ver, por ejemplo , bitcoin.stackexchange.com/questions/18502/…

Si bien las otras respuestas son ligeramente ciertas, hay otra razón. Las direcciones que se han gastado son inherentemente menos seguras que las direcciones no gastadas. Esto se debe a que, al gastar en una dirección, revela la clave pública de la dirección. Esto significa que para robar esos fondos, solo necesita encontrar la clave privada, mientras que normalmente necesitaría romper el hash y encontrar la clave privada.

Ambas tareas son extremadamente difíciles, por lo que por ahora no es una gran preocupación si envía a direcciones gastadas. El problema surge con la computadora cuántica teórica. ECDSA, la tecnología que asegura su clave privada, es extremadamente fácil de revertir para las computadoras cuánticas. El hash no lo es. Por lo tanto, cuando las computadoras cuánticas se vuelvan populares, las direcciones usadas se volverán exponencialmente menos seguras.

Más información en https://bitcoin.stackexchange.com/a/7134/11666

También: https://bitcointalk.org/index.php?topic=153302.0

En la publicación de BitcoinTalk, la preocupación planteada sobre los piratas informáticos que descifran las transacciones entre la transmisión y la inclusión en bloques es razonable. Afortunadamente, los mineros honestos incluyen primero la primera transacción, independientemente de la tarifa, por lo que se frustra el ataque. También se evita por el hecho de que tomaría bastante tiempo descifrar la clave pública.

¿Por qué cree que romper un par de claves es más fácil que romper un hash criptográfico?
@Básico, porque la clave pública se genera a partir de la clave privada a través del algoritmo SHA256, que es vulnerable a ataques informáticos cuánticos. Si bien la dirección de Bitcoin se genera a partir de la clave Publik mediante el uso de algoritmos SHA256 y RIPEMD160, los piratas informáticos potenciales deberán atacar 2 encriptaciones diferentes.
@Sulevus Si encripta/hash algo varias veces, no necesariamente lo hace más seguro... Depende completamente de cómo los dos sistemas preservan la entropía en múltiples operaciones.

La idea de las direcciones de cambio es un intento de hacer que las transacciones sean anónimas. Desafortunadamente, las transacciones de bitcoin no son anónimas, incluso con el uso de direcciones de cambio:

Cuando tiene una billetera llena de direcciones de cambio, las transacciones se verán obligadas a usar algunas de esas direcciones de cambio para completar las transacciones que desea realizar. El hecho de que el destinatario sea el mismo y que el momento de la transacción sea el mismo significa que un observador externo tendrá una gran confianza en que esas direcciones pertenecen a la misma persona. Si todas esas direcciones solo recibieron bitcoins de una sola dirección, será muy claro que son direcciones de cambio para esa dirección.

Lo que significa lo anterior es que sus direcciones se desanonimizan cuando se utilizan. Esto hace que su privacidad básicamente no tenga valor porque cualquiera puede mirar hacia atrás un par de años y ver a todas las personas de las que pagó o recibió dinero.

Esto no es necesariamente algo malo, ya que la trazabilidad de las transacciones dificultará que los gobiernos justifiquen la lucha contra la adopción de bitcoins.

Si bien puede obtener un poco de privacidad durante un corto período de tiempo usando el cambio de dirección, hay un ENORME inconveniente: hace que la copia de seguridad de su dinero sea intratable. Si desea hacer una copia de seguridad de una dirección, puede hacerlo fácilmente. Simplemente cifre su billetera y cópiela en varios dispositivos (su teléfono, disco duro externo, unidad USB, billetera de papel, etc.). Sin embargo, si se usan direcciones de cambio, debe copiar todas sus copias de seguridad (tan doloroso como imprimir una nueva billetera de papel) cada vez que realiza una transacción. Eso es intratable.

Creo que esa intratabilidad es un GRAN problema para los bitcoins. Las personas necesitan una forma segura de ser "su propio banco" y cambiar las direcciones hace que los bitcoins se rompan para la mayoría de las personas.

ACTUALIZACIÓN: Las billeteras deterministas resuelven un poco este problema al permitirle determinar todas las direcciones potenciales de la billetera a partir de un solo valor inicial. Esto le permite hacer una copia de seguridad una vez y restaurar en cualquier momento posterior usando la semilla para generar y verificar direcciones hasta que esté seguro de que no ha usado ninguna más allá de las que verificó. Armory, Electrum y CarbonWallet utilizan monederos deterministas.

Realmente me gusta esta respuesta, pero parece que sería mejor proporcionarla en otra pregunta. La respuesta de Gavin es 100 % cierta, y esta respuesta sería mejor para una pregunta sobre el anonimato de las direcciones de cambio.
@BT, entonces, ¿cómo funciona Dark Wallet?
@Pacerier No sé mucho sobre Dark Wallet, pero ciertamente puede haber esquemas mucho más complicados que mantienen las direcciones más anónimas. Esto implicaría cosas como transacciones escalonadas y mezclas de transacciones sofisticadas. Estas no son sus transacciones promedio. Son técnicas complejas y son igual de útiles sin el uso de direcciones de cambio.
@ColinDean, ¿El error tipográfico "dilema" en su perfil es intencional?
@BT, sin embargo, agregar el uso de direcciones de cambio aumenta el costo de anonimizar, ¿verdad?
@Pacerier Sí, pero aunque no estoy completamente seguro de cuánto aumenta el costo, creo que el límite teórico es duplicar el costo. Aunque en escenarios normales donde esa dirección se usa eventualmente junto con otra dirección de cambio, el costo para determinar eso es básicamente insignificante.
La idea original de AIUI era que cada dirección se usaría exactamente una vez, y las direcciones de cambio no serían diferentes en ese sentido a cualquier otra dirección. Desafortunadamente, muchas personas usan una sola dirección muchas veces e incluso la publican públicamente. Eso da lugares para que los rastreadores se fijen.