QtumX使用教程(內測)

weixin_33861800發表於2018-07-16

安裝

根據自己的環境選擇對應的安裝包,下載至任意目錄。目前提供的安裝包列表如下:

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;
}

}
複製程式碼

更新礦工的過程可以簡述如下:

  1. 確定每位礦工的address,然後用gethexaddress命令得到對應的hexaddress。
  2. 將所有礦工的hexaddress填入minerList-dgp.sol中的_minerList引數中,得到新的礦工列表。
  3. 編譯生成minerList-dgp.sol的二進位制程式碼,並用createcontract命令部署上鍊。
  4. 得到部署後的合約地址minerListAddress,然後呼叫dgp-template.sol中的addAddressProposal(minerListAddress, 2)函式,對新的minerListAddress進行投票。
  5. 收到足夠多的投票後,新的minerListAddress通過,記入進paramsHistory引數中,延遲若干個block(當前為500)後生效。

檢視礦工

我們可以首先檢視一下當前生效的minerListAddress。為了簡便起見,合約的操作通過QT錢包進行。

  1. 開啟QT錢包,點選介面左側的Smart Contracts - Call。
  2. Contract Address處填入0000000000000000000000000000000000000085,ABI處填入用dgp-template.sol編譯得到的ABI,Function選擇getParamsForBlock,uint _reqBlockHeight處填寫一個任意高度,如10000。
  3. 點選CALL CONTRACT,檢視結果,得到569b6c121d25a59bfb90fdec1464827aa8d57d14。
  4. 然後回到Call Contract標籤頁,Contract Address填寫569b6c121d25a59bfb90fdec1464827aa8d57d14,ABI填寫minerList-dgp.sol編譯得到的ABI,Function選擇getMinerList。
  5. CALL CONTRACT。得到vals為[47210a1bacc15175bb24c3384e5d3650991a7bc4, fe6e43ffb52ef746a0db8cc51cb95921c34ca0a3, 6cadd7aefdb363ae680fc234dcfe4c40919781d3],即為高度10000上通過的礦工列表。

後續如果有需求,可以把礦工更新、檢視相關的功能封裝成介面。


相關文章