Ich möchte den Saldo einer Adresse mit Bitcoin sehen.
Ich txindex=1
habe a eingestellt und durchgeführt -reindex
, um alle Transaktionen indiziert zu bekommen.
Aber trotzdem scheint es keine Möglichkeit zu geben, Guthaben einer Adresse zu bekommen. getreceivedbyaddress
funktioniert nicht mit Adressen aus Ihrem eigenen Wallet (ich hatte gehofft, dass es nach einem -txindex=1 -reindex
, aber es hat nicht funktioniert).
Ich frage mich, warum blockexplorer.com getreceivedbyaddress
dies für jede Adresse tun kann, der Standardclient jedoch nicht. Wenn Sie die gesamte Blockchain herunterladen und synchronisieren, sollten Sie sie nach allen Informationen abfragen können, richtig?
Standardmäßig wird von der 0.8-Blockchain-Engine Folgendes verwaltet:
Auf dieser Ebene existiert nichts, was sich auf Adressen oder Salden bezieht. Das ist nur eine clientseitige Darstellung der Daten. Das Guthaben einer Brieftasche ist die Summe der Werte der UTXOs, die mit dem Schlüsselsatz in der Brieftasche ausgegeben werden können. Sie könnten das Gleichgewicht einer Adresse als die Summe der Werte der UTXOs definieren, die einem Skript zugewiesen sind, das mit einer bestimmten Adresse übereinstimmt (und das tun mehrere Sites), aber es auf diese Weise darzustellen, ist ziemlich verwirrend - es lässt viele Leute das denken Bitcoin-Transaktionen übertragen Werte von einer Adresse zur anderen. Dies ist nicht wahr, sie verbrauchen bestimmte Ausgaben einer vorherigen Transaktion und führen diese zusammen und teilen sie in neue Ausgaben auf.
Die -txindex
von Ihnen erwähnte Option fügt eine weitere Sache hinzu, die von der Validierungs-Engine verwaltet wird:
Dies wurde hinzugefügt, damit der getrawtransaction
Befehl mit historischen Transaktionen funktioniert, aber auch dies hat nichts mit Adressen zu tun. Eine Datenbank, die den UTXO-Satz nach Adresse oder sogar den gesamten Blockchain-Verlauf nach Adresse indiziert, wäre möglich, aber es wäre relativ teuer in der Wartung und sollte für den normalen Betrieb nicht notwendig sein (obwohl es für das Debugging sehr nützlich ist). ..).
Wo solche Sachen hingehören, ist ins Portemonnaie. Das Wallet, wie es vom Referenzkunden präsentiert wird, verwendet keinen „Bilanz einer Adresse“ – es sieht vielmehr Adressen als Einstiegspunkte in das Wallet, sondern verwaltet die Coins im gesamten Wallet zusammen, unabhängig davon, an welche Adresse sie zuletzt gesendet wurden. Dies verwirrt auch Leute, die es gewohnt sind, sich Blockexplorer-ähnliche Websites anzusehen, wenn sie feststellen, dass beispielsweise Änderungen immer an eine neue Adresse gesendet werden.
Also, um eine echte Antwort zu geben: Wenn Sie wirklich einen Kontostand verfolgen möchten, benötigen Sie die Wallet-Schnittstelle. Im Moment ist dies noch recht unflexibel, aber es gibt Pläne, diese Situation bald zu verbessern. Wir werden hoffentlich bald Unterstützung für mehrere Wallets und Watch-Only-Wallets erhalten, bei denen Sie einfach Adressen hinzufügen können, die Sie verfolgen möchten, ohne ihre Schlüssel zu haben.
listunspent
oder so etwas? Oder ist es wirklich nur unmöglich?getblockhash
und getblock
durchlaufen, alle Transaktionen in jedem Block mit durchlaufen getrawtransaction
und nach Ausgaben suchen, die die gewünschte Adresse gutschreiben oder in einer Eingabe verwendet werden. Das würde wahrscheinlich Stunden dauern...Dies kommt aus der Original Bitcoin-Client/API-Aufrufliste bezüglich des Befehls getreceivedbyaddress
.
Gibt den Gesamtbetrag zurück, der bei Transaktionen mit mindestens [minconf] Bestätigungen erhalten wurde. Während einige dies für offensichtlich halten mögen, berücksichtigt der von diesem gemeldete Wert nur den Empfang von Transaktionen. Zahlungen, die von dieser Adresse getätigt wurden, werden nicht überprüft . Mit anderen Worten, dies ist nicht "getaddressbalance". Funktioniert nur für Adressen in der lokalen Brieftasche, externe Adressen zeigen immer 0 an. [Fettdruck von mir hinzugefügt.]
Technisch gesehen haben Sie Recht; Die Blockchain enthält die gesuchten Informationen. Der ursprüngliche Client hat jedoch nicht die Funktion, es zu berechnen.
getreceivedbyaddress
nicht möglich ist.getreceivedbyaddress
? An was soll ich es schicken? Gibt es ein einfaches Beispiel für diesen oder einen anderen Befehl?getaddressbalance
erwähnte @jorijnsmit nur ein hypothetischer Befehl war.1 of n
Bare Multisig keine Beträge zurück, auch wenn es als Ismine erkannt wird.Das Konzept einer "Adressbilanz" beruht auf Verwirrung.
Die Art und Weise, wie Bitcoin konzipiert ist, bezieht sich auf drei verschiedene Konzepte: Adressen, Brieftaschen und Konten. Wallets bestehen aus einem oder mehreren Konten, die jeweils einen Kontostand haben (der sogar negativ sein kann). Die Wallet als Ganzes hat einen Saldo in Höhe der Summe aller Konten (die immer positiv sein müssen).
Adressen sind lediglich Einstiegspunkte zu einer Brieftasche; Sie haben kein Guthaben und sollten immer* nur einmal verwendet werden. Adressen sind mit einem Konto verknüpft: Wenn Coins auf der Adresse empfangen werden, werden diese diesem Konto gutgeschrieben – beachten Sie, dass dies eine einseitige Zuordnung ist: Das Konto ist weder mit der Adresse noch mit den erhaltenen Coins verknüpft; sein Guthaben wird einfach um den erhaltenen Betrag erhöht. Wenn Sie Bitcoins ausgeben, wählt Ihre Brieftasche (mehr oder weniger) zufällig Münzen aus, ohne sich darum zu kümmern, wie sie empfangen wurden, und verwendet normalerweise eine völlig neue unsichtbare Adresse intern mit sich selbst, die Sie nicht als Ende sehen werden. Benutzer. Insgesamt sind dies einige der Gründe, warum es wenig Sinn macht, von einer „Adressbilanz“ zu sprechen.
* Obwohl es ziemlich üblich ist, dass Menschen Adressen für Einzahlungen oder Spenden wiederverwenden, ist dies für Sie selbst und andere schädlich, die Bitcoin auf eine Reihe von Arten verwenden, die außerhalb des Rahmens dieser Frage liegen.
scantxoutset
jetzt den RPC verwenden, der das UTXO-Set anstelle der gesamten Blockchain scannt."Wir werden hoffentlich bald Unterstützung für (...) Watch-Only-Wallets bekommen, bei denen Sie einfach Adressen hinzufügen können, die Sie verfolgen möchten, ohne ihre Schlüssel zu haben." –Pieter Wuille
Nach allem, was ich gesehen habe, haben Pieter Wuille und andere diese Funktion in die Bitcoin Core- Version 0.10.0 aufgenommen , sodass es jetzt möglich ist, Bitcoin Core zu verwenden, um den Kontostand einer beliebigen Adresse zu erhalten, indem Sie einfach die folgenden Schritte ausführen:
1) Erstellen Sie eine neue Wallet (stoppen Sie das Programm, benennen Sie die alte wallet.dat-Datei um, starten Sie das Programm neu und es wird eine neue leere wallet.dat erstellt).
2) Starten Sie Bitcoin Core und gehen Sie zu Hilfe > Debugging-Fenster > Konsole.
3) Führen Sie in der Befehlszeile der Konsole den folgenden Befehl aus :
Importadresse die_Adresse_an_der_Sie_interessiert_sind
Beachten Sie, dass das Programm dadurch die gesamte Blockchain erneut scannt, was einige Minuten dauern kann.
Anschließend können Sie das Debugging-Fenster schließen. Jetzt zeigt das Hauptfenster des Programms zwei Spalten mit Salden, die erste ist die Saldo der normalen Adressen in der Brieftasche (diejenigen, deren Bitcoins Sie ausgeben können), und die zweite ist die Saldo der Watch-Only-Adressen Der Geldbeutel. Letzteres ist das, wonach Sie gesucht haben.
Sobald Sie fertig sind, können Sie das Programm stoppen, die Brieftasche löschen oder umbenennen oder an einen anderen Ort verschieben und die alte Brieftasche wieder in "wallet.dat" umbenennen.
Beachten Sie, dass der Bitcoin-Client über eine aktualisierte Kopie der gesamten Blockkette verfügen muss, da die Standardoption rescan=true von importaddress keine gekürzten Blockketten akzeptiert und rescan=false den aktuellen Kontostand nicht anzeigt.
Ich habe das nicht ausprobiert und bin kein Bitcoin-Experte, also nehmen Sie diese Antwort mit Vorsicht.
Ich habe ein Programm in Python3 geschrieben, mit dem Sie nach jeder Adresse im Bitcoin-Kern suchen können, unabhängig davon, ob sie zu Ihrer Brieftasche gehört oder nicht.
Hier ist der Github-Link:
https://github.com/ORP967/Bitcoin_Core_RPC_par_address
Lassen Sie mich wissen, was Sie denken oder wenn Sie irgendwelche Verbesserungen haben, die Sie haben könnten.
Tom van der Woerdt
txindex
dies hier nicht relevant ist, da der Client nicht den vollständigen Index benötigt, um den Saldo für eine bestimmte Adresse zu erhalten.Steven Rose
Codierungs_Idiot
Steven Rose
LF00