動手部署Cybermiles的全節點。超級詳細,電商公鏈

首先,我們需要一臺機器,虛擬機也行,但是,你要把你的虛擬機暴露在公網上,而且你的保持他能穩定的運行,推薦雲服務器。配置如下。

Physical Server:

CPU: 8 cores, 16 threads
Memory: 14 RAM
Port: 26656, 26657
Networking: 10 Gbps

linux的版本的話,必須是centos7和ubantu16.04

 

準備開始了:首先我們下載預構建的二進制文件

 rm -rf $HOME/release
mkdir -p $HOME/release
cd $HOME/release

# if your os is Ubuntu 16.04
wget https://github.com/CyberMiles/travis/releases/download/v0.1.2-beta/travis_v0.1.2-beta_ubuntu-16.04.zip
unzip travis_v0.1.2-beta_ubuntu-16.04.zip

# if your os is CentOs 7
wget https://github.com/CyberMiles/travis/releases/download/v0.1.2-beta/travis_v0.1.2-beta_centos-7.zip
unzip travis_v0.1.2-beta_centos-7.zip

 

初始化階段環境配置

rm -rf $HOME/.travis
mkdir -p $HOME/.travis
cd $HOME/release

curl https://raw.githubusercontent.com/CyberMiles/testnet/master/travis/init-staging/vm-genesis.json > $HOME/.travis/vm-genesis.json
./travis node init --env staging --vm-genesis $HOME/.travis/vm-genesis.json

INFO [10-03|13:57:31.498] Successfully init travis database and create tables!
INFO [10-03|13:57:31.522] Allocated cache and file handles database=/root/.travis/vm/chaindata cache=16 handles=16
INFO [10-03|13:57:31.533] Writing custom genesis block
INFO [10-03|13:57:31.677] Persisted trie from memory database nodes=2980 size=465.04kB time=31.4273ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [10-03|13:57:31.678] successfully wrote genesis block and/or chain rule set hash=637fcf…db4ac8

curl https://raw.githubusercontent.com/CyberMiles/testnet/master/travis/init-staging/config/config.toml > $HOME/.travis/config/config.toml
curl https://raw.githubusercontent.com/CyberMiles/testnet/master/travis/init-staging/config/genesis.json > $HOME/.travis/config/genesis.json

cd $HOME/.travis
vim $HOME/.travis/config/config.toml
# moniker = "my_validator"

設置libeni

mkdir -p $HOME/.travis/eni
cp -r $HOME/release/lib/. $HOME/.travis/eni/lib

# set env variables for eni lib
export ENI_LIBRARY_PATH=$HOME/.travis/eni/lib
export LD_LIBRARY_PATH=$HOME/.travis/eni/lib

 

運行一個完整節

cd $HOME/release
./travis node start

# find pub key in config file
cat $HOME/.travis/config/priv_validator.json

{
"address": "D46FD46192B3CADBEA9186FD132AC75270F65D33",
"pub_key": {
"type": "tendermint/PubKeyEd25519",
"value": "MLP5Ziz6VdayhDc/O/OvGNM533H0OQ1hARDGSvnoS3I="
},
"last_height": "0",
"last_round": "0",
"last_step": 0,
"priv_key": {
"type": "tendermint/PrivKeyEd25519",
"value": "BjezqaMRm/aLQASwEF7dC3U1KPb7onyAo/jOxD+nwDwws/lmLPpV1rKENz87868Y0znfcfQ5DWEBEMZK+ehLcg=="
}
 

設置docker節點

 

Travis的Docker映像存儲在Docker Hub上。TestNet環境使用“vTestnet”版本,可以自動從Travis:

 

docker pull cybermiles/travis:vTestnet

 

注意:配置和數據將存儲在容器中的/travis目錄中。目錄也將作爲卷公開。端口8545、26656和26657將被公開以便連接。

 

rm -rf $HOME/.travis
docker run --rm -v $HOME/.travis:/travis -t cybermiles/travis:vTestnet node init --env testnet --home /travis
curl https://raw.githubusercontent.com/CyberMiles/testnet/master/travis/init/config/config.toml > $HOME/.travis/config/config.toml
curl https://raw.githubusercontent.com/CyberMiles/testnet/master/travis/init/config/genesis.json > $HOME/.travis/config/genesis.json

 

啓動節點並加入Travis TestNet

 

im ~/.travis/config/config.toml

# here you can change your name
moniker = "<your_custom_name>"  改爲local 默認現在也是local

 

docker run --name travis -v $HOME/.travis:/travis -p 26657:26657 -p 8545:8545 -t cybermiles/travis:vTestnet node start --home /travis

 

現在您的節點正在與TestNet同步,輸出將如下所示。等待它完全同步。

 

INFO [07-20|03:13:26.229] Imported new chain segment               blocks=1 txs=0 mgas=0.000 elapsed=1.002ms   mgasps=0.000    number=3363 hash=4884c0…212e75 cache=2.22mB
I[07-20|03:13:26.241] Committed state                              module=state height=3363 txs=0 appHash=3E0C01B22217A46676897FCF2B91DB7398B34262
I[07-20|03:13:26.443] Executed block                               module=state height=3364 validTxs=0 invalidTxs=0
I[07-20|03:13:26.443] Updates to validators                        module=state updates="[{\"address\":\"\",\"pub_key\":\"VPsUJ1Eb73tYPFhNjo/8YIWY9oxbnXyW+BDQsTSci2s=\",\"power\":27065},{\"address\":\"\",\"pub_key\":\"8k17vhQf+IcrmxBiftyccq6AAHAwcVmEr8GCHdTUnv4=\",\"power\":27048},{\"address\":\"\",\"pub_key\":\"PoDmSVZ/qUOEuiM38CtZvm2XuNmExR0JkXMM9P9UhLU=\",\"power\":27048},{\"address\":\"\",\"pub_key\":\"2Tl5oI35/+tljgDKzypt44rD1vjVHaWJFTBdVLsmcL4=\",\"power\":27048}]"

 

這個過程看報錯,因爲自從主網升級後,我卡這個地方卡了很久,因爲區塊無法繼續同步,快照的問題,需要下載最新的快照,重新啓動節點。

要訪問TestNet類型,請在單獨的終端控制檯中輸入以下內容以獲得您的IP地址,然後使用您的IP地址連接到TestNet。

 

docker inspect -f '{{ .NetworkSettings.IPAddress }}' travis
172.17.0.2
docker run --rm -it cybermiles/travis:vTestnet attach http://172.17.0.2:8545

 

現在,您應該看到web3-cmt JavaScript控制檯,現在可以跳轉到“測試事務”部分來發送測試事務。

> 前面有個小箭頭,這樣就已經進入到JS控制檯了

測試事務
您可以測試兩個帳戶之間的事務。記得解鎖你的兩個賬戶。

 

> personal.unlockAccount("0x1234FROM","password")
true
...
> cmt.sendTransaction({from:"0x1234FROM", to:"0x1234DEST",value:1000})
...
> cmt.getBalance("0x1234DEST")

您還可以爲測試令牌測試智能契約事務,如下所示。

 

> abi = [{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]
> tokenContract = web3.cmt.contract(abi)
> tokenInstance = tokenContract.at("0xb6b29ef90120bec597939e0eda6b8a9164f75deb")
> tokenInstance.transfer.sendTransaction("0x1234DEST", 1000, {from: "0x1234FROM"})

10秒後,您可以查看收款賬戶餘額如下

> tokenInstance.balanceOf.call("0x1234DEST")

 

還有很多方法可以參考CMT官方的github和他們自己的文檔。

以上就是現如今電商公鏈的節點部署,testnet ,mainnet 可以參考,stating已經關閉。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章