Warum dauert getNewAddress so lange? Oft mal out python-bitcoinrpc

Bitcoin 0,11 auf einem Raspberry Pi 2:

https://github.com/jgarzik/python-bitcoinrpc

Ich verwende diesen RPC-Authentifizierungs-Proxy, um von Python aus mit Bitcoin zu sprechen. Ich habe ein Skript, das getmempoolinfoalle 1 Sekunde anfordert. Gelegentlich wird bei Benutzereingaben eine neue Adresse benötigt und das Skript fordert getnewaddress. Dieser RPC-Aufruf läuft oft ab.

Manchmal verursacht die Zeitüberschreitung bei anderen RPC-Aufrufen noch seltsameres Verhalten, bis Python unterbrochen und das Skript beendet wird: Beispielsweise werden bei getmempoolinfojedem Aufruf dieselben Informationen zurückgegeben, bis das Skript neu gestartet wird. Selbst die Abfrage von Bitcoin über die Befehlszeile in einem separaten Terminalfenster bitcoin-cli getmempoolinfozeigt an, dass der Mempool überhaupt nicht wächst, bis das Skript getnewaddressbeendet wird, das das Zeitlimit für den Aufruf überschritten hat.

Ich stelle auch fest, dass die Befehlszeile bitcoin-cli getnewaddressbis zu 30 Sekunden dauern kann, ohne dass Python-Skripts oder andere laufende RPC-Aufrufe ausgeführt werden.

Ich dachte, Bitcoin ruft nur eine neue Adresse von wallet.dat ab, was dauert so lange? Es entschlüsselt nicht die Brieftasche, es generiert keine ganz neue Adresse aus Entropie ... aber dieser spezifische RPC-Aufruf verursacht mir viele Downstream-Probleme.

Wie groß ist Ihre Brieftasche in Schlüsseln/Transaktionen/Megabyte?
101 Schlüssel, 0 Transaktionen. Ich frage mich, ob es Disk io ist? Die Brieftasche und die Blockchain befinden sich beide auf demselben USB-Stick.
Wallet.dat ist 294 KB groß. Interessant, die Befehlszeile dumpwalletfunktioniert sofort.
Bitte melden Sie dies in diesem Fall als Fehler: github.com/bitcoin/issues .
Nach der Diskussion auf Github zu urteilen, haben Sie wahrscheinlich herausgefunden, was das Problem war. Könnten Sie bitte Ihre Ergebnisse zusammenfassen, indem Sie Ihre eigene Frage für andere Benutzer beantworten, die diese Frage später finden?
@Murch Ich arbeite noch daran...
Oh, sorry, mir kam es so vor, als wäre es wohl der USB-Stick gewesen. Egal Dann! Viel Glück.
@Murch gestern Abend habe ich den Stick gegen ein SSD-Laufwerk ausgetauscht, vieles ging schneller aber ich glaube da läuft noch ein anderer Prozess auf meinem Pi der macht immer noch getnewaddressTimeout - sogar bis zu 45 Minuten! Ich verwende den GPIO des Pi, um eine LED-Matrix anzusteuern.
Oh wow, das ist schade. Ich hoffe, Sie werden es herausfinden.

Antworten (1)

Das Problem hat mit anderen Prozessen auf dem Rechner mit zu hoher CPU-Priorität zu tun:

https://raspberrypi.stackexchange.com/q/42474/39301