Parece que tengo demasiadas salidas no gastadas para mi saldo dado. ¿Qué me estoy perdiendo?

Tengo una dirección en la red de prueba. Empecé con 1.3 btc. Luego envié 0.5 btc a otra dirección. Mi saldo ahora es 0.8. Está bien, eso tiene sentido.

Ahora espero tener un UTXO que fue el cambio de 0.8 de la transacción anterior. Pero cuando ejecuto listunspent, veo que tengo dos UTXO. El balance es correcto, pero parece que tengo dos salidas.

[
  {
    "txid": 
   "321dab633022a33c3a49b4aab4b13d3c431771ae9402746dbb6dcc21be5fd603",
    "vout": 1,
    "address": "2N4wJG7gs1mVXeMkX2MCuyekZUCSzrW7CjT",
    "redeemScript": "0014221f8d76c5b85e979055e54ac97a0cada38bc4e9",
    "scriptPubKey": "a914803d96c7e19e4a568764f9912fa54499f814cd8e87",
    "amount": 0.79999834,
    "confirmations": 119,
    "spendable": true,
    "solvable": true,
    "safe": true
  }
]

Cuando ejecuto gettxout con txid y vout 0, la primera transacción UTXO es 0.5.

{
  "bestblock": 
  "0000000000000043a1abc3cf9c778d3adeb417488019a507da871db9df74ffad",
  "confirmations": 119,
  "value": 0.50000000,
  "scriptPubKey": {
     "asm": "OP_HASH160 a43f8a90f292b6be0b487556ac357709a5e86480 OP_EQUAL",
     "hex": "a914a43f8a90f292b6be0b487556ac357709a5e8648087",
     "reqSigs": 1,
     "type": "scripthash",
     "addresses": [
       "2N8Dgvfmgs4fNCi7QatLZJR8ArvhPpMPW8P"
     ]
  },
  "coinbase": false
}

Y cuando ejecuto gettxout con vout 1, la segunda transacción UTXO es 0.799 (0.8) que es el saldo.

{
  "bestblock": 
  "0000000000000043a1abc3cf9c778d3adeb417488019a507da871db9df74ffad",
  "confirmations": 119,
  "value": 0.79999834,
  "scriptPubKey": {
    "asm": "OP_HASH160 803d96c7e19e4a568764f9912fa54499f814cd8e OP_EQUAL",
    "hex": "a914803d96c7e19e4a568764f9912fa54499f814cd8e87",
    "reqSigs": 1,
    "type": "scripthash",
    "addresses": [
      "2N4wJG7gs1mVXeMkX2MCuyekZUCSzrW7CjT"
  ]
},
"coinbase": false

}

Y según esto: ¿ Cómo comprobar si se ha gastado una salida?

Si gettxout devuelve algo, entonces la salida no se gasta.

¿Por qué tengo dos salidas sin gastar con la primera de la misma cantidad que envié a otra dirección?

¿Tu monedero controla ambas direcciones? 2N4wJG...y 2N8Dgv...? Si es así, tiene sentido que ambos UTXO se incluyan conlistunspent
Bien, probablemente sea eso. Lo que hice como ejercicio fue hacer dos copias de wallet.dat: send.dat y receive.dat. Luego hice que un faucet de prueba enviara algunos btc a send.dat. Luego envié btc de send.dat a receive.dat. Lo que ve en mi pregunta original fueron los dos UTXO para enviar.dat. Entonces, ¿supongo que debido a que hice copias de wallet.dat, todas las direcciones resultantes que creé en realidad pertenecen a la misma billetera?
Sí, las direcciones pertenecen a la misma billetera. Era el mismo archivo copiado, y con las billeteras HD de Bitcoin Core, siempre se generarán las mismas direcciones y claves privadas con esos archivos de billetera.

Respuestas (1)

Según los comentarios sobre la pregunta de OP

Dado que hizo una copia del archivo wallet.dat (que es un formato HD), ambas direcciones estarán bajo el control de (ambas copias de) su billetera. Por lo tanto, ambos UTXO se enumerarán al llamar al listunspentcomando, ya que cada billetera puede gastar ambos UTXO.

Si usó una nueva billetera para generar una nueva dirección y le envió algunos fondos, entonces el listunspentcomando debería funcionar como esperaba originalmente, ya que su billetera principal de bitcoin no controlaría la dirección en la que gastó monedas también (solo controlaría el cambio DIRECCIÓN).