Как импортировать закрытый ключ в зашифрованный кошелек (на стандартном клиенте)

У меня есть стандартный клиент (клиент QT на OSX) с зашифрованным кошельком. Я пытался импортировать ключи с помощью pywallet, но, хотя он утверждал, что импортирует их, когда я снова запустил биткойн-клиент, он сказал, что wallet.dat был поврежден (да, клиент не работал, когда я импортировал).

Я предполагаю, что pywallet не знает о шифровании и не позаботился о том, чтобы проверить, все ли в порядке, прежде чем импортировать их.

Итак, как мне сделать этот импорт?


Попытка запустить клиент командной строки приводит к следующей ошибке через несколько секунд после его запуска (конечно, с опцией -daemon):

EXCEPTION: NSt8ios_base7failureE       
CDataStream::read() : end of data       
bitcoin in AppInit()       

Запуск QT-клиента с этой -serverопцией через некоторое время тоже вылетает (видимо, и без нее работает корректно).

Мне удалось импортировать их в MultiBit, однако он все равно не работает: bitcoin.stackexchange.com/questions/3549/…

Ответы (1)

Начиная с версии 0.6.0 импорт/экспорт ключей доступен в самом клиенте, но только через RPC. Команды называются dumpprivkeyи importprivkey. Например (в тестовой сети):

$ ./bitcoin получить новый адрес

n2JjZgLeCUgfubsswxDm9zAaBGSLLHSLdNv

$ ./bitcoind dumpprivkey n2JjZgLeCUgfubsswxDm9zAaBGSLLHSLdNv

cR4RtpaeAZY8MwrNvTQGX9PZ9pdCgFoLxuo4Pkwqx61broC4Gb4y

И на другом кошельке:

$ ./bitcoind importprivkey R4RtpaeAZY8MwrNvTQGX9PZ9pdCgFoLxuo4Pkwqx61broC4Gb4y

$ ./bitcoind validateaddress n2JjZgLeCUgfubswxDm9zAaBGSLLHSLdNv

{ "isvalid" : true, "address" : "n2JjZgLeCUgfubswxDm9zAaBGSLLHSLdNv", "ismine" : true, "pubkey" : "029e3a934cfc9f89d7a1c15f99b98479cabc81964f4972e7b8fa3989a788261695", "trueis" ac, "true" ac: сжато, "trueis"}

О, очевидно, что bitcoin-qt не предоставляет сервер для подключения клиента командной строки; также похоже, что биткойн больше не запускается, падает с исключением через несколько секунд после запуска... (поддерживает ли он зашифрованные кошельки? в опциях я ничего не заметил по этому поводу...)
Вам нужно запустить «bitcoin-qt -server», чтобы он предоставил сервер. И вам нужно будет иметь «rpcuser=x» и «rpcpassword=y» в вашем файле bitcoin.conf, но я думаю, что bitcoin-qt сообщит вам об этом, если у вас его нет. bitcoind поддерживает зашифрованные кошельки, но убедитесь, что вы используете ту же версию, что и версия bitcoin-qt, которая у вас есть.
@ChrisMoore ммм, при этом я получаю только ошибки -4 «Ошибка добавления ключа в кошелек», если я пытаюсь добавить, priv_sipaили -5 «Неверный закрытый ключ», если я пытаюсь добавитьpriv
О, вам нужно временно расшифровать свой кошелек, чтобы он мог добавить новый ключ. Я делаю следующее, чтобы моя парольная фраза не попала в историю моей оболочки. Он разблокирует кошелек на 60 секунд: прочитайте x; ./bitcoind walletpassphrase "$x" 60; сбросить х
Я не могу этого сделать: если я запускаю сервер из командной строки, он через некоторое время падает, и то же самое происходит, если я запускаю клиент QT с параметром -server.
Тогда это ошибка. Можете ли вы сообщить об этом на github? Тем не менее, этот ответ заключается в том, как должен выполняться импорт ключей.