Почему getNewAddress занимает так много времени? Часто выходит из строя python-bitcoinrpc

Биткойн 0.11 на Raspberry Pi 2:

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

Я использую этот прокси-сервер аутентификации RPC для общения с биткойнами из Python. У меня есть скрипт, который запрашивает getmempoolinfoкаждую секунду. Иногда при вводе пользователем требуется новый адрес, и скрипт запрашивает getnewaddress. Время ожидания этого вызова RPC часто истекает.

Иногда тайм-аут вызывает еще более странное поведение в других вызовах RPC, пока python не будет прерван и скрипт не будет убит: например, getmempoolinfoвозвращает одну и ту же информацию каждый раз, когда он вызывается, пока скрипт не будет перезапущен. Даже запрос bitcoind из командной строки в отдельном окне терминала bitcoin-cli getmempoolinfoуказывает на то, что мемпул вообще не растет до тех пор, пока не завершится скрипт, вызвавший тайм-аут getnewaddress.

Я также заметил, что из командной строки bitcoin-cli getnewaddressможет потребоваться до 30 секунд без запуска каких-либо сценариев Python или других текущих вызовов RPC.

Я думал, что биткойн просто получает новый адрес из wallet.dat, что так долго? Это не расшифровка кошелька, это не генерация совершенно нового адреса из энтропии... тем не менее, этот конкретный вызов RPC вызывает у меня много проблем с нисходящим потоком.

Насколько велик ваш кошелек в ключах/транзакциях/мегабайтах?
101 ключ, 0 транзакций. Интересно, это диск io? Кошелек и блокчейн находятся на одном USB-накопителе.
Wallet.dat весит 294 КБ. Интересно, командная строка dumpwalletработает мгновенно.
В таком случае сообщите об этом как об ошибке: github.com/bitcoin/issues .
Судя по обсуждению на github, вы, вероятно, выяснили, в чем была проблема. Не могли бы вы обобщить свои выводы, ответив на свой вопрос для других пользователей, которые найдут этот вопрос позже?
@Murch Я все еще работаю над этим...
О, извините, мне показалось, что это, вероятно, была флешка. Тогда не беспокойся! Удачи.
@Murch Прошлой ночью я заменил флешку на SSD-накопитель, многие вещи пошли быстрее, но я думаю, что на моем Pi работает еще один процесс, который все еще делает getnewaddressтайм-аут — даже до 45 минут! Я использую GPIO Pi для управления светодиодной матрицей.
Ого, это очень плохо. Надеюсь, ты разберешься.

Ответы (1)

Проблема связана с другими процессами на компьютере со слишком высоким приоритетом процессора:

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