莱特币 号称轻量级的比特币。不过也没比比特币简单多少。我看中它的原因是它的数据量大小只有 20G 左右,再其它数字火币大小暴涨的今天,也算是一个良心币了。
莱特币的官方钱包 Mac 版有一个 .dmg
,如果你只是使用而已的话就直接安装 DMG
格式的就好。
如果你是开发,需要调用 RPC
接口,我的推荐方式,就是安装它们的命令行程序。
因为笔者的电脑是 MAC
,也就是苹果笔记本,所以我们就介绍下 OSX 系统下如何安装吧
前期准备
-
首先你的必须有一台空余硬盘 30+G 的笔记本。虽然莱特币目前只有 20G 左右,但是加上索引等七七八八的,也不小了
-
已经安装了 HomeBrew ,官方地址为 https://brew.sh/
-
熟悉终端,也称之为 Shell
安装依赖
打开终端,输入以下命令安装一些前置依赖
brew install automake berkeley-db4 libtool boost miniupnpc openssl pkg-config protobuf python3 qt libevent libtool
下载代码
最新的 LiteCoin 代码都托管在 Github 上
你可以点击下载 zip
版本或者使用下面的命令拷贝到本地
git clone https://github.com/litecoin-project/litecoin
下载完成后使用 cd litecoin
命令进入 litecoin
目录
编译安装
-
首先使用下面的命令生成预编译
configure
相关文件./autogen.sh
-
然后使用下面的命令生成预编译指令
./configure
-
然后就可以使用
make
命令来编译了,编译很耗时,而且事故多发make
-
检测我们的编译情况
make check
-
其实这时候已经可以使用了,已经可以在
./src
目录看到以下三个二进制可执行文件litecoind litecoin-cli litecoin-tx
各个文件的作用如下
文件 说明 litecoind Litecoin 钱包守护进程文件 litecoin-cli Litecoin RPC 客户端 litecoin-tx 用于生成一个交易记录,一般用不着 -
为了方便日后的运行,我们需要将上述三个文件复制到
/usr/local/bin
目录下cd ~/litecoin/src cp litecoind /usr/local/bin cp litecoind-cli /usr/local/bin/ cp litecoind-tx /usr/local/bin/
或者使用下面的命令进行安装
make install
配置文件
在运行守护进程 litecoind
之前,我们先需要配置一下配置文件,以防止日后需要重新配置的时候需要重新下载
Litecoid 比特币默认的存储目录为
/Users/${USER}/Library/Application Support/Litecoin
如果你的 User 目录硬盘足够,其实可以不用做下面的软链接,因为我的不够,所用了第二块硬盘,该硬盘挂在到 /Volumes/backup
,所以我做了一个软链接
ln -s /Volumes/backup/litecoin/data /Users/${USER}/Library/Application Support/Litecoin
然后在 /Volumes/backup/litecoin/data
目录下新建一个文件 litecoind.conf
并输入一下内容
txindex=1 rpcuser=yufei rpcpassword=110220 daemon=1 datadir=/Volumes/backup/litecoin/data
还有更多信息,我们这里只是列出了几个重要的
选项 | 值 | 说明 |
---|---|---|
txindex | 1 | 索引全部交易数据,默认为 0 ,只会索引最近的交易信息 |
rpcuser | yufei | RPC JSON 调用时,应该输入的用户名 |
rpcpassword | 110220 | RPC JSON 调用时,应该输入的密码 |
daemon | 1 | 开启守护进程模式,如果不设置则为前台运行 |
运行 Litecoin 守护进程
如果你只是访问钱包和使用钱包,则不用配置上面的 litecoin.conf
文件,直接运行 litecond
即可
[root@localhost src] ./litecoind Litecoin server starting
这样,就启动了我们的 litecoind
守护进程文件
对了,所有的配置都可以使用 litecoin.conf
来覆盖
而所有的 litecoin.conf
配置项也可以通过命令行参数来覆盖,除了 --conf
等几个少数的选项。
同步数据
运行上述的文件就,就会开始同步区块数据,因为 17G+ 数据需要同步,所以可能需要很长时间
使用 litecoin-cli
脚本访问远程 RPC JSON 服务
我们可以使用下面的命令 litecoin-cli
命令查看 litecoin-cli
提供了哪些选项
[yufei@www.twle.cn all]$ litecoin-cli --help Litecoin Core RPC client version v0.16.2 Usage: litecoin-cli [options] <command> [params] Send command to Litecoin Core litecoin-cli [options] -named <command> [name=value] ... Send command to Litecoin Core (with named arguments) 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 -getinfo Get general information from the remote server. Note that unlike server-side RPC calls, the results of -getinfo is the result of multiple non-atomic requests. Some entries in the result may represent results from different states (e.g. wallet balance may be as of a different block from the chain state reported) Chain selection options: -testnet Use the test chain -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. -named Pass named instead of positional arguments (default: false) -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 -rpcclienttimeout=<n> Timeout in seconds during HTTP requests, or 0 for no timeout. (default: 900) -stdinrpcpass Read RPC password from standard input as a single line. When combined with -stdin, the first line from standard input is used for the RPC password. -stdin Read extra arguments from standard input, one per line until EOF/Ctrl-D (recommended for sensitive information such as passphrases). When combined with -stdinrpcpass, the first line from standard input is used for the RPC password. -rpcwallet=<walletname> Send RPC for non-default wallet on RPC server (argument is wallet filename in litecoind directory, required if litecoind/-Qt runs with multiple wallets)
如果要查看当前可以使用哪些 RPC
指令,那么可以使用 litecoin-cli help
方法
[yufei@www.twle.cn all]$ litecoin-cli help == Blockchain == getbestblockhash getblock "blockhash" ( verbosity ) getblockchaininfo getblockcount getblockhash height getblockheader "hash" ( verbose ) getchaintips getchaintxstats ( nblocks blockhash ) getdifficulty getmempoolancestors txid (verbose) getmempooldescendants txid (verbose) getmempoolentry txid getmempoolinfo getrawmempool ( verbose ) gettxout "txid" n ( include_mempool ) gettxoutproof ["txid",...] ( blockhash ) gettxoutsetinfo preciousblock "blockhash" pruneblockchain savemempool verifychain ( checklevel nblocks ) verifytxoutproof "proof" == Control == getmemoryinfo ("mode") help ( "command" ) logging ( <include> <exclude> ) stop uptime == Generating == generate nblocks ( maxtries ) generatetoaddress nblocks address (maxtries) == Mining == getblocktemplate ( TemplateRequest ) getmininginfo getnetworkhashps ( nblocks height ) prioritisetransaction <txid> <dummy value> <fee delta> submitblock "hexdata" ( "dummy" ) == Network == addnode "node" "add|remove|onetry" clearbanned disconnectnode "[address]" [nodeid] getaddednodeinfo ( "node" ) getconnectioncount getnettotals getnetworkinfo getpeerinfo listbanned ping setban "subnet" "add|remove" (bantime) (absolute) setnetworkactive true|false == Rawtransactions == combinerawtransaction ["hexstring",...] createrawtransaction [{"txid":"id","vout":n},...] {"address":amount,"data":"hex",...} ( locktime ) ( replaceable ) decoderawtransaction "hexstring" ( iswitness ) decodescript "hexstring" fundrawtransaction "hexstring" ( options iswitness ) getrawtransaction "txid" ( verbose "blockhash" ) sendrawtransaction "hexstring" ( allowhighfees ) signrawtransaction "hexstring" ( [{"txid":"id","vout":n,"scriptPubKey":"hex","redeemScript":"hex"},...] ["privatekey1",...] sighashtype ) == Util == createmultisig nrequired ["key",...] estimatefee nblocks estimatesmartfee conf_target ("estimate_mode") signmessagewithprivkey "privkey" "message" validateaddress "address" verifymessage "address" "signature" "message" == Wallet == abandontransaction "txid" abortrescan addmultisigaddress nrequired ["key",...] ( "account" "address_type" ) backupwallet "destination" bumpfee "txid" ( options ) dumpprivkey "address" dumpwallet "filename" encryptwallet "passphrase" getaccount "address" getaccountaddress "account" getaddressesbyaccount "account" getbalance ( "account" minconf include_watchonly ) getnewaddress ( "account" "address_type" ) getrawchangeaddress ( "address_type" ) getreceivedbyaccount "account" ( minconf ) getreceivedbyaddress "address" ( minconf ) gettransaction "txid" ( include_watchonly ) getunconfirmedbalance getwalletinfo importaddress "address" ( "label" rescan p2sh ) importmulti "requests" ( "options" ) importprivkey "privkey" ( "label" ) ( rescan ) importprunedfunds importpubkey "pubkey" ( "label" rescan ) importwallet "filename" keypoolrefill ( newsize ) listaccounts ( minconf include_watchonly) listaddressgroupings listlockunspent listreceivedbyaccount ( minconf include_empty include_watchonly) listreceivedbyaddress ( minconf include_empty include_watchonly) listsinceblock ( "blockhash" target_confirmations include_watchonly include_removed ) listtransactions ( "account" count skip include_watchonly) listunspent ( minconf maxconf ["addresses",...] [include_unsafe] [query_options]) listwallets lockunspent unlock ([{"txid":"txid","vout":n},...]) move "fromaccount" "toaccount" amount ( minconf "comment" ) removeprunedfunds "txid" rescanblockchain ("start_height") ("stop_height") sendfrom "fromaccount" "toaddress" amount ( minconf "comment" "comment_to" ) sendmany "fromaccount" {"address":amount,...} ( minconf "comment" ["address",...] replaceable conf_target "estimate_mode") sendtoaddress "address" amount ( "comment" "comment_to" subtractfeefromamount replaceable conf_target "estimate_mode") setaccount "address" "account" settxfee amount signmessage "address" "message" walletlock walletpassphrase "passphrase" timeout walletpassphrasechange "oldpassphrase" "newpassphrase"
可以看到有非常多的指令,现在,我们首先看看最新的区块高度是多少,这得使用 litecoin-cli getblockcount
指令
[yufei@www.twle.cn all]$ litecoin-cli getblockcount 1483468
如果你对某个指令不熟悉,比如 getblockcount
,可以使用 litecoin-cli getblockcount
显示帮助信息
[yufei@www.twle.cn all]$ litecoin-cli help getblockcount getblockcount Returns the number of blocks in the longest blockchain. Result: n (numeric) The current block count Examples: > litecoin-cli getblockcount > curl --user myusername --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getblockcount", "params": [] }' -H 'content-type: text/plain;' http://127.0.0.1:9332/
其它命令也一样,因为我们的数据还未同步完成,所以就不掩饰数据方面的信息了