|
|||||||
Как работать с Litecoin в консоли под Linux - Часть 1 - создание кошелька
Время создания: 17.11.2015 12:42
Автор: Xintrea
Текстовые метки: litecoin, лайткоин, linux, консоль, кошелек, майнинг, настройка, команды
Раздел: Компьютер - Web / Internet - Криптовалюты (Bitcoin, Litecoin, etc...) - Litecoin (LTC)
Запись: xintrea/mytetra_syncro/master/base/1447753354crmcg5ikl4/text.html на raw.github.com
|
|||||||
|
|||||||
Здесь я записываю свою попытку разобраться, что такое Litecoin, и как работать с Litecoin в консоли Linux. Задача Для удовлетворения собственного любопытства, нужно сделать следующие вещи:
Скачивание ПО Сначала надо зайти на официальный сайт https://litecoin.org. Там в заголовке сайта есть русский язык, можно выбрать его. Для скачивания ПО выбираем версию под Linux: СКАЧАТЬ Litecoin Core 0.10.2.2 для GNU/Linux 32bit 64bit Нажимаем на нужную нам битность, скачиваем. Или копируем ссылку в браузере в буфер обмена и выкачиваем сразу в консоли через WGET: wget -c https://download.litecoin.org/litecoin-0.10.2.2/linux/litecoin-0.10.2.2-linux32.tar.gz Параноики могут проверить контрольную сумму через GPG сигнатуру. Для этого выкачиваем сингнатуру (ссылка рядом с дистрибутивом): wget -c https://download.litecoin.org/litecoin-0.10.2.2/linux/litecoin-0.10.2.2-linux-signatures.asc Открываем полученный *.asc-файл. Видим там контрольные суммы SHA256: eecffd46d3115013b7007d59762eaf819d4ac905ad53edffe164c20d779dfc40 litecoin-0.10.2.2-linux32.tar.gz 136779e717603002f0a3f0da4f48f38274a286171cff10dd68da067ed82c8b26 litecoin-0.10.2.2-linux64.tar.gz Проверяем контрольную сумму для нашего файла: sha256sum litecoin-0.10.2.2-linux32.tar.gz eecffd46d3115013b7007d59762eaf819d4ac905ad53edffe164c20d779dfc40 litecoin-0.10.2.2-linux32.tar.gz На этом можно успокоиться. Хотя можно еще проверить сам *.asc - файл, он содержит электронную подпись GPG. Какие инструменты нам даны? В полученном архиве будут следующие исполняемые файлы: litecoin-0.10.2.2 <dir> bin <dir> litecoin-cli litecoind litecoin-qt litecoin-tx test_litecoin test_litecoin-qt Ага, мы видим litecoin-cli, возможно это именно консольный клиент Лайткоина. Еще мы видим демона litecoind, его наверно нужно будет запустить как сервис. Традиционно, никакой документации в пакете нет. Наверно, майнтейнеры думают, что гораздо лучше поставлять ПО без документации. Ведь что может быть проще, чем без мануала разобраться в командах глобальной пиринговой финансовой сети. Использование консольных инструментов Посмотрим, что выдаст запуск программы litecoin-cli: $ ./litecoin-cli Litcoin Core RPC client version v0.10.2.2 Usage: litecoin-cli [options] <command> [params] Send command to Litecoin Core litecoin-cli [options] help List commands litecoin-cli [options] help <command> Get help for a command Options: -? This help message -conf=<file> Specify configuration file (default: litecoin.conf) -datadir=<dir> Specify data directory -testnet Use the test network -regtest Enter regression test mode, which uses a special chain in which blocks can be solved instantly. This is intended for regression testing tools and app development. -rpcconnect=<ip> Send commands to node running on <ip> (default: 127.0.0.1) -rpcport=<port> Connect to JSON-RPC on <port> (default: 9332 or testnet: 19332) -rpcwait Wait for RPC server to start -rpcuser=<user> Username for JSON-RPC connections -rpcpassword=<pw> Password for JSON-RPC connections SSL options: (see the Litecoin Wiki for SSL setup instructions) -rpcssl Use OpenSSL (https) for JSON-RPC connections Попробуем получить более расширенную помощь по этой программе: $ ./litecoin-cli help error: You must set rpcpassword=<password> in the configuration file: /home/user/.litecoin/litecoin.conf If the file does not exist, create it with owner-readable-only file permissions. Сообщение говорит о том, что должен существовать файл /home/user/.litecoin/litecoin.conf, и в нем должна быть прописана опция rpcpassword=<password>. Теперь надо разобраться, как сгенерировать этот файл или какой его формат. Интернет подсказывает, что вначале надо запустить Лийткоин-демона. И вроде как его можно запустить от обычного пользователя. Попробуем: $ ./litecoind Error: To use litecoind, or the -server option to litecoin-qt, you must set an rpcpassword in the configuration file: /home/user/.litecoin/litecoin.conf It is recommended you use the following random password: rpcuser=litecoinrpc rpcpassword=AsLcBBH8yNuMpRUYGhP9C4Pmw6315xkR3ZqLFVCcJCP (you do not need to remember this password) The username and password MUST NOT be the same. If the file does not exist, create it with owner-readable-only file permissions. It is also recommended to set alertnotify so you are notified of problems; for example: alertnotify=echo %s | mail -s "Litecoin Alert" admin@foo.com Видим похожую ошибку, но уже видим, что в отсутсвующем файле должна быть и опция rpcpassword, и опция rpcuser. Попутно замечаем, что после попытки старта демона, до этого пустой каталог ~/.litecoin наполнился каталогами и файлами: blocks <dir> chainstate <dir> database <dir> db.log debug.log В общем, у нас появились сплошные ошибки, но будем разбираться дальше. А пока... Какой вывод можно сделать из всего вышеизложенного? Похоже, что для работы с Лайткоин необходим запущенный демон litecoind, взаимодействие с которым происходит через консольную утилиту litecoin-cli. Консольная утилита взаимодействует с демоном через RPC-протокол с JSON-синтаксисом. Обе эти программы используют один и тот же файл litecoin.conf, соответственно они обе знают логин-пароль пользователя, который прописывается в этом файле. Возможно, это необходимо чтобы к демону невозможно было подключиться извне, или подключался только авторизованный пользователь. Написание файла litecoin.conf На просторах интернета находим документацию разработчиков: http://litecoindeveloper.com/doku.php?id=tutorials:running_litecoind Там видим содержимое файла litecoin.conf: rpcuser=enter_your_own_username_here rpcpassword=enter_your_own_password_here_make_it_long rpcallowip=127.0.0.1 rpcport=9332 Переходим в каталог /home/user/.litecoin, создаем там файл litecoin.conf с таким же содержимым, но указав свои значения для rpcuser и rpcpassword. Значения указываем произвольные, какие нам нравятся. Пароль нужно задать достаточно большим, символов на 20-30 минимум. После создания этого файла, демон litecoind начнет запускаться без ошибок. Причем повторюсь, он запускается от обычного пользователя. Запустим еще одну консоль, и проверим, что демон работает: $ ps aux | grep lite user 24995 38.2 1.0 201732 44808 pts/3 SLl+ 13:44 0:01 ./litecoind После запуска демона, в каталоге /home/user/.litecoin появились новые файлы: blocks <dir> chainstate <dir> database <dir> db.log debug.log fee_estimates.dat - новый файл litecoin.conf litecoind.pid - новый файл peers.dat - новый файл wallet.dat - новый файл Так же через htop видно, что демон активно использует одно ядро для каких-то действий. Что это за действия - непонятно, так как еще не создан Litecoin кошелек. Как выяснилось, после запуска демон не сразу готов к работе. Ему нужно время для "разогрева", пока он не получит и не обработает все данные. Если сразу после запуска демона попробовать дать через консольную утилиту казалось бы безобидную команду "./litecoin-cli help", то помощи мы не получим, а увидим подобные сообщения: $ ./litecoin-cli help error: {"code":-28,"message":"Loading block index..."} $ ./litecoin-cli help error: {"code":-28,"message":"Loading wallet..."} Время разогрева длится примерно одну минуту. Немного забегая вперед надо отметить следующую важную особенность демона. По-умолчанию демон использует директорию для данных в рабочем каталоге пользователя. Но данных будет очень много, походу больше 10Gb. Поэтому надо убедиться, что хватит свободного места на диске. Если свободного места мало, надо настроить размещение данных в другой директории с помощью опции datadir, прописанной в litecoin.conf примерно так: datadir=/opt/litecoin При такой настройке, в рабочем каталоге пользователя остается только файл /home/user/.litecoin/litecoin.conf, а все остальные файлы располагаются в указанной директории. Да, эту директорию необходимо заранее создать, чтобы небыло ошибки при запуске демона. Утилита litecoin-cli Демон у нас запущен и работает. Надо теперь вернуться к консольной утилите litecoin-cli. Запустим ее с ключем помощи и увидим портянку: $ ./litecoin-cli help == Blockchain == getbestblockhash getblock "hash" ( verbose ) getblockchaininfo getblockcount getblockhash index getchaintips getdifficulty getmempoolinfo getrawmempool ( verbose ) gettxout "txid" n ( includemempool ) gettxoutsetinfo verifychain ( checklevel numblocks ) == Control == getinfo help ( "command" ) stop == Generating == getgenerate gethashespersec setgenerate generate ( genproclimit ) == Mining == getblocktemplate ( "jsonrequestobject" ) getmininginfo getnetworkhashps ( blocks height ) prioritisetransaction <txid> <priority delta> <fee delta> submitblock "hexdata" ( "jsonparametersobject" ) == Network == addnode "node" "add|remove|onetry" getaddednodeinfo dns ( "node" ) getconnectioncount getnettotals getnetworkinfo getpeerinfo ping == Rawtransactions == createrawtransaction [{"txid":"id","vout":n},...] {"address":amount,...} decoderawtransaction "hexstring" decodescript "hex" getrawtransaction "txid" ( verbose ) sendrawtransaction "hexstring" ( allowhighfees ) signrawtransaction "hexstring" ( [{"txid":"id","vout":n,"scriptPubKey":"hex","redeemScript":"hex"},...] ["privatekey1",...] sighashtype ) == Util == createmultisig nrequired ["key",...] estimatefee nblocks estimatepriority nblocks validateaddress "litecoinaddress" verifymessage "litecoinaddress" "signature" "message" == Wallet == addmultisigaddress nrequired ["key",...] ( "account" ) backupwallet "destination" dumpprivkey "litecoinaddress" dumpwallet "filename" encryptwallet "passphrase" getaccount "litecoinaddress" getaccountaddress "account" getaddressesbyaccount "account" getbalance ( "account" minconf includeWatchonly ) getnewaddress ( "account" ) getrawchangeaddress getreceivedbyaccount "account" ( minconf ) getreceivedbyaddress "litecoinaddress" ( minconf ) gettransaction "txid" ( includeWatchonly ) getunconfirmedbalance getwalletinfo importaddress "address" ( "label" rescan ) importprivkey "litecoinprivkey" ( "label" rescan ) importwallet "filename" keypoolrefill ( newsize ) listaccounts ( minconf includeWatchonly) listaddressgroupings listlockunspent listreceivedbyaccount ( minconf includeempty includeWatchonly) listreceivedbyaddress ( minconf includeempty includeWatchonly) listsinceblock ( "blockhash" target-confirmations includeWatchonly) listtransactions ( "account" count from includeWatchonly) listunspent ( minconf maxconf ["address",...] ) lockunspent unlock [{"txid":"txid","vout":n},...] move "fromaccount" "toaccount" amount ( minconf "comment" ) sendfrom "fromaccount" "tolitecoinaddress" amount ( minconf "comment" "comment-to" ) sendmany "fromaccount" {"address":amount,...} ( minconf "comment" ) sendtoaddress "litecoinaddress" amount ( "comment" "comment-to" ) setaccount "litecoinaddress" "account" settxfee amount signmessage "litecoinaddress" "message" В портянке наблюдаем ключ getinfo. Попробуем им воспользоваться: $ ./litecoin-cli getinfo { "version" : 100202, "protocolversion" : 70003, "walletversion" : 60000, "balance" : 0.00000000, "blocks" : 369109, "timeoffset" : 249, "connections" : 8, "proxy" : "", "difficulty" : 650.53491400, "testnet" : false, "keypoololdest" : 1447756674, "keypoolsize" : 101, "paytxfee" : 0.00000000, "relayfee" : 0.00100000, "errors" : "" } Видим некую информацию. Если несколько раз запустить эту команду, то можно заметить, что число blocks постоянно увеличивается. Так же меняется параметр difficulty. Что это значит - пока неясно. То ли демон уже начал молотить Лайткоины, толи демон просто поддерживает коннект с распределенной сетью. Если он молотит Лайткоины, то куда он их складывает? Ведь кошелек еще не создавался. Посмотрим, есть ли какие-нибудь вообще соединения демона с сетью. Команда из-под рута: # netstat -ap | grep litecoind tcp 0 0 *:9333 *:* LISTEN 24995/litecoind tcp 0 0 192.168.3.2:34567 host74-138.custome:9333 ESTABLISHED 24995/litecoind tcp 14395 0 192.168.3.2:52051 vmd5297.contabo.ho:9333 ESTABLISHED 24995/litecoind tcp 0 0 192.168.3.2:54487 143.ip-37-59-102.e:9333 ESTABLISHED 24995/litecoind tcp 0 0 192.168.3.2:36570 static.106.92.76.1:9333 ESTABLISHED 24995/litecoind tcp 0 0 192.168.3.2:48761 213.211.142.73.dyn:9333 ESTABLISHED 24995/litecoind tcp 0 0 192.168.3.2:43490 149-210-215-250.co:9333 ESTABLISHED 24995/litecoind tcp 0 0 192.168.3.2:32981 hosted-by.solarcom:9333 ESTABLISHED 24995/litecoind tcp 0 0 192.168.3.2:58771 dedi-nl-041602.op-:9333 ESTABLISHED 24995/litecoind tcp6 0 0 [::]:9332 [::]:* LISTEN 24995/litecoind tcp6 0 0 [::]:9333 [::]:* LISTEN 24995/litecoind Да, соединений навалом, и непонятно, что же обсчитывает демон. Надо разбираться дальше. Попробуем получить информацию о кошельке: $ ./litecoin-cli getwalletinfo { "walletversion" : 60000, "balance" : 0.00000000, "txcount" : 0, "keypoololdest" : 1447756674, "keypoolsize" : 101 } Ничего нового не видим, чего бы не показала опция getinfo. Попробуем получить список аккаунтов: $ ./litecoin-cli listaccounts { "" : 0.00000000 } В буквальном смысле, все по нулям. Мысли вслух, проверить инфу... На сайте litecoin.info висит информация о том, что при первом использовании Лийткоина надо скачивать начальный блок: https://litecoin.info/Main_Page Use bootstrap.dat to reduce blockchain download time (from about two days to one hour). Ну, информация-то висит, а что делать с этим файлом - не написано. Я излазил буржуйские Вики, но найти однозначной информации так и не смог. Вопрос остается открытым. Создание кошелька В мире Litecoin и Bitcoin существует следующая путанница. Кошельком называют:
В текстах обычно не поясняют, о каком конкретно типе кошелька идет речь. Предполагается, что это и так ясно из контекста, однако возникает много двусмысленностей по типу "что хотел сказать автор?". Насколько я понял, в нашем консольном случае кошелек - это просто файл wallet.dat. Этот файл создается при запуске лайткоин-демона. Вроде как это и есть основная ценность для пользователя. Вроде как его можно таскать с собой, подменять его и работать с ним. Чтобы увидеть Лайткоин-адреса, расположенные в wallet.dat, можно воспользоваться командой: $ ./litecoin-cli listreceivedbyaddress 0 true [ { "address" : "LjKaWshEoSJGHsd6129fsvwofahGEGJl72", "account" : "", "amount" : 0.00000000, "confirmations" : 0, "txids" : [ ] }, ] В консольном клиенте есть команда getnewaddress: $ ./litecoin-cli getnewaddress LaKFi0Abc9D1Jc96w1e7dQsB99xGsXbUdL Работает она примерно пол-минуты, и выдает строку с лайткоин адресом. В результате работы этой команды, в файле кошелька wallet.dat будет добавлен еще один Litecoin-адрес. К сожалению, я не знаю, есть ли уже какой-то адрес в только что созданном кошельке (забыл проверить). В любом случае, если нет, то его можно создать вышеприведенной программой. Итоги Мы научились запускать лайткоин-демона, и выполнять простейшие команды через консольную утилиту. Забегая вперед, отмечу, что лайткоин-демон не майнит лайткоины. Он только позволяет работать с файлом кошелька wallet.dat, и поддерживает соединение с распределенной сетью - выкачивает блокчейн, делает прочие системные вещи. Майнер - это отдельная программа, и о ней будет рассказано в следующей части. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|