安裝
根據自己的環境選擇對應的安裝包,下載至任意目錄。目前提供的安裝包列表如下:
qtum-0.15.1-aarch64-linux-gnu.tar.gz
qtum-0.15.1-osx64.tar.gz
qtum-0.15.1-win64.zip
qtum-0.15.1-arm-linux-gnueabihf.tar.gz
qtum-0.15.1-win32-setup-unsigned.exe
qtum-0.15.1-x86_64-linux-gnu.tar.gz
qtum-0.15.1-i686-pc-linux-gnu.tar.gz
qtum-0.15.1-win32.zip
qtum-0.15.1-osx-unsigned.dmg
qtum-0.15.1-win64-setup-unsigned.exe
複製程式碼
其中exe結尾檔案為windows下的安裝檔案,直接執行安裝。dmg結尾的檔案為mac osx下的安裝檔案,執行後拖拽圖示至資料夾內即成功安裝。其餘包的安裝方式都是解壓後直接執行相應程式。內測期間原始碼暫不公開,後續會進行公開。
由於QtumX是基於Qtum 0.15.1版本開發,所以安裝包的命名和其保持一致,若使用exe或dmg方式安裝,則會覆蓋系統中原本的Qtum程式。如果系統中原本已經安裝了Qtum,建議使用解壓的方式進行安裝QtumX。
QtumX在不同環境下的預設資料儲存目錄如下。可以看到QtumX的資料位於Qtum預設目錄的poa資料夾下,因此不會與Qtum的資料產生衝突。不過你也可以通過啟動時通過命令列引數的方式手動指定目錄。
// Windows < Vista: C:\Documents and Settings\Username\Application Data\Qtum\poa
// Windows >= Vista: C:\Users\Username\AppData\Roaming\Qtum\poa
// Mac: ~/Library/Application Support/Qtum/poa
// Unix: ~/.qtum/poa
複製程式碼
啟動
如果是exe或是dmg的方式安裝,則直接點選安裝後的圖示啟動。
如果是解壓安裝,則進入解壓後的目錄,執行 ./bin/qtumd 來啟動命令列錢包,或是 ./bin/qtum-qt 啟動QT圖形介面的錢包。舉例如下(mac osx環境)。
$ tar zxf qtum-0.15.1-osx64.tar.gz
$ cd qtum-0.15.1
$ mkdir data
$ ./bin/qtumd -datadir=./data
or
$ ./bin/qtum-qt -datadir=./data
複製程式碼
進入命令列
如果啟動的是QT錢包,則進入Help-Debug window,然後點選控制檯標籤。如果是命令列錢包,則執行./bin/qtum-cli。舉例如下(通過help命令檢視所有支援的命令)。
$ ./bin/qtum-cli -datadir=./data/ help
== Blockchain ==
callcontract "address" "data" ( address )
getaccountinfo "address"
getbestblockhash
getblock "blockhash" ( verbosity )
getblockchaininfo
getblockcount
getblockhash height
getblockheader "hash" ( verbose )
...
$ ./bin/qtum-cli -datadir=./data/ help setpoaminer
setpoaminer "address"
set the miner for the poa consensus.
Arguments:
1. "address" (string, required) The base58 address
Note: The miner's private key should be imported to the wallet.
...
複製程式碼
配置
使用getpeerinfo命令檢視當前連線的節點。目前內測期間我們設定了3臺官方節點,分別是:
47.90.74.140:13777 [香港]
47.88.61.227:13777 [美國]
116.62.70.220:13777 [中國]
複製程式碼
如果getpeerinfo返回的結果中不包含中國節點(通常為網路原因),造成區塊下載速度慢,請通過以下命令手動新增。
./bin/qtum-cli -datadir=./data/ addnode "116.62.70.220:13777" add
複製程式碼
通過getblockchaininfo命令可以獲取目前同步的區塊鏈狀況。 、
$ ./bin/qtum-cli -datadir=./data/ getblockchaininfo
{
"chain": "poa",
"blocks": 63775,
"headers": 63775,
...
複製程式碼
也可以前往官方的區塊鏈瀏覽器(qtumx.info/)檢視當前的區塊鏈狀態。
token操作
通過getnewaddress命令生成一個新的地址,然後通過郵件把地址發給官方以獲得內測環境的token。
$ ./bin/qtum-cli -datadir=./data/ getnewaddress
QefmCRE8omt3jndykxSQTMDwLzBJGUr1BM
複製程式碼
通過getreceivedbyaddress命令可以檢視地址下是否有了token,或是把地址貼上到區塊鏈瀏覽器中進行獲取。
得到token後就可以自由進行一些token轉移操作,例如使用sendtoaddress命令可以往指定地址傳送指定數量的token。
$ ./bin/qtum-cli -datadir=./data/ getnewaddress
QVymcpv6wDocxcQocMnWtyc9Poukt8QtyG
$ ./bin/qtum-cli -datadir=./data/ sendtoaddress QVymcpv6wDocxcQocMnWtyc9Poukt8QtyG 20
d29d09118c821340a91af779f8eb9f446ab54ee83074aa008a826bfc06fae6df
複製程式碼
合約操作
首先通過listcontracts命令檢視目前鏈上有哪些合約。
$ ./bin/qtum-cli -datadir=./data/ listcontracts
{
"569b6c121d25a59bfb90fdec1464827aa8d57d14": 0.00000000,
"0000000000000000000000000000000000000080": 0.00000000,
"0000000000000000000000000000000000000085": 0.00000000,
"9811d1e878dec479d1d8219e1cb20a3ee9f7bdd2": 0.00000000,
"0000000000000000000000000000000000000081": 0.00000000,
"0000000000000000000000000000000000000083": 0.00000000,
"0000000000000000000000000000000000000084": 0.00000000,
"0000000000000000000000000000000000000082": 0.00000000
}
複製程式碼
其中,80-85為DGP合約,分別用於 gas_schedule、block_size、gas_price、預留、block_gas_limit、miner_list 引數的線上管理。
可以使用createcontract命令建立新的合約,callcontract去呼叫合約中的函式檢視返回結果,sendtocontract去向合約傳送token和資料。更多合約操作請檢視:Qtum智慧合約使用方法及說明。
成為礦工
QtumX作為聯盟鏈,礦工列表是通過DGP的方式授權指定的(參照QtumX技術白皮書)。可以從區塊鏈瀏覽器(qtumx.info/)上看到,礦工會按順序輪流生成新的區塊。
目前內測環境下,DGP的許可權由官方保留。所以如果你想要成為礦工,請將自己的礦工地址minerAddress通過郵件傳送至官方,郵件中註明想成為礦工。然後由官方進行新礦工的投票生效過程。
注意:因為目前的PoA共識機制在半數礦工離線的情況下就會停止工作,所以一旦你成為礦工,請保證你的節點大多數情況下都會線上。
當新的礦工投票生效後,你可以通過setpoaminer命令將自己的minerAddress設定成礦工開始挖礦。
更新礦工
礦工列表的DGP部署在了地址"0000000000000000000000000000000000000085"上,其原始碼在Github上可以找到:dgp-template.sol.js。礦工列表的儲存合約 minerList-dgp.sol 如下:
pragma solidity ^0.4.8;
contract minerList{
address[] _minerList=[
0x47210a1bacc15175bb24c3384e5d3650991a7bc4,
0xfe6e43ffb52ef746a0db8cc51cb95921c34ca0a3,
0x6cadd7aefdb363ae680fc234dcfe4c40919781d3
];
function getMinerList() constant returns(address[] vals){
return _minerList;
}
}
複製程式碼
更新礦工的過程可以簡述如下:
- 確定每位礦工的address,然後用gethexaddress命令得到對應的hexaddress。
- 將所有礦工的hexaddress填入minerList-dgp.sol中的_minerList引數中,得到新的礦工列表。
- 編譯生成minerList-dgp.sol的二進位制程式碼,並用createcontract命令部署上鍊。
- 得到部署後的合約地址minerListAddress,然後呼叫dgp-template.sol中的addAddressProposal(minerListAddress, 2)函式,對新的minerListAddress進行投票。
- 收到足夠多的投票後,新的minerListAddress通過,記入進paramsHistory引數中,延遲若干個block(當前為500)後生效。
檢視礦工
我們可以首先檢視一下當前生效的minerListAddress。為了簡便起見,合約的操作通過QT錢包進行。
- 開啟QT錢包,點選介面左側的Smart Contracts - Call。
- Contract Address處填入0000000000000000000000000000000000000085,ABI處填入用dgp-template.sol編譯得到的ABI,Function選擇getParamsForBlock,uint _reqBlockHeight處填寫一個任意高度,如10000。
- 點選CALL CONTRACT,檢視結果,得到569b6c121d25a59bfb90fdec1464827aa8d57d14。
- 然後回到Call Contract標籤頁,Contract Address填寫569b6c121d25a59bfb90fdec1464827aa8d57d14,ABI填寫minerList-dgp.sol編譯得到的ABI,Function選擇getMinerList。
- CALL CONTRACT。得到vals為[47210a1bacc15175bb24c3384e5d3650991a7bc4, fe6e43ffb52ef746a0db8cc51cb95921c34ca0a3, 6cadd7aefdb363ae680fc234dcfe4c40919781d3],即為高度10000上通過的礦工列表。
後續如果有需求,可以把礦工更新、檢視相關的功能封裝成介面。