Как запустить Биткоин daemon в 2019 году

Запись опубликована loga · 7 авг 2012, 07:39

41 729 просмотров

У биткоина есть как графический интерфейс именумеый bitcoin-qt так и консольный, bitcoind. Если первый удобен для использования человеком, то без текствого довольно сложно сделать интернет магазин или какой-либо иной сервис, принимающий биткоины в качестве оплаты. О нем и пойдет речь.

Для работы нужно запустить один экземпляр bitcoind в качестве демона, чтобы он работал в качестве полноценного узла сети и отдавать ему команды с помощью еще одной копии bitcoind. Взаимодействие между ними происходит по JSON-RPC через 8332й tcp порт. Для того чтобы они узнавали и доверяли друг другу нужно задать rpcpassword, который прописывается в файле

/.bitcoin/bitcoin.conf как rpcpassword=blah-blah-blah. Если у вас нет такого файла то его нужно создать. Туда же можно прописать и другие параметры из тех, что указываются при запуске демона.

Полный список параметров можно получить запустив bitcoind с ключем —help или -?, вот пример того, что мы увидим в ответ:

Вот описание некоторых из них:

-conf — позволяет задать файл конфигурации отличный от

-pid — указать файл, в который будет писаться pid процесса демона

-gen — после старта начать майнить биткоины (он это будет пытаться делать на cpu, что крайне неэффективно)

-gen=0 — не майнить биткоины (если в файле конфигурации указано иное)

-datadir= — использовать вместо

/.bitcoin/ указанный путь

-timeout= — таймаут tcp соединения

-proxy= — соединятся через указанный SOCKS4 прокси-сервер, например через tor

-port= — использовать указанный порт вместо 8333

-maxconnections= — ограничить число одновременных соединений, по умолчанию 125

-addnode= — так же подключится и к указанному узлу, тут полезно указать адреса пулов для ускорения транзакций, можно использовать несколько раз

-connect= — подключится только к указанному узлу, полезно, если вы хотите загрузить блоки с другого компьютера в локальной сети не загружая интернет-канал

-noirc — не использовать irc для поиска узлов и анонса собственного адреса (например irc запрещен хостингом, что встречается довольно часто)

-nolisten — не принимать входящие соединения

-nodnsseed — не использовать DNS для поиска узлов

-upnp — Пытаться использовать UPnP для того чтобы пробросить порт. Полезно, если вы заначены роутером, использующим внешний ip и поддерживающим UPnP. Не нужно, если вы имеете внешний ip напрямую и не имеет смысла, если ваш роутер не имеет внешнего ip.

-paytxfee= — установить размер комиссию (в биткоинах), собственная логика клиента имеет приоритет над этим значением

-daemon — запускаться в фоне

-testnet — использовать тестовую сеть

-debug — писать отладочную информацию

-logtimestamps — снабжать лог временными метками

-printtoconsole — использовать stdout вместо debug.log

-rpcuser= и -rpcpassword — имя пользователя и пароль для JSON-RPC, как для лемона так и для клиента

Читайте также:  Сколько будет 0 02 Биткоина

-rpcport= — использовать для JSON-RPC порт, отличный от 8332

-rpcallowip= — разрешить принимать команды с указанного ip, по умолчанию команды принимаются только с 127.0.0.1, можно использовать несколько раз

-rpcconnect= — отправлять команды на указанный узел а не на 127.0.0.1

-keypool= — сгенерировать указанное количество ключей при старте, по умолчанию — 100

-rescan — перечитать цепочку блоков, полезно если у вас поврежден blkindex.dat или есть зависшие транзакции в кошельке

Так же в 0.6 версии появилась довольно полезная опция -blocknotify=, которая запускает указанную команду при получении нового блока, например для обработчика платежей.

Большую часть перечисленных параметров можно указывать и в bitcoin.conf.

При работе в режиме демона клиент использует множество «виртуальных» аккаунтов, для каждого из которых ведет свой учет баланса. Такая логика может существенно упростить создание какого-либо сервиса, поскольку достаточно привязать пользователей сервиса к аккаунтам bitcoind. Баланс на аккаунте может быть как положительным так и отрицательным. Аккаунт, используемый по умолчанию — «» (пустая строка).

После запуска демона должно пройти какое-то время, чтобы он проинициализировался и начал ожидать команд. Список команд, которые можно отдать демону, можно получить, запустив bitcoind с аргументом help (без —). Вот пример вывода:

Описание некоторых комманд:

backupwallet — сделать резервную копию wallet.dat

encryptwallet — зашифровать кошелек (необратимо!)

getaccount — Узнать, какому аккаунту принадлежит указанный адрес. Пареметр — bitcoin адрес, результат — строка с именем аккаунта.

getaddressesbyaccount — Вывести список адресов, принадлежащих указанному аккаунту. Параметр — имя аккаунта, результат — список bitcoin-адресов в формате JSON.

getaccountaddress — Сгенерировать еще один адрес для указанного аккаунта. Параметр — имя аккаунта, результат — строка с bitcoin-адресом.

getbalance — Вывести баланс аккаунта для указанного количества подтверждений. Первый необязательный параметр — имя аккаунта, второй необязательный параметр — количество подтверждений, результат — положительное или отрицательное число c 8ю знаками после точки.

getblockcount — Вывести текущее колиечество блоков. Результат — целое число.

getconnectioncount — Вывести текущее количество соединений. Результат — целое число.

getdifficulty — Вывести текущую сложность. Результат — число с 8ю знаками после точки.

getgenerate — Вывести состояние генерации. Результат — true или false.

getinfo — Вывести ряд текущих параметров в виде JSON-массива.

getnewaddress — Сгенерировать еще один адрес для указанного аккаунта. Параметр — имя аккаунта, результат — строка с bitcoin-адресом.

getreceivedbyaccount — Вывести общее количество принятых средств на аккаунт без учета отправленных. Первый параметр — имя аккаунта, второй необязательный параметр — количество подтверждений, результат — число с 8ю знаками после точки.

getreceivedbyaddress — Вывести список входящих транзакций на указанный адрес. Первый параметр — bitcoin-адрес, второй необязательный параметр — количество подтверждений, результат — JSON массив с входящими транзакциями на указанный адрес.

Читайте также:  Кто продает товары за Биткоины

gettransaction — Вывести информацию по транзакции.

help — Вывести список доступных комманд или описание команды, если она указана аргументом.

listaccounts — Вывести список аккаунтов с балансом на них. Результат — JSON-массив.

listreceivedbyaccount — Вывести JSON-массив с аккантами, общим количеством принятых на них средств без учета отправленных и количеством подтверждений.

listreceivedbyaddress — Тожесамое, но с детализацией по bitcoin-адресам.

listtransactions — Вывести список транзакций в JSON формате.

move — Перевести средства с одного аккаунта на другой без осуществления транзакции в сети.

sendfrom — Отправить сресдва с указанного аккаунта.

sendmany — Отправить сресдва с указанного аккаунта на множество адресов.

sendtoaddress — Отправить средства с аккаунта по умолчанию.

setaccount — Сделать адрес принадлежащим аккаунту.

setgenerate — Включить/выключить генерацию блоков. Параметр — true или false, не возвращает ничего.

settxfee — Установить комиссию.

signmessage — Подписать сообщение, полезно для подтверждения принадлежности адреса.

stop — Остановить демон. До полной остановки должно пройти какое-то время.

validateaddress — Проверить правильность адреса. Так же возвращает аккаунт, которому он принадлежит, если таковой имеется.

verifymessage — Проверить подпись сообщения.

У меня есть куча других сервисов, настроенных для автоматической загрузки при запуске моего сервера Ubuntu (такие сервисы, как wicd-daemon и VPN), но я не могу понять, как настроить биткойн-демон (bitcoind) для автоматического запуска при система загружается. (Это в автономной системе без графического интерфейса или подключенного монитора.)

Я пытаюсь научиться интегрировать биткойн с Python, чтобы я мог писать сервисы с биткойнами, но я хочу, чтобы система автоматически запускала биткойн при загрузке системы, чтобы мне не пришлось делать это вручную. (Это боль в заднице, когда приходится загружать целую кучу цепочек блоков за раз. Она разъедает во время работы.)

Если этот вопрос уже был задан, направьте меня к ответу. Я искал, но не мог его найти. В противном случае, пожалуйста, помогите мне разобраться!

РЕДАКТИРОВАТЬ : Caveat emptor в дистрибутивах Ubuntu с 14.10 и более upstart версий — init был выбран upstart и находится в стадии разработки в будущем . Я не знаю, когда это будет сделано, и как это повлияет на сценарии выскочки.

Выписка со страницы, на которую ссылается RentFree ; обратите внимание, что предполагается, что вы создали пользователя с именем bitcoinuser в целях безопасности:

Для тех, кто работает с Ubuntu, вы можете быть знакомы с upstart , заменой sysvinit стиле sysvinit ( /etc/init.d/* ).

Файлы конфигурации для upstart хранятся в /etc/init/*.conf . Я написал следующий для биткойнда:

Поместите sudo initctl reload-configuration выше конфигурацию в /etc/init/bitcoind.conf , затем запустите sudo initctl reload-configuration . Чтобы запустить bitcoind , запустите sudo start bitcoind . Чтобы остановить bitcoind , запустите sudo stop bitcoind .

Возможно, вы захотите изменить user , cmd и pidfile на что-то, что соответствует вашей конфигурации, или вы можете использовать следующее в качестве шаблона:

Читайте также:  Как работает Биткоин mixer

Хотя один пользователь предлагает следующее исправление конфигурации:

а другой предлагает установить nice для процесса, чтобы он не нагружал процессор

В исходном дереве Bitcoin Core есть скрипт для Ubuntu . Используя это самый правильный путь.

Тем не менее, я просто регистрируюсь как учетная запись пользователя, я хочу запустить демон Bitcoin Core, запустить терминал (если я в GUI) и выполнить следующую команду для редактирования моего crontab:

Затем я добавляю следующую строку:

Сохраните файл и выйдите. Теперь каждый раз, когда компьютер загружается, запускается демон Bitcoin Core. При завершении работы init / upstart / systemd / what отправит ему сигнал SIGTERM, который биткойн поймает и интерпретирует как команду для запуска безопасного отключения.

Я никогда не запускал это раньше. Вы сказали, что bitcoind — это демон, поэтому здесь, как настроить демон для запуска при запуске:

Обычно демон имеет свой скрипт инициализации в каталоге /etc/init.d/ .

Если демон должен быть инициализирован при запуске, он будет связан с /etc/rc0.d/ или /etc/rc1.d/ или . /etc/rc6.d/ . etc

0 -> 6 — уровни выполнения:

Вы также можете добавить скрипт, в котором работает ваш демон

Если это скрипт Python, вы можете написать в этот файл:

Другой вариант — выполнить update-rc.d :

defaults , будет указывать update-rc.d запускать конфигурацию по умолчанию, когда дело доходит до уровня запуска. Вы можете изменить свой уровень запуска, это пример:

запустите man update-rc.d , есть и другие примеры.

Чтобы удалить его из автозагрузки, запустите:

Ранее в своём вопросе я выяснил что мне нужен bitcoind. Прочитав вики я скачал Bitcoin Core. За тем дня 4 шла загрузка сети.(200+гб). Имеем: Окно Bitcoin Core кошелька, там всё ок, Всё работает, кошелёк создаёт. В диспетчере не обнаружил самого bitcoind. В директории с загруженной сетью лежал пустой файл bitcoin.conf, ну что ж, я его наполнил. по 8332 подключиться не смог.

Пытаюсь из под cmd запустить bitcoind. Имею: Error: Unable to start HTTP server. See debug log for details. Иду в C:\Users\myuser\AppData\Roaming\Bitcoin, создаю bitcoin, снова наполняю. Запускаю из под консоли bitcoind, имею: Error: -daemon is not supported on this operating system

Вопрос, как запустить демона?

При запуске bitcoin-cli -getinfo, информацию о сети/кошельке получаю.

upd1: Нашёл либу для работы с bitcoind на php.

upd2: Возможно проблема из-за того что bitcoin core запущен на удалённом компе

upd3: на локальном компьютере ок

up4: rpcallowip=188.163.3.43 решил проблему с подключением с моего ip. Вопрос — как задать возможность подключения с нескольких или со всех ip?

Оцените статью
Биткоин Блог / и всё о Биткоине