MyTetra Share
Делитесь знаниями!
Как работать с 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.


Задача


Для удовлетворения собственного любопытства, нужно сделать следующие вещи:


  1. Создать Litecoin-кошелек (желательно два - для экспериментов);
  2. Намайнить на CPU хоть сколько-нибудь денежных знаков;
  3. Передать средства с одного кошелька на другой.



Скачивание ПО


Сначала надо зайти на официальный сайт 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;
  • программу-оболочку, которая работает локально на компьютере и предоставляет интерфейс для работы с файлом кошелька (так называемый толстый кошелек);
  • программу-оболочку, которая работает локально на компьютере и предоставляет интерфейс для работы с удаленным сервисом хранения кошельков (так называемый тонкий кошелек);
  • веб-сайт, имеющий веб-интерфейс для работы с кошельком, хранящимся на этом веб-ресурсе (так называемый интернет-кошелек).


В текстах обычно не поясняют, о каком конкретно типе кошелька идет речь. Предполагается, что это и так ясно из контекста, однако возникает много двусмысленностей по типу "что хотел сказать автор?".


Насколько я понял, в нашем консольном случае кошелек - это просто файл 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, и поддерживает соединение с распределенной сетью - выкачивает блокчейн, делает прочие системные вещи.


Майнер - это отдельная программа, и о ней будет рассказано в следующей части.


 
MyTetra Share v.0.59
Яндекс индекс цитирования