¿El cliente satoshi siempre envía el cambio de una transacción a una dirección recién generada?

Experimentalmente, este parece ser el caso, pero ¿es siempre así o depende de algunos detalles? Además, ¿genera una nueva dirección cada vez que se hace esto, o primero busca en la billetera si ya hay una dirección vacía allí? (Y usa eso en ese caso) ¿Es probable que este comportamiento cambie en una versión posterior del cliente satoshi?

No es un duplicado: no preguntó "por qué", preguntó "cuándo" (hace eso) y preguntó "si" (cambiará en el futuro).

Respuestas (2)

Cuando genera una billetera, la billetera contiene por defecto 100 direcciones de bitcoin . Esto es bueno por muchas razones, por ejemplo, las copias de seguridad antiguas de su billetera podrían recuperar todas las pérdidas en caso de una falla del disco duro, etc.

El "motivo de privacidad" es que alguien que mira la cadena de bloques no puede ver qué bitcoin va al receptor y cuál es el cambio de las entradas.

Y por último, pero no menos importante, la "razón de seguridad" es que cada dirección de bitcoin es solo un hash de una clave pública, por lo que alguien con una computadora cuántica en funcionamiento no puede atacar la clave pública (ya que solo puede ver un hash de la clave). , no la clave en sí). Pero cada vez que necesite gastar bitcoins, debe revelar la clave pública, por lo que todas las direcciones que hayan gastado bitcoins previamente serán "vulnerables" (pero las nuevas direcciones no lo serán).

Así que la respuesta a la pregunta del título es "Sí".
¿Qué tal "genera una nueva dirección cada vez que se hace esto, o primero busca en la billetera si ya hay una dirección vacía allí?" Estoy específicamente interesado en saber si las claves importadas externamente se usarán eventualmente para el cambio (si no se usaron antes) o si el cambio siempre llega a una dirección que antes no existía en la billetera.
Esa explicación de "clave pública" no tiene mucho sentido: las claves públicas son públicas, las claves privadas son privadas y no hay razón (ni forma ) para "proteger" las claves públicas.
No dije que las claves públicas no son públicas, dije que las direcciones de bitcoin son hashes de claves públicas. Y atacar el hash de la clave es mucho más difícil que atacar la clave (es decir, "protege" la clave pública al no revelarla). Cuando gasta bitcoins, debe revelar la clave pública, pero al mismo tiempo mueve todos los bitcoins en la dirección a una nueva dirección con una nueva clave pública no revelada. Por lo tanto, cualquier atacante solo tendrá un período de tiempo muy pequeño para atacar su clave pública (en lugar de tener tanto tiempo como una dirección reutilizada tiene bitcoins )

Sí, si hay un cambio, se envía a una nueva dirección. Consulte https://en.bitcoin.it/wiki/Change

Por supuesto, si la suma de todas las transacciones de salida utilizadas para la dirección de entrada (el receptor) es exactamente la cantidad correcta, entonces no se necesita ningún cambio, por lo que no se envía nada a una nueva Dirección.

Esto no cambiará en futuras versiones del cliente porque es parte del diseño de Bitcoin.