Jump to content

bitcoind и с чем его едят


BlogMustLive

Recommended Posts

Posted

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

52 125 просмотров

 

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

 

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

 

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

 

Bitcoin version 0.5.2-beta

Usage:
 bitcoind [options]                     
 bitcoind [options] <command> [params]  Send command to -server or bitcoind
 bitcoind [options] help                List commands
 bitcoind [options] help <command>      Get help for a command
Options:
 -conf=<file>       Specify configuration file (default: bitcoin.conf)
 -pid=<file>        Specify pid file (default: bitcoind.pid)
 -gen               Generate coins
 -gen=0             Don't generate coins
 -min               Start minimized
 -datadir=<dir>     Specify data directory
 -timeout=<n>       Specify connection timeout (in milliseconds)
 -proxy=<ip:port>   Connect through socks4 proxy
 -dns               Allow DNS lookups for addnode and connect
 -port=<port>       Listen for connections on <port> (default: 8333 or testnet: 18333)
 -maxconnections=<n>  Maintain at most <n> connections to peers (default: 125)
 -addnode=<ip>      Add a node to connect to
 -connect=<ip>      Connect only to the specified node
 -noirc             Don't find peers using internet relay chat
 -nolisten          Don't accept connections from outside
 -nodnsseed         Don't bootstrap list of peers using DNS
 -banscore=<n>      Threshold for disconnecting misbehaving peers (default: 100)
 -bantime=<n>       Number of seconds to keep misbehaving peers from reconnecting (default: 86400)
 -maxreceivebuffer=<n>  Maximum per-connection receive buffer, <n>*1000 bytes (default: 10000)
 -maxsendbuffer=<n>  Maximum per-connection send buffer, <n>*1000 bytes (default: 10000)
 -upnp              Attempt to use UPnP to map the listening port
 -paytxfee=<amt>    Fee per KB to add to transactions you send
 -daemon            Run in the background as a daemon and accept commands
 -testnet           Use the test network
 -debug             Output extra debugging information
 -logtimestamps     Prepend debug output with timestamp
 -printtoconsole    Send trace/debug info to console instead of debug.log file
 -rpcuser=<user>    Username for JSON-RPC connections
 -rpcpassword=<pw>  Password for JSON-RPC connections
 -rpcport=<port>    Listen for JSON-RPC connections on <port> (default: 8332)
 -rpcallowip=<ip>   Allow JSON-RPC connections from specified IP address
 -rpcconnect=<ip>   Send commands to node running on <ip> (default: 127.0.0.1)
 -keypool=<n>       Set key pool size to <n> (default: 100)
 -rescan            Rescan the block chain for missing wallet transactions

SSL options: (see the Bitcoin Wiki for SSL setup instructions)
 -rpcssl                                  Use OpenSSL (https) for JSON-RPC connections
 -rpcsslcertificatechainfile=<file.cert>  Server certificate file (default: server.cert)
 -rpcsslprivatekeyfile=<file.pem>         Server private key (default: server.pem)
 -rpcsslciphers=<ciphers>                 Acceptable ciphers (default: TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH)
 -?                 This help message
 

 

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

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

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

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

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

-datadir= - использовать вместо ~/.bitcoin/ указанный путь

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

-proxy=<ip:port> - соединятся через указанный 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, как для лемона так и для клиента

-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 <destination>
encryptwallet <passphrase>
getaccount <bitcoinaddress>
getaccountaddress <account>
getaddressesbyaccount <account>
getbalance [account] [minconf=1]
getblockcount
getconnectioncount
getdifficulty
getgenerate
gethashespersec
getinfo
getmemorypool [data]
getnewaddress [account]
getreceivedbyaccount <account> [minconf=1]
getreceivedbyaddress <bitcoinaddress> [minconf=1]
gettransaction <txid>
getwork [data]
help [command]
keypoolrefill
listaccounts [minconf=1]
listreceivedbyaccount [minconf=1] [includeempty=false]
listreceivedbyaddress [minconf=1] [includeempty=false]
listsinceblock [blockid] [target-confirmations]
listtransactions [account] [count=10] [from=0]
move <fromaccount> <toaccount> <amount> [minconf=1] [comment]
sendfrom <fromaccount> <tobitcoinaddress> <amount> [minconf=1] [comment] [comment-to]
sendmany <fromaccount> {address:amount,...} [minconf=1] [comment]
sendtoaddress <bitcoinaddress> <amount> [comment] [comment-to]
setaccount <bitcoinaddress> <account>
setgenerate <generate> [genproclimit]
settxfee <amount>
signmessage <bitcoinaddress> <message>
stop
validateaddress <bitcoinaddress>
verifymessage <bitcoinaddress> <signature> <message>
 

 

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

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 - Проверить подпись сообщения.

4
  •  
  •  

4 Комментария


Как правильно запустить bitcoind, если кошелек находится не на диске С, а, например, на флешке или внешнем HDD ??

И что бы bitcoind не лез на Диск С !!

запускать с опцией -datadir или прописать ее в файле bitcoin.conf. По-умолчанию файл должен располагаться в профиле пользователя в папке Application Data\Bitcoin

Например, на win7 это C:\Users\<имя пользователя>\Application Data\Bitcoin,

она же C:\Users\<имя пользователя>\AppData\Roaming\Bitcoin

В кошельке можно удалить адрес, а в косоли нет такой возможности.

Поменялось ли что то в новых версиях?

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Similar Topics

    • крашится bitcoind после Activating best chain

      собственно можт кто сталкивался с таккой проблемой падает bitcoind причем ставил много разных версий все падают после этой записи в логе:  init message: Activating best chain... после появления етой записи он зависает на секнд 10 где то, виснет весь серв так что когда я ввожу команду видна большая задержка по времени.   скажу сразу биктоин коре работал в онлайне постоянно может год где то. вся эта проблема проявилась постепенно- то есть в один прекрасный день он упал, потом я его запустил о

      in Безопасность

    • Bitcoind рассчитать коммисию для отправки

      Стоит Bitcoind на centos. C ним идет связь через php,rcp. Существует ли какой либо способ узнать при отправки денег(командой sendtoaddress ), какую комиссию надо заплатить. Например видел что на blockchain. можно указывать какую комиссию заплатить. хочется узнать как такое реализовать.

      in Разработка

    • Сбой функции sendfrom на btc-сервере bitcoind

      Кошмар просто случился проект принимает платежи через btc-сервер (bitcoind версия 11 STABLE была), функция sendfrom при успешной отправке возвращает id-хеш транзакции (или какой то другой хеш) и тут вдруг она начала возвращать хеш но платежи никуда не отправлять, в истории их тоже нет.  Все платежи с комиссией 0.0001 то есть не бесплатные В результате около 3 BTC убыток .   Обновил до 12-ой,  сделал -reindex и rescan сейчас вроде бы все нормально   Что такое? Кто-нибудь сталкивался? Как теп

      in Общий

    • проблема с bitcoind, помогите

      установил на центос биткоинд, выкачал все блоки, видит новые транзакции на свои адреса, но не могу ничего отправить никуда, использовал sendtoaddress, вернул ид транзы, но её нигде не видно, попробовал использовать sendrawtransaction, блокчейн пишет что отверг транзакцию. ещё пробовал отправить с помощью sendfrom, вроде как ушло после рестарта с -rescan, но остаток вообще влево ушел, конфирмов уже второй час нет. версия 12. ставил по этому ману http://www.nefigtut.ru/2011/08/28/bitcoin-mining-p

      in Разработка

    • bitcoind GET

      может тут кто знает? можно ли к демону не только через POST слать запросы но и через GET??? и если можно то как формировать запрос?

      in Разработка

×
×
  • Create New...