¿Cuál es la forma más sencilla de asociar un utxo a una cuenta concreta?

Estoy creando una aplicación web que usa las cuentas de bitcoind para rastrear los saldos de los usuarios. Mi dev env está actualmente en regtestmodo. Estoy trabajando para calcular la tarifa de transacción de la red antes de crear una transacción sin procesar.

Cuando hago listunspentbitcoins a través de JSON-RPC, obtengo una matriz multidim que incluye txid, dirección y scriptPubKey (entre otras cosas). ¿Cómo puedo usar esta información para determinar a qué cuenta están vinculados estos utxo? Pensé que podría usar getaccountcon las direcciones correspondientes devueltas, pero me devolvieron una cadena vacía. ¿Se debe a que la transacción se originó en la cuenta 'global' de la billetera? ¿Tiene algo que ver con el modo de prueba de regresión?

También intenté listtransactionsque la cuenta específica coincidiera con txid, pero no tenía txid porque eran movimientos. Incluso si pudiera hacer esto para transacciones de red, ¿cómo manejaría los utxo que resultaron de un movimiento?

Puedo getbalancepara diferentes cuentas y ver los saldos resultantes correctos al usar el movecomando. Estoy empezando a cuestionar algunas cosas, así que no estoy seguro de dónde tengo un problema o si estoy haciendo esto de manera incorrecta. En última instancia, mi objetivo es poder calcular la tarifa de tx para que el usuario pueda aprobarlos antes de enviarlos... teniendo en cuenta la billetera única en la que cada usuario tiene su propia cuenta.

¡Gracias por la ayuda! ... es tarde y me duele la cabeza jajaja

Respuestas (1)

En pocas palabras, no puede asociar UTXO con cuentas, solo puede asociar direcciones. Desde la página de cuentas wiki de bitcoin :

Cuando recibe bitcoins, siempre se asignan a una de sus cuentas, y puede cambiar qué cuenta se acredita en función de qué dirección de bitcoin recibe las monedas, al igual que le dice a un cajero de banco en qué cuenta acreditar cuando deposita efectivo en su banco . Sin embargo, enviar bitcoins es como retirar efectivo del banco; las monedas que se envían y debitan de una cuenta casi siempre no son las mismas monedas que se depositaron en esa cuenta.

Si aún no lo ha hecho, debería ver esta publicación sobre por qué la parte de cuentas de la pestaña no es realmente escalable.

Pensé que podría usar getaccount con las direcciones correspondientes devueltas, pero me devolvieron una cadena vacía. ¿Se debe a que la transacción se originó en la cuenta 'global' de la billetera?

Sí, eso es exactamente, por qué. La cuenta predeterminada se llama "".

Por lo tanto, puede asociar UTXO con cuentas mediante la asociación de direcciones con cuentas, pero cuando gasta, no hay garantía de dónde está gastando.

Como posible solución alternativa, podría considerar usar esta llamada rpc:

listreceivedbyaddress ( minconf includeempty )
¡gracias! ¡realmente util! Entonces, ¿cómo sendfromelige sus utxo para garantizar el gasto de la cuenta correcta? Veo en sus enlaces que el rendimiento probablemente disminuirá a medida que tenga más y más cuentas, pero ¿podría predecir los utxo que elegirá la billetera sendfromsabiendo que siempre intentará sacar de la cuenta predeterminada? He visto otras publicaciones que mencionan la rutina pero no con respecto a las cuentas.
No estoy exactamente seguro de cómo los prioriza, hice esa pregunta aquí . Como nota al margen, si necesita decirle exactamente qué UTXO gastar, puede hacerlo con createrawtransactiony signrawtransaction.