如何部署Qtum量子鏈節點

QTUM量子鏈開發團隊發表於2018-07-16

如何部署Qtum量子鏈節點

如何部署Qtum量子鏈節點

本教程包含Qtum量子鏈的部署、執行以及RPC呼叫等內容。

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

獲取Qtum節點

可以通過以下四種方法之一獲得Qtum節點程式:

1. 直接下載二進位制檔案

如果你並不關心Qtum的原始碼,部署Qtum節點最方便的方法是在Qtum release page(點選開啟)下載最新的二進位制檔案,目前支援的平臺包括Linux,Windows,OSX。建議選擇最新版進行下載,本教程以撰寫時的最新版v0.14.13為例。

(注意,你所看到最新版的版本號可能不同,如這裡是0.14.13,其他字串保持不變)

  • 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節點可執行檔案。

2. Linux可通過apt安裝

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

樹莓派使用者也可以通過apt安裝,具體教程參見github.com/qtumproject…

按照教程安裝完畢後,可以通過直接從命令列呼叫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呼叫時遇到問題,可優先參考以下實用命令或文件:


相關文章