Comment savoir dans quel compte se trouve une sortie non dépensée?

Matthew Darnell

Comment savoir dans quel compte se trouve une sortie non dépensée?


Lorsque je vais envoyer des pièces, je veux que la transaction ignore les pièces non dépensées dans un certain compte.

Je pense que je peux le faire dans wallet.cpp, mais je ne sais pas comment.

Peut-être dans la fonction AvailableCoins ()? Faire continuer si les pièces sont sur ce compte? Je suppose que je dois créer une fonction comme:

 bool isInAccount(string strAccountName, CWalletTx *wtx) 

Comment puis-je m’y prendre?

Réponses


 Pieter Wuille

Votre question est basée sur une mauvaise compréhension du système de compte. C’est un malentendu très courant, cependant.

Les sorties non dépensées ne sont pas associées aux comptes.

Les transactions entrantes créditent le solde du compte associé à l’adresse de réception de la transaction. Mais les comptes n’ont qu’un solde – ils ne «possèdent» pas les pièces qui leur sont envoyées. Les soldes des comptes peuvent devenir négatifs et peuvent être modifiés via la commande de move , sans changer les pièces.

Les sorties non dépensées appartiennent au portefeuille dans son ensemble, et les comptes gardent simplement une trace de qui / quoi possède quelle quantité d’entre eux – pas lesquels spécifiquement. C’est comme garder un portefeuille avec de l’argent qui vous appartient et appartient à un ami. Vous gardez une trace de ce que vous devez à votre ami, mais vous ne savez pas quels billets ou pièces spécifiques du portefeuille leur appartiennent.

Pour faire ce que vous voulez, vous devez soit utiliser des portefeuilles séparés (qui gardent entièrement les pièces séparément), soit utiliser le contrôle des pièces ou l’API de transaction brute, qui vous permet de spécifier manuellement les pièces à utiliser.

StephenM347

Pieter, ne serait-il pas préférable que la fonctionnalité des comptes fonctionne de cette façon, associant les UTXO à des comptes spécifiques, puis uniquement les dépenses des UTXO d’un compte? Si aucun compte n’est spécifié, le logiciel pourrait considérer cela comme une dépense des UTXO de tous les comptes. Il semble que la plupart des gens s’attendent à ce que cela fonctionne. Peut-être que le problème avec cela est la rétrocompatibilité?

Pieter Wuille

C’est un modèle complètement différent, et non, cela n’arrivera pas. La fonctionnalité des comptes sera probablement obsolète et supprimée quelque part dans le futur.

Pieter Wuille

Ce que vous décrivez ressemble simplement à la prise en charge de plusieurs portefeuilles. Personne n’est en désaccord avec cela, mais sans que les gens développent activement la mise en œuvre du portefeuille Bitcoin Core, cela prendra un certain temps.


 StephenM347

Cherchez-vous à le faire avec le démon bitcoin? Vous pouvez consulter le

  getaccount 

Appel RPC. L’aide pour cette méthode est:

getaccount « bitcoinaddress »

Renvoie le compte associé à l’adresse donnée.

Arguments: 1. « bitcoinaddress » (chaîne, obligatoire) L’adresse bitcoin pour la recherche de compte.

Résultat: « nom_compte » (chaîne) l’adresse du compte

  Exemples:
 > bitcoin-cli getaccount "1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ"
 > curl --user myusername --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "getaccount", "params": ["1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ"]}' -H 'content-type: text / plain;'  http: // localhost: 8332 / 
StephenM347

Je sais que c’est pour une adresse donnée et vous cherchez un vout particulier, mais les deux correspondent probablement dans votre cas, je suppose?

Matthew Darnell

Non, je veux le faire à partir du cœur Bitcoin lui-même. Disons que j’ai un compte appelé «réservé». Chaque fois que j’envoie des pièces, je ne veux pas que les pièces du compte «réservé» soient utilisées. Je pourrais avoir 1 ou 100 adresses en «réservé», mais je ne veux jamais que des pièces reçues non dépensées sur ce compte soient utilisées lorsque j’envoie des pièces.

 

#(une, comment, compte, dans, dépensée?, non, Quel, savoir, se, sortie, trouvé

 

yahoo

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *