Запись опубликована 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?