Was ist der einfachste Weg, ein utxo einem bestimmten Konto zuzuordnen?

Ich baue eine Webanwendung, die die Konten von Bitcoin verwendet, um Benutzersalden zu verfolgen. Meine Entwicklungsumgebung befindet sich derzeit im regtestModus. Ich arbeite daran, die Netzwerktransaktionsgebühr zu berechnen, bevor ich eine Rohtransaktion erstelle.

Wenn ich listunspentüber JSON-RPC bitcoinde, erhalte ich ein Multidim-Array, das (unter anderem) txid, Adresse und scriptPubKey enthält. Wie kann ich anhand dieser Informationen feststellen, an welches Konto diese Utxos gebunden sind? Ich dachte, ich könnte getaccountdie zurückgegebenen entsprechenden Adressen verwenden, aber ich bekomme eine leere Zeichenfolge zurück. Liegt das daran, dass die Transaktion vom „globalen“ Wallet-Konto stammt? Hat das etwas mit dem Regressionstestmodus zu tun?

Ich habe auch versucht listtransactions, dass das spezifische Konto mit txid übereinstimmt, hatte aber keine txids, weil es sich um Bewegungen handelte. Selbst wenn ich dies für Netzwerktransaktionen tun könnte, wie würde ich mit utxo umgehen, die aus einem Umzug resultieren?

Ich kann getbalancefür verschiedene Konten die korrekten resultierenden Salden anzeigen, wenn ich den moveBefehl verwende. Ich fange an, ein paar Dinge in Frage zu stellen, daher bin ich mir nicht sicher, wo ich ein Problem habe oder ob ich das falsch angehe. Letztendlich ist es mein Ziel, die TX-Gebühr berechnen zu können, damit der Benutzer sie vor dem Senden genehmigen kann ... unter Berücksichtigung einer einzelnen Brieftasche, bei der jeder Benutzer sein eigenes Konto hat.

Danke für die Hilfe! ...es ist spät und mein Kopf tut weh lol

Antworten (1)

Kurz gesagt, Sie können UTXOs nicht mit Konten verknüpfen, sondern nur mit Adressen. Von der Bitcoin-Wiki-Kontenseite :

Wenn Sie Bitcoins erhalten, werden diese immer einem Ihrer Konten zugewiesen, und Sie können ändern, welches Konto gutgeschrieben wird, je nachdem, welche Bitcoin-Adresse die Münzen erhält, genau wie Sie einem Bankangestellten mitteilen, welches Konto gutgeschrieben werden soll, wenn Sie Bargeld bei Ihrer Bank einzahlen . Das Senden von Bitcoins ist jedoch wie das Abheben von Bargeld von der Bank; Die Coins, die verschickt und von einem Konto abgebucht werden, sind fast immer nicht dieselben Coins, die auf dieses Konto eingezahlt wurden.

Wenn Sie dies noch nicht getan haben, sollten Sie sich diesen Beitrag darüber ansehen, warum der Kontoteil der Registerkarte nicht wirklich skalierbar ist.

Ich dachte, ich könnte getaccount mit den zurückgegebenen entsprechenden Adressen verwenden, aber ich bekomme eine leere Zeichenfolge zurück. Liegt das daran, dass die Transaktion vom „globalen“ Wallet-Konto stammt?

Ja, das ist genau, warum. Das Standardkonto heißt "".

Sie können also UTXOs mit Konten verknüpfen, indem Sie Adressen mit Konten verknüpfen, aber wenn Sie Ausgaben tätigen, gibt es keine Garantie dafür, woher Sie Ihre Ausgaben tätigen.

Als mögliche Problemumgehung könnten Sie diesen RPC-Aufruf verwenden:

listreceivedbyaddress ( minconf includeempty )
Danke! sehr nützlich! Wie sendfromwählt man also seine Utxos aus, um sicherzustellen, dass die Ausgaben vom richtigen Konto stammen? Ich sehe aus Ihren Links, dass die Leistung wahrscheinlich abnehmen würde, je mehr Konten Sie haben, aber könnten Sie vorhersagen, welche Utxo die Brieftasche wählen wird, wenn Sie wissen, dass sie sendfromimmer versuchen wird, vom Standardkonto abzurufen? Ich habe andere Beiträge gesehen, in denen die Routine erwähnt wurde, aber nicht in Bezug auf Konten
Ich bin mir nicht ganz sicher, wie es sie priorisiert, ich habe diese Frage hier gestellt . Nebenbei bemerkt, wenn Sie ihm genau sagen müssen, welche UTXOs ausgegeben werden sollen, können Sie dies mit createrawtransactionund tun signrawtransaction.