Envío de bitcoins a la misma dirección

Estoy usando la API de BitcoinJ para crear mi billetera. Cuando creo una transacción, proporciono la dirección de cambio a la que se debe enviar el cambio. Por ejemplo: que haya 1 bitcoin en la dirección A; luego creo una transacción para enviar 0.1 bitcoins a la dirección B y el cambio (0.9 bitcoins) de regreso a la dirección A.

En la billetera BitcoinJ, veo que el cambio (0,9 bitcoins) no se recibe de vuelta. Para tratar de arreglar eso, creé un selector de monedas personalizado para seleccionar explícitamente las transacciones no confirmadas que genera yo mismo, pero aún no veo el cambio (0.9 bitcoins) en mi billetera.

Esta es la vista de transacción https://www.biteasy.com/testnet/transactions/db66d5058e5773f353447ffa2174a417867e9aa134113f01359576f5e6f2b4c6

Y esta es mi billetera https://www.biteasy.com/testnet/addresses/mnj3589DHMoCyhxDSvWKubjkUoTenmrGkE .

Según mi dirección en Biteasy, hay un saldo de 4 BTC, pero mi billetera BitcoinJ muestra solo 0.069 BTC

Ahora mi pregunta es: ¿Por qué no puedo enviar el cambio de devolución a la misma dirección desde la que se envía?

Respuestas (1)

Puede enviar bitcoins a la misma dirección desde la que envía, si crea una transacción sin procesar manualmente o si usa una billetera que no crea una nueva dirección de cambio cada vez que se realiza una transacción.

Una de las razones por las que existe este nuevo proceso de dirección es para proteger la privacidad. Si considera que las salidas de una transacción con cambio, donde una de las salidas apunta hacia sí misma, inmediatamente podrá determinar cuánto pagó y, de hecho, que pagó esa cantidad a otra persona, quedándose con el cambio.

Si por el contrario se utiliza una dirección diferente para el cambio, un observador independiente no puede determinar cuál de las dos cantidades se cambió y cuál fue el pago.

Sin embargo, lo que sospecho que está haciendo es el clásico error de pensar que la diferencia entre lo que está pagando a la otra dirección y lo que estaba en la dirección de origen se le devuelve automáticamente.

No puedo enfatizar esto lo suficiente: la diferencia se envía al minero como una tarifa de minería. En efecto, no le ha dicho explícitamente a la transacción qué hacer con la diferencia y, por lo tanto, se supone que se trata de una tarifa que está pagando y que la cobra el minero que extrae el bloque que contiene su transacción.

Para evitar esto, cada transacción debe tener un mínimo de dos pagos explícitos y un pago implícito:

  • Cantidad de entrada

  • Pago a la dirección 1 (debe ser menor que la entrada)

  • Pago a la dirección 2 (debe ser cambio menos la tarifa que desea pagar)

La entrada debe ser explícitamente mayor que la suma de los pagos 1 y 2, y todo lo que quede es implícitamente la tarifa de los mineros.