NetCloth測試環境搭建--霜之小刀

NetCloth測試環境搭建–霜之小刀


歡迎轉載和引用
若有問題請聯繫請聯繫
Email : [email protected]

前言

最近看到區塊鏈行業有一個新的公鏈挺有意思的,官方目前貌似還沒有開始宣傳,只給提供了一個點對點的加密聊天工具,試了下聊天工具,沒有目前還沒有微信那麼全,但是基本能用了,但其主打是隱私,這塊因爲客戶端還沒有開源,不好評價~但是看官網,後面自己搭建聊天服務器,但是服務器的代碼和聊天的代碼目前還沒有開源,不知道啥時候能開源,但是公鏈的代碼已經開源了,我嘗試的搭建了一下測試服務器,貌似可以成功!關注其下一步發展

準備工作

我從他們的官網https://www.netcloth.org找到了github的相關地址,也就是在https://github.com/NetCloth/netcloth-chain這裏。然後找到了他們的環境搭建文檔,https://docs.netcloth.org,本文主要參照該文檔。

搭建相關環境

GIT的安裝

sudo apt-get update
sudo apt-get install git

GO環境的安裝

檢查當前go環境

查看golang版本
go version

在ubuntu上執行結果如下:
[20:09:04] root:~ # go version
go version go1.12.2 linux/amd64

在mac os上執行結果如下:
➜  ~ go version
go version go1.13 darwin/amd64

如果版本號低於1.12.2請徹底卸載golang,並將GO相關的path從PATH環境變量中刪除

安裝go環境

# macOS系統執行如下命令
wget https://dl.google.com/go/go1.12.2.darwin-amd64.tar.gz
tar -xvf go1.12.2.darwin-amd64.tar.gz
mv go /usr/local

# ubuntu系統執行如下命令
wget https://dl.google.com/go/go1.12.2.linux-amd64.tar.gz
tar -xvf go1.12.2.linux-amd64.tar.gz
sudo mv go /usr/local

設置環境變量

# 修改~/.bashrc,添加如下:
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
export GO111MODULE=on

使環境變量生效

source ~/.bashrc

源碼編譯nch節點程序

# 獲取nch 源碼
git clone https://github.com/NetCloth/netcloth-chain.git
cd netcloth-chain && git checkout v1.0.2

# 設置goproxy(make install過程會下載依賴的go模塊,設置適合自己的代理,大陸用戶可以設置以下代理來加快下載速度)
export GOPROXY=https://mirrors.aliyun.com/goproxy/

# 安裝statik
sudo apt-get update
sudo apt-get install golang-statik

# 編譯安裝
make install

# 編譯完成後,檢查版本號
nchd version
nchcli version

配置節點

nchd init local-nch-1 --chain-id nch-alphanet

# 拷貝主節點genesis文件,此處從github下載
wget https://raw.githubusercontent.com/NetCloth/docs/master/alphanet/genesis.json -O  ~/.nchd/config/genesis.json
如果wget很慢或失敗請嘗試手動下載文件,地址:https://github.com/NetCloth/docs/blob/master/alphanet/genesis.json

修改配置文件:~/.nchd/config/config.toml, 添加主節點seed, 如下:
# Comma separated list of seed nodes to connect to
seeds = "[email protected]:26656"

# Comma separated list of nodes to keep persistent connections to
persistent_peers = "[email protected]:26656"

啓動節點同步區塊

# 執行下面的命令後,控制檯會打印日誌,同步區塊
nchd start --log_level "*:debug" --trace

查看節點同步狀態

# 打開一個新的終端
curl http://127.0.0.1:26657/status

# 輸出如下:
{
  "jsonrpc": "2.0",
  "id": "",
  "result": {
    "node_info": {
      "protocol_version": {
        "p2p": "7",
        "block": "10",
        "app": "0"
      },
      "id": "204d94d5a6dbf73a89101a0d084c2fb56462963a", //節點id
      "listen_addr": "tcp://0.0.0.0:26656", // 節點p2p連接監聽地址
      "network": "nch-alphanet", //chain-id
      "version": "0.32.2",
      "channels": "4020212223303800",
      "moniker": "local-nch-1", // 節點名稱
      "other": {
        "tx_index": "on",
        "rpc_address": "tcp://127.0.0.1:26657"
      }
    },
    "sync_info": {  //當前節點信息
      "latest_block_hash": "A4E5D60DE7CFB6598846A4131302C8FD28F2697DF2291B33B0892A9EACB562D8", // 最新的區塊 hash
      "latest_app_hash": "32F0B29280EDF3BEAE98424D9AA256EDBEFC973D1C33431A8D74FCA3BC3B6582",
      "latest_block_height": "1489",     // 當前節點同步到的最新區塊高度                                                      //最新區塊高度
      "latest_block_time": "2019-09-10T05:33:13.428333584Z",                                  //最新區塊時間 
      "catching_up": false
    },
    "validator_info": { // 驗證人信息
      "address": "92E0F0A50779E67A2AC25AAF6BCD1E5CF0841DFE",
      "pub_key": {
        "type": "tendermint/PubKeyEd25519",
        "value": "cGvHGxHXzOk/L5yVtxeyS9U1mGBNFszvAdYlQoQVGCw="
      },
      "voting_power": "0"
    }
  }

當節點同步到的區塊高度和區塊瀏覽器上一致時,表示節點已經同步完成,此時一個全節點就部署完成了。
至於在哪裏查看呢:explorer.netcloth.org

成爲驗證人

創建賬號

# usage: nchcli keys add <key_name>

# 示例:
nchcli keys add dan
# 按照提示輸入加密賬號用的密碼(後續執行各種交易都需要用該密碼),將命令返回的信息謹慎保存

可以得到類似

- name: dan
  type: local
  address: nch1p3fuppcxud5rjsaywuyuguh6achmj5p0r6z6ve  // 地址
  pubkey: nchpub1addwnpepqg8mfc6t9eaw9lal0c4tzma5vgmqzkgszwcgljcz3sy8rd2rukgxz9dtmph  // 公鑰
  mnemonic: "" 
  threshold: 0
  pubkeys: []

**Important** write this mnemonic phrase in a safe place.
It is the only way to recover your account if you ever forget your password.
# 下面的即助記詞
connect plug cigar purchase inflict enroll ten limb quantum never supply grid home case process claw truly grape federal liberty tree remove side quantum

的輸出,其中nch1p3fuppcxud5rjsaywuyuguh6achmj5p0r6z6ve就是我們的地址了
然後去測試網申請幣

https://docs.netcloth.org/nch/get_token?<address>

把尖括號和裏面的address替換成我們生成的錢包地址即可,這樣就可以領到幣了,然後可以用這些幣去抵押做驗證人

設置nchcli環境變量

nchcli config chain-id nch-alphanet 
nchcli config output json 
nchcli config indent true 
nchcli config trust-node true

創建驗證人

# usage: nchcli tx staking create-validator --from=<key_name> --amount=1000000unch --moniker=<your_custom_name>  --commission-rate=0.1 --identity=<identity_string>

# 示例:
nchcli tx staking create-validator \
  --amount=10000unch \
  --pubkey=$(nchd tendermint show-validator -o text) \
  --moniker="dan" \
  --commission-rate="0.10" \
  --commission-max-rate="0.20" \
  --commission-max-change-rate="0.01" \
  --min-self-delegation="100" \
  --from=$(nchcli keys show dan -a)
  
# 重點關注命令中最後一行--from=$(nchcli keys show dan -a),dan對應的賬號作爲抵押者將成爲要創建的驗證人

查詢驗證人列表

nchcli query staking validators

可以發現多了一個moniker爲dan的驗證人

[
  {
    "operator_address": "nchvaloper18q4pv9qvmqx7dcd2jq3dl3d0755urk8300709e",
    "consensus_pubkey": "nchvalconspub1zcjduepqua3tt6kl7v7sd558m24fj3s039fhmsxcv9fc49rqn0uwcuelvrmsdp3hwt",
    "jailed": false,
    "status": 0,
    "tokens": "10000",
    "delegator_shares": "10000.000000000000000000",
    "description": {
      "moniker": "dan",
      "identity": "",
      "website": "",
      "details": ""
    },
    "unbonding_height": "0",
    "unbonding_time": "1970-01-01T00:00:00Z",
    "commission": {
      "commission_rates": {
        "rate": "0.100000000000000000",
        "max_rate": "0.200000000000000000",
        "max_change_rate": "0.010000000000000000"
      },
      "update_time": "2019-10-30T11:21:01.013731989Z"
    },
    "min_self_delegation": "100",
    "self_delegation": "10000.000000000000000000"
  },
  {
    "operator_address": "nchvaloper133vmttt6n49jac5zn3z0klcpe7m8qluglfu58z",
    "consensus_pubkey": "nchvalconspub1zcjduepq3zr5cyenfyz8qprts7344nl8gclm3st669hyrhgy9gae7l8ajuus5uttte",
    "jailed": false,
    "status": 2,
    "tokens": "1000000",
    "delegator_shares": "1000000.000000000000000000",
    "description": {
      "moniker": "local-nch",
      "identity": "",
      "website": "",
      "details": ""
    },
    "unbonding_height": "0",
    "unbonding_time": "1970-01-01T00:00:00Z",
    "commission": {
      "commission_rates": {
        "rate": "0.100000000000000000",
        "max_rate": "0.200000000000000000",
        "max_change_rate": "0.100000000000000000"
      },
      "update_time": "2019-10-30T08:10:34.407927185Z"
    },
    "min_self_delegation": "1",
    "self_delegation": "1000000.000000000000000000"
  }
]

此時其狀態爲0,0表示還沒有綁定,因爲沒有抵押足夠的unch;

1000000unch爲1個voting power,voting power的最小單位爲1,只有它>=1時候才能夠變成綁定狀態2,才能成爲活躍驗證者出塊,因此至少還需要抵押990000unch

給自己抵押500000unch

nchcli tx staking delegate nchvaloper18q4pv9qvmqx7dcd2jq3dl3d0755urk8300709e 500000unch --from $(nchcli keys show dan -a)

再次確認驗證人狀態爲活躍驗證人

nchcli query staking validators

[
  {
    "operator_address": "nchvaloper18q4pv9qvmqx7dcd2jq3dl3d0755urk8300709e",
    "consensus_pubkey": "nchvalconspub1zcjduepqua3tt6kl7v7sd558m24fj3s039fhmsxcv9fc49rqn0uwcuelvrmsdp3hwt",
    "jailed": false,
    "status": 2,
    "tokens": "1000000",
    "delegator_shares": "1000000.000000000000000000",
    "description": {
      "moniker": "dan",
      "identity": "",
      "website": "",
      "details": ""
    },
    "unbonding_height": "0",
    "unbonding_time": "1970-01-01T00:00:00Z",
    "commission": {
      "commission_rates": {
        "rate": "0.100000000000000000",
        "max_rate": "0.200000000000000000",
        "max_change_rate": "0.010000000000000000"
      },
      "update_time": "2019-10-30T11:21:01.013731989Z"
    },
    "min_self_delegation": "100",
    "self_delegation": "510000.000000000000000000"
  },
  {
    "operator_address": "nchvaloper133vmttt6n49jac5zn3z0klcpe7m8qluglfu58z",
    "consensus_pubkey": "nchvalconspub1zcjduepq3zr5cyenfyz8qprts7344nl8gclm3st669hyrhgy9gae7l8ajuus5uttte",
    "jailed": false,
    "status": 2,
    "tokens": "1000000",
    "delegator_shares": "1000000.000000000000000000",
    "description": {
      "moniker": "local-nch",
      "identity": "",
      "website": "",
      "details": ""
    },
    "unbonding_height": "0",
    "unbonding_time": "1970-01-01T00:00:00Z",
    "commission": {
      "commission_rates": {
        "rate": "0.100000000000000000",
        "max_rate": "0.200000000000000000",
        "max_change_rate": "0.100000000000000000"
      },
      "update_time": "2019-10-30T08:10:34.407927185Z"
    },
    "min_self_delegation": "1",
    "self_delegation": "1000000.000000000000000000"
  }
]

# 可以看到dan對應的status變成2,此時節點成爲活躍驗證人,可通過區塊瀏覽器查看出塊情況

然後查看
explorer.netcloth.org
我們就已經成爲驗證人,可以正常出塊了!!!

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