如何部署Qtum量子鏈節點

如何部署Qtum量子鏈節點

本教程包含Qtum量子鏈的部署、運行以及RPC調用等內容。html

教程假設讀者可以熟練使用Linux,Mac或Windows命令行。若您不符合此要求,或只關心Qtum qt錢包的使用方法,請參考另外一篇Qtum錢包使用教程。linux

獲取Qtum節點

能夠經過如下四種方法之一得到Qtum節點程序:git

1. 直接下載二進制文件github

若是你並不關心Qtum的源碼,部署Qtum節點最方便的方法是在Qtum release page(點擊打開)下載最新的二進制文件,目前支持的平臺包括Linux,Windows,OSX。建議選擇最新版進行下載,本教程以撰寫時的最新版v0.14.13爲例。docker

(注意,你所看到最新版的版本號可能不一樣,如這裏是0.14.13,其餘字符串保持不變)json

  • Mac用戶請下載:qtum-0.14.13-osx64.tar.gz
  • Linux用戶請下載: qtum-0.14.13-i686-pc-linux-gnu.tar.gz(32位)或qtum-0.14.13-x86_64-linux-gnu.tar.gz(64位)
  • Windows用戶請下載:qtum-0.14.13-win32.zip(32位)或qtum-0.14.13-win64.zip(64位)
  • 樹莓派用戶請下載:qtum-0.14.13-arm-linux-gnueabihf.tar.gz

下載壓縮包解壓後,<解壓路徑>/bin/下包含qtumdqtum-cli,即爲本教程要用到的Qtum節點可執行文件。ubuntu

2. Linux可經過apt安裝api

具體教程可參見github.com/qtumproject…,目前支持的平臺爲Ubuntu,Debian和Mint。安全

樹莓派用戶也能夠經過apt安裝,具體教程參見github.com/qtumproject…bash

按照教程安裝完畢後,能夠經過直接從命令行調用qtumdqtum-cli等。

3. 經過源代碼編譯

若是你想從源代碼直接編譯Qtum,能夠從Github上下載最新源碼: github.com/qtumproject…

具體編譯方法請參考 github.com/qtumproject…。目前支持較好的編譯平臺包括Linux和OSX。其餘平臺的依賴環境可能有所不一樣。

編譯成功後,在<path>/src路徑下一樣獲得上文的二進制可執行文件:qtumd,qtum-cli

4. 經過Docker獲取qtum鏡像

關於docker安裝和使用方法請參照docker官方教程。這裏假設docker環境已正確安裝。

Qtum官方在docker hub上的鏡像爲qtum/qtum,可經過如下命令獲取:

docker pull qtum/qtum:latest
複製代碼

經過上文方法獲取qtum可執行程序,其中與節點部署及RPC調用相關的是:

  • qtumd:Qtum核心程序,即真正的Qtum全節點程序
  • qtum-cli:Qtum命令行接口,能夠和Qtum核心程序進行交互,實現本地RPC調用

部署Qtum節點

Docker容器的使用方法略有不一樣,但原理一致。讀者可參考另外一教程《如何用docker運行qtum節點》。

下面以Ubuntu爲例,部署Qtum節點。Mac和Windows命令行與Linux保持一致,再也不贅述。

經過./qtumd, 便可運行Qtum全節點:

./qtumd -daemon
複製代碼

其中-daemon表示進程後臺駐留。若是用戶想經過節點查看合約相關events(如查看收發QRC20代幣的記錄等),能夠在運行qtumd時添加-logevents選項。

更多選項,可經過如下命令查看:

./qtumd -help
複製代碼

結束運行請執行:

./qtum-cli stop
複製代碼

不一樣平臺的默認的數據路徑不一樣:

  • Linux:~/.qtum/
  • Mac OSX:~/Library/Application Support/Qtum
  • Windows:%APPDATA%\Qtum

首次運行若是默認路徑不爲空,請清空以後再運行節點(清空即刪除路徑下全部文件,清空前注意備份!)。讀者也能夠經過-datadir選項指定數據路徑。

首次運行須要同步全部區塊,節點運行日誌路徑爲~/.qtum/debug.log

本地RPC調用

節點正常運行後,可經過qtum-cli進行交互,實現本地RPC調用。 例如:

oldclock@raven:~/qtum-0.14.3/bin$ ./qtum-cli getinfo
{
  "version": 140300,
  "protocolversion": 70016,
  "walletversion": 130000,
  "balance": 0.00000000,
  "stake": 0.00000000,
  "blocks": 12126,
  "timeoffset": 0,
  "connections": 8,
  "proxy": "",
  "difficulty": {
    "proof-of-work": 1.52587890625e-05,
    "proof-of-stake": 886731.5868738915
  },
  "testnet": false,
  "moneysupply": 100028504,
  "keypoololdest": 1505186997,
  "keypoolsize": 100,
  "paytxfee": 0.00000000,
  "relayfee": 0.00400000,
  "errors": ""
}
複製代碼

獲取全部RPC命令列表,請運行:

./qtum-cli help
複製代碼

獲取RPC調用的使用說明,請使用./qtum-cli help <RPCcmd>,例如:

./qtum-cli help getinfo
複製代碼

RPC調用設置

經過./qtum-cli help getinfo咱們能夠獲取經過jsonrpc實現getinfo調用的使用說明:

Examples:
> curl --user myusername --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getinfo", "params": [] }' -H 'content-type: text/plain;' http://127.0.0.1:3889/
複製代碼

實例中給出了json報文的詳細格式,但默認條件下沒法進行調用。只有在設置rpc用戶名和密碼後,纔可正常使用。設置方法以下:

方法一:新建配置文件~/.qtum/qtum.conf,內容包含

rpcuser=test  #rpc用戶名
rpcpassword=test1234  #rpc密碼
#以上兩項必須設置。默認狀況下,只容許本地的RPC鏈接,
#要實現遠程調用,可經過設置rpcallowip聲明全部容許訪問的ip
#ipv4和ipv6均可設置,且但是設置多個ip。例如:
#rpcallowip=192.168.77.51/255.255.255.0
#rpcallowip=1.2.3.4/24
#rpcallowip=2001:db8:85a3:0:0:8a2e:370:7334/96
複製代碼

更多配置參數能夠參考:qtum.conf實例(點擊打開)

設置完成後,重啓節點即完成配置。

方法二:從新運行Qtum節點,並加入特定參數:

./qtumd -rpcuser=test -rpcpassword=test1234 -rpcallowip=192.168.77.51/255.255.255.0
複製代碼

各參數含義與配置文件中相同,再也不贅述。

RPC調用實例

設置完成並從新運行節點後,便可進行遠程RPC調用。本文中運行Qtum節點的服務器ip爲192.168.77.188,默認端口爲3889。例如,在macbook上對ubuntu中運行的Qtum節點進行rpc調用,將返回和本地調用相同結果:

zhongwenbins-MacBook-Pro:~ zhongwenbin$ curl --user test:test1234 --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getinfo", "params": [] }' -H 'content-type: text/plain;' http://192.168.77.188:3889/
{"result":{"version":140300,"protocolversion":70016,"walletversion":130000,"balance":0.00000000,"stake":0.00000000,"blocks":12197,"timeoffset":0,"connections":8,"proxy":"","difficulty":{"proof-of-work":1.52587890625e-05,"proof-of-stake":650787.7561123729},"testnet":false,"moneysupply":100028788,"keypoololdest":1505186997,"keypoolsize":100,"paytxfee":0.00000000,"relayfee":0.00400000,"errors":""},"error":null,"id":"curltest"}
複製代碼

用postman等工具可看到更加直觀的效果: postman截圖

自此Qtum節點的部署及rpc調用設置所有完成。

Nginx配置實例(選讀)

從上文實例能夠看出,rpc命令必須包含rpc用戶名,密碼,並指定端口號3889。若是想部署通用API,避免輸入用戶密碼及端口號,能夠考慮用Nginx實現。這樣作的好處是能夠隱藏用戶名和密碼,當用戶名密碼甚至是端口號發生改變時,也不影響api,同時還能夠對外部rpc調用進行適當過濾,保證安全性。關於Nginx的安裝和基本使用,可自行搜索相關教程。

例如,

  • 運行Qtum節點的服務端ip爲192.168.77.188,節點正常運行
  • api代理端ip爲192.168.77.51,已安裝Nginx

設置步驟以下:

1.設置服務端Qtum節點的rpc配置文件(參考上文),將api代理端的ip加入rpcallowip中,並重啓節點,例如:

rpcuser=test
rpcpassword=test1234
rpcallowip=192.168.77.51/255.255.255.0
複製代碼

2.配置代理端Nginx:

server {
        listen       80;
        server_name  localhost;

        location / {
            proxy_pass http://192.168.77.188:3889;  #反代到端口3889
            proxy_set_header Authorization "Basic dGVzdDp0ZXN0MTIzNA==";  #本例中爲test:test1234的base64編碼
        }
    }
複製代碼

3.設置完成後,直接訪問代理端便可進行RPC調用(無需輸入用戶名密碼和端口號),如:

zhongwenbins-MacBook-Pro:~ zhongwenbin$ curl  --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getinfo", "params": [] }' -H 'content-type: text/plain;' http://192.168.77.51/
{"result":{"version":140300,"protocolversion":70016,"walletversion":130000,"balance":0.00000000,"stake":0.00000000,"blocks":12250,"timeoffset":0,"connections":8,"proxy":"","difficulty":{"proof-of-work":1.52587890625e-05,"proof-of-stake":651324.7815933984},"testnet":false,"moneysupply":100029000,"keypoololdest":1505186997,"keypoolsize":100,"paytxfee":0.00000000,"relayfee":0.00400000,"errors":""},"error":null,"id":"curltest"}
複製代碼

以上設置實例僅供參考,讀者可根據自身需求做更多設置,或是選擇其它工具代替。

實用命令和文檔

讀者在部署節點或RPC調用時遇到問題,可優先參考如下實用命令或文檔:

  • 編譯問題參考文檔: github.com/qtumproject…
  • 查看qtumd的全部選項:./qtumd -help
  • 查看全部rpc命令: ./qtum-cli help
  • 查看某rpc命令使用說明(如getinfo): ./qtum-cli help getinfo
  • 配置文件示例:qtum.conf(點擊打開)
相關文章
相關標籤/搜索