本篇文章更新時間:2022/07/22
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
成為 LikeCoin 驗證人節點 Validator 也快半年了!(這裡跟這裡可以查看驗證人資訊)
但第一次架設就直接從 mainnet 主網下手,還意外的累積了些委託,成為 50 名上線的驗證人之一,這讓我掛記在心上的就是:如何讓節點不要被關(Jailed)以及更不要發生最嚴重的雙簽(Double Sign)事故(LikeCoin 區塊鏈術語的解釋)
於是趁這次要更新主網前,好好的用測試網路(testnet)來大玩特玩,練習如何建立過驗證人節點、恢復並重新同步節點、恢復並使用快照跟上節點等實作。
也因為玩的太多巧合,搞得測試網路還死在我手上一次... 不會有第二次了(?)Discord 宣告 testnet-4 死亡的討論串
總之這次的架設與還原驗證人節點也算是玩的頗有心得,開發團隊也把這流程簡化很多,操作起來不麻煩。唯獨就是驗證人自己也要熟悉一下!
下方為整理官方文件中架設的筆記,隨時都有可能因為版本更迭而有變動,要以官方文件為主。
內容目錄
前置準備
-
作業系統預設為 Ubuntu 20.10 Server,我使用 Linode 隨開隨用很方便。
-
對指令操作要有概念
安裝 LikeCoin 區塊鏈主程式
sudo apt update && sudo apt install make -y && cd ~ && git clone https://github.com/likecoin/likecoin-chain.git --branch release/v1.x --single-branch
我已經濃縮文件裡的操作成一行指令,貼上運行就會裝好必要的工具以及下載主程式所需要的環境。
設定主網/測試網路環境(只能擇一)
testnet 測試網路
export MONIKER='a_tech_guy'
export GENESIS_URL='https://raw.githubusercontent.com/likecoin/testnets/master/likecoin-public-testnet-5/genesis.json'
export LIKED_SEED_NODES='[email protected]:26656,[email protected]:26656'
cd ~/likecoin-chain
make -C deploy setup-node
mainnet 主網
export MONIKER='chun-test'
export GENESIS_URL='https://raw.githubusercontent.com/likecoin/mainnet/master/genesis.json'
export LIKED_SEED_NODES='[email protected]:26656,[email protected]:26656'
cd ~/likecoin-chain
make -C deploy setup-node
這邊就是一個 LikeCoin 區塊鏈起始點,基本環境參數設定好後,就會去進行部署。
設定 config 檔案
這邊要針對 LikeCoin 區塊鏈的設定來調整 config 檔案,有#
註解標示mainnet
和testnet
的部分就是看當前要上線的環境擇一註解另一組。
~/.liked/config/config.toml
[statesync]
enable = true
#mainnet
rpc_servers = "https://fotan-node-1.like.co:443/rpc/,https://fotan-node-2.like.co:443/rpc/"
#testnet
rpc_servers = "https://likecoin-public-testnet-5.oursky.dev:443/rpc/,https://likecoin-public-testnet-5-node2.oursky.dev:443/rpc/"
trust_height = 1000
#mainnet https://fotan-node-1.like.co/rpc/block?height=1000
trust_hash = "C82C72BFB1F84DAD71E96543CCD7C6907EA3ECA4E89C974A943687484CC9D874"
#testnet https://likecoin-public-testnet-5.oursky.dev/rpc/block?height=1000
trust_hash = "B65083D2043B617FBC8B34F589990B6FBB48702DD374C3CADCBDCD155CCD95E5"
trust_period = "168h0m0s"
discovery_time = "15s"
temp_dir = ""
chunk_request_timeout = "60s"
chunk_fetchers = "4"
~/.liked/config/app.toml
#mainnet
minimum-gas-prices = "1.0nanolike"
#testnet
minimum-gas-prices = "1.0nanoekil"
有趣的是,避免搞混主網與測試網路,測試網路發行的幣是 LIKE 倒過來寫 EKIL
pruning = "custom"
pruning-keep-recent = "100"
pruning-keep-every = "500"
pruning-interval = "10"
[state-sync]
snapshot-interval = 500
snapshot-keep-recent = 7
這個步驟可以搭配這篇來看: Node Configuration
設定完成後,註冊服務
cd ~/likecoin-chain
make -C deploy initialize-systemctl
這邊說的「註冊服務」是指把 liked
這個主程式註冊進作業系統裡,讓它變成常駐服務程式運作。
建立或還原操作者(Operator Key)錢包(以及準備 $LIKE / $EKIL)
建立方法
export KEY_NAME='validator' && ~/liked keys add $KEY_NAME --keyring-backend file
恢復方法
export KEY_NAME='validator' && ~/liked keys add $KEY_NAME --keyring-backend file --recover
到這一步驟開始跟「還原」有點關係。主要就是如果你已經有操作者錢包的話,這部分就是要使用還原,如果是第一次架設,就選擇建立方法囉~ KEY_NAME
是可以隨意指定的,就是之後自己要記得指定的名稱。
建立錢包使用的密碼以及畫面中出現的「註記詞」千萬別丟了,不見或是忘記也沒人能幫你了
標題說到要準備 $LIKE 或 $EKIL 就是在錢包這步驟,主網的話來源很多就不這邊提,測試網路需要的 $EKIL 可以從 Discord 的 #faucet-testnet 裡申請。
啟動/還原節點服務
還原節點的操作在這邊要注意 ~/.liked/config
預設安裝目錄下,要把原本節點
裡的 node_key.json
(Node Key)以及 priv_validator_key.json
(Consensus Key)覆蓋當前建置的節點
。
也就是說要記得備份這兩個關鍵檔案,不見了的話,節點也跟著廢了... 節點有三把很重要的金鑰檔案, 上述的 Node Key, Consensus Key 以及前面還原或建立出來的 Operator Key ,操作人的 Operator Key 還可以透過註記詞恢復,但其他兩把就無法了。 更多資訊: Technical Introduction - Key Management
如果確認好 節點金鑰們(前述三把)
與 設定組態
完成,那就可以來啟動節點服務囉!
cd ~/likecoin-chain
make -C deploy start-node
其實如果流程有錯也沒關係,就是先停掉服務,整個確認設定好後再啟動就沒問題。
可以使用指令 service liked stop
停用, service liked start
啟用。
如果要觀看運行是否正確或是有無錯誤可以使用指令: journalctl -u liked.service -f
查看執行紀錄。
也可以使用指令
~/liked tendermint unsafe-reset-all
重置節點同步檔案(不會移除三把金鑰與 genesis.json 起源檔案)
沒意外正確開始執行的話可以使用指令 curl -s localhost:26657/status
看到當前同步區塊的狀態。隔六秒請求刷新一次看看是否有在動作,沒有前進都代表有問題!
到這邊都會需要進行等待,等待區塊鏈的資料都同步到「當下」才可以使用這個節點來進行後續操作: 建立驗證人節點
主網有開發者每天進行區塊鏈資料的打包,如果要快速跟上可以到這裡下載,並參考他的說明使用,文章記錄當前,一個節點已經需要超過 112GB
空間來運作了。(補充區塊鏈快照下載點:@Rick Mak)
建立驗證人節點
由於區塊鏈就是一個區塊一個區塊的順序進行記錄,所以想成為區塊鏈上的驗證人節點也是必須要等待節點同步到當前最新後才可以來執行。
所以到這步之前有一個前提就是要先等待漫長的同步時間!
如果已經同步到最新會看到 sync_info
那邊 catching_up
為 false
值,latest_block_time
會顯示當下同步的時間。
確認後就是指令下去開始建立啦:
testnet 測試網路
~/liked tx staking create-validator \
--amount=5000000000nanoekil \
--pubkey=$(~/liked tendermint show-validator) \
--moniker=$MONIKER \
--commission-rate="0.10" \
--commission-max-rate="0.90" \
--commission-max-change-rate="0.05" \
--min-self-delegation="5000000000" \
--chain-id="likecoin-public-testnet-5" \
--from=$KEY_NAME \
--keyring-backend=file \
--gas-prices 10nanoekil
mainnet 主網
~/liked tx staking create-validator --amount=5000000000nanolike --pubkey=$(~/liked tendermint show-validator) --moniker=$MONIKER --commission-rate="0.10" --commission-max-rate="0.95" --commission-max-change-rate="0.05" --min-self-delegation="5000000000" --chain-id="likecoin-mainnet-2" --from=$KEY_NAME --keyring-backend=file --fees 200000nanolike
驗證當前驗證人節點是否有上線: ~/liked query tendermint-validator-set | grep "$(~/liked tendermint show-address)"
驗證節點常使用指令
到這步驟如果都沒問題,那就是開始一些日常操作了。
編輯驗證人資訊
~/liked tx staking edit-validator \
--moniker="New Name" \
--website="https://example.com" \
--details="Description of my validator" \
--commission-rate="0.05" \
--chain-id="likecoin-mainnet-2" \
--from=$KEY_NAME \
--keyring-backend=file \
--gas-prices 10nanolike
投票
~/liked tx gov vote 議案編號 yes \
--chain-id='likecoin-mainnet-2' \
--from=$KEY_NAME \
--keyring-backend=file
解除被關 Unjail 的狀態
~/liked tx slashing unjail \
--chain-id='likecoin-mainnet-2' \
--from=$KEY_NAME \
--keyring-backend=file
上述 chian-id
如果是測試網路的話要替換過,參數框架使用還是要依照當前執行的環境來決定,直接貼不是一個好辦法XD
更多操作指令可以參考驗證人 Johnshao 的筆記。
後記
這裡面還有很多小細節,比方說 $LIKE 是 1 $LIKE 我們所知常見的單位,但對運行在 Cosmos 宇宙的 LikeCoin 區塊鏈來說,單位主要是看 nanolike
,也就是 1 $LIKE 其實是 1,000,000,000
個 nanolike
這個更小的單位。
最保險的備份主要是 ~/.liked/config
以及 ~/.liked/keyring-file
這兩個資料夾,當然自己設定的操作密碼也不能忘,剩下同步節點的資料都還可以慢慢抓回來就不用擔心了!