С биткойном 0.4.0 я зашифровал свой кошелек. Теперь, когда я хочу использовать биткойн, единственный способ отправить деньги — сначала указать ключ расшифровки моего кошелька в строке cmd. Я не хочу этого делать, так как мой пароль будет отображаться в истории оболочки.
Есть ли способ разрешить биткойну запрашивать парольную фразу кошелька?
Все, что вы можете сделать из командной строки, вы также можете сделать из JSON API, что означает, что та же самая команда разблокировки может быть отправлена из кода так же легко. Насколько мне известно, нет готовой утилиты, способной на это, но API достаточно прост, и я не могу себе представить, чтобы на самом деле создать такой инструмент было ужасно сложно.
Изменить: это было намного проще, чем ожидалось, сделать это в Python. Предполагая, что у вас установлен модуль Python JSON-RPC , просто используйте этот код:
from jsonrpc import ServiceProxy
from getpass import getpass
access = ServiceProxy("http://127.0.0.1:8332")
pwd = getpass("Enter wallet passphrase: ")
access.walletpassphrase(pwd, 60)
Точно так же вы можете вызвать access.walletlock()
блокировку кошелька по запросу и walletpassphrasechange(old, new)
изменить парольную фразу, даже не видя командной строки.
Редактировать 2: я также отправил вопрос разработчикам на github от вашего имени.
Редактировать 3: был принят запрос на вытягивание, содержащий мои скрипты Python. Загрузка исходников биткойнов с github теперь включает скрипты для этой цели в contrib/wallettools.
Редактировать 4: был отправлен новый отчет об ошибке, чтобы запросить правильное поведение встроенной команды.
Вы можете избежать отображения пароля в истории оболочки следующим образом:
$ read x
password goes here
$ bitcoind walletpassphrase "$x" 60
$ x=
$
Команда read x
считывает следующую строку текста, которую вы набираете, и помещает ее в переменную оболочки x
.
Команда x=
перезаписывает переменную оболочки; в противном случае $x будет хранить ваш пароль до тех пор, пока вы не выйдете из текущей оболочки.
В истории это отображается так:
2032 read x
2033 bitcoind walletpassphrase "$x" 60
2034 x=
2035 history
Я ожидаю, что пароль появится в /proc/ во время выполнения bitcoind
команды, но это должно быть только на долю секунды.
ps -ax
или ps -ef
, например, покажет bitcoind
команду как вызванную, включая
значение )$x
ps
, см. этот обновленный вопрос.Официальный ответ разработчика — использовать предоставленную оболочку python в contrib/bitrpc/bitrpc.py
( github ):
Например, он запрашивает пароль безопасным способом, если вы используете команду
walletpassphrase
. Не планируется добавлять интерактивные функции в файлыbitcoin-cli
.
а также:
bitcoin-cli
останется как есть и не получит интерактивной функциональности.
Источник: #2318
Разблокировать кошелек:
$ python bitrpc.py walletpassphrase
Изменить парольную фразу:
$ python bitrpc.py walletpassphrasechange
https://github.com/bitcoin/bitcoin/tree/master/contrib/bitrpc
В командной строке нажмите ALT+ F7, чтобы удалить все команды, хранящиеся в памяти для текущего буфера истории.
Теперь вы должны использовать bitcoin-cli -stdinwalletpassphrase walletpassphrase 10
, где 10 — это количество секунд, в течение которых вы хотите оставить свой кошелек разблокированным. -stdinwalletpassphrase
был добавлен в этот PR: https://github.com/bitcoin/bitcoin/pull/13716
Если вы поставите перед командой пробел, например «echo hello world», она не будет сохранена в истории. Это может быть только функция bash и idk, если ее можно отключить. Проверь это. Риск здесь заключается в том, что в конце концов вы можете забыть о пробеле.
e18r
q9f