Cosmos-- 二.Gaia -- 11.部署你自己的測(cè)試網(wǎng)

cosmos主網(wǎng)即將上線,對(duì)文檔做了大量更新。特地翻譯了一下,方便小伙伴們閱覽, 之后會(huì)持續(xù)更新

第二章Gaia:

  1. Gaia是什么
  2. 安裝Gaia
  3. 加入公共測(cè)試網(wǎng)
  4. 在測(cè)試網(wǎng)中運(yùn)行一個(gè)驗(yàn)證人
  5. 驗(yàn)證人概覽
  6. 驗(yàn)證人安全
  7. 驗(yàn)證人相關(guān)問題
  8. 委托人指南(命令行操作)
  9. Ledger Nano支持
  10. Gaia客戶端
  11. 部署你自己的測(cè)試網(wǎng)

部署你自己的測(cè)試網(wǎng)

這篇文章介紹了三種創(chuàng)建gaiad節(jié)點(diǎn)的測(cè)試網(wǎng)的方式,每種針對(duì)不同的使用場(chǎng)景:

  1. 單節(jié)點(diǎn),本地的,手動(dòng)的測(cè)試網(wǎng)
  2. 多節(jié)點(diǎn),本地的,自動(dòng)的測(cè)試網(wǎng)
  3. 多節(jié)點(diǎn),遠(yuǎn)程的,自動(dòng)的測(cè)試網(wǎng)

支持代碼可以在networks目錄中找到,還可以在localremote子目錄中找到。

注意:remote網(wǎng)絡(luò)引導(dǎo)教程可能與最新版本不同步,不可完全依賴。

單節(jié)點(diǎn),本地的,手動(dòng)的測(cè)試網(wǎng)

本教程可幫助你創(chuàng)建一個(gè)在本地運(yùn)行網(wǎng)絡(luò)的驗(yàn)證人節(jié)點(diǎn),以進(jìn)行測(cè)試和其他相關(guān)的用途。

需要

  • 安裝gaia
  • 安裝 jq(可選的)

創(chuàng)建genesis文件并啟動(dòng)網(wǎng)絡(luò)

# You can run all of these commands from your home directory
cd $HOME

# Initialize the genesis.json file that will help you to bootstrap the network
gaiad init --chain-id=testing testing

# Create a key to hold your validator account
gaiacli keys add validator

# Add that key into the genesis.app_state.accounts array in the genesis file
# NOTE: this command lets you set the number of coins. Make sure this account has some coins
# with the genesis.app_state.staking.params.bond_denom denom, the default is staking
gaiad add-genesis-account $(gaiacli keys show validator -a) 1000stake,1000validatortoken

# Generate the transaction that creates your validator
gaiad gentx --name validator

# Add the generated bonding transaction to the genesis file
gaiad collect-gentxs

# Now its safe to start `gaiad`
gaiad start

啟動(dòng)將會(huì)把gaiad相關(guān)的所有數(shù)據(jù)放在~/.gaiad目錄。你可以檢查所創(chuàng)建的genesis文件——~/.gaiad/config/genesis.json。同時(shí)gaiacli也已經(jīng)配置完成并且有了一個(gè)擁有token的賬戶(stake和自定義的代幣)。

多節(jié)點(diǎn),本地的,自動(dòng)的測(cè)試網(wǎng)

networks/local目錄中運(yùn)行如下命令:

需要

編譯

編譯gaiad二進(jìn)制文件(linux)和運(yùn)行localnet命令所需的tendermint/gaianode docker images。這個(gè)二進(jìn)制文件將被安裝到container中,并且可以更新重建image,因此您只需要構(gòu)建一次image。

# Work from the SDK repo
cd $GOPATH/src/github.com/cosmos/cosmos-sdk

# Build the linux binary in ./build
make build-linux

# Build tendermint/gaiadnode image
make build-docker-gaiadnode

運(yùn)行你的測(cè)試網(wǎng)

運(yùn)行一個(gè)擁有4個(gè)節(jié)點(diǎn)的測(cè)試網(wǎng)絡(luò):

make localnet-start

此命令使用gaiadnode image創(chuàng)建了一個(gè)4節(jié)點(diǎn)網(wǎng)絡(luò)。每個(gè)節(jié)點(diǎn)的端口可以在下表中找到:

Node ID P2P Port RPC Port
gaianode0 26656 26657
gaianode1 26659 26660
gaianode2 26661 26662
gaianode3 26663 26664

更新二進(jìn)制文件,只需要重新編譯并重啟節(jié)點(diǎn):

make build-linux localnet-start

配置

make localnet-start命令通過調(diào)用gaiad testnet命令在./build中創(chuàng)建了一個(gè)4節(jié)點(diǎn)測(cè)試網(wǎng)絡(luò)的文件。輸出./build目錄下一些文件:

$ tree -L 2 build/
build/
├── gaiacli
├── gaiad
├── gentxs
│   ├── node0.json
│   ├── node1.json
│   ├── node2.json
│   └── node3.json
├── node0
│   ├── gaiacli
│   │   ├── key_seed.json
│   │   └── keys
│   └── gaiad
│       ├── ${LOG:-gaiad.log}
│       ├── config
│       └── data
├── node1
│   ├── gaiacli
│   │   └── key_seed.json
│   └── gaiad
│       ├── ${LOG:-gaiad.log}
│       ├── config
│       └── data
├── node2
│   ├── gaiacli
│   │   └── key_seed.json
│   └── gaiad
│       ├── ${LOG:-gaiad.log}
│       ├── config
│       └── data
└── node3
    ├── gaiacli
    │   └── key_seed.json
    └── gaiad
        ├── ${LOG:-gaiad.log}
        ├── config
        └── data

每個(gè)./build/nodeN目錄被掛載到對(duì)應(yīng)container的/gaiad目錄。

日志輸出

日志被保存在每個(gè)./build/nodeN/gaiad/gaia.log文件中。你也可以直接通過Docker來查看日志:

docker logs -f gaiadnode0

密鑰&賬戶

你需要使用指定節(jié)點(diǎn)的gaiacli目錄作為你的home來同gaiacli交互,并執(zhí)行查詢或者創(chuàng)建交易:

gaiacli keys list --home ./build/node0/gaiacli

現(xiàn)在賬戶已經(jīng)存在了,你可以創(chuàng)建新的賬戶并向其發(fā)送資金!

提示

注意:每個(gè)節(jié)點(diǎn)的密鑰種子放在./build/nodeN/gaiacli/key_seed.json中,可以通過gaiacli keys add --restore命令來回復(fù)。

特殊的二進(jìn)制文件

如果你具有多個(gè)不同名稱的二進(jìn)制文件,則可以使用BINARY環(huán)境變量指定要運(yùn)行的二進(jìn)制文件。二進(jìn)制文件的路徑是相對(duì)于掛載的卷。例如:

# Run with custom binary
BINARY=gaiafoo make localnet-start

多節(jié)點(diǎn),遠(yuǎn)程的,自動(dòng)的測(cè)試網(wǎng)

應(yīng)該從networks目錄運(yùn)行下面的命令。

Terraform & Ansible

使用Terraform在AWS上創(chuàng)建服務(wù)器然后用Ansible創(chuàng)建并管理這些服務(wù)器上的測(cè)試網(wǎng)來完成自動(dòng)部署。

前提

  • 在一臺(tái)Linux機(jī)器上安裝TerraformAnsible
  • 創(chuàng)建一個(gè)具有EC2實(shí)例創(chuàng)建能力的ASW API token
  • 創(chuàng)建SSH密鑰
export AWS_ACCESS_KEY_ID="2345234jk2lh4234"
export AWS_SECRET_ACCESS_KEY="234jhkg234h52kh4g5khg34"
export TESTNET_NAME="remotenet"
export CLUSTER_NAME= "remotenetvalidators"
export SSH_PRIVATE_FILE="$HOME/.ssh/id_rsa"
export SSH_PUBLIC_FILE="$HOME/.ssh/id_rsa.pub"

創(chuàng)建一個(gè)遠(yuǎn)程網(wǎng)絡(luò)

SERVERS=1 REGION_LIMIT=1 make validators-start

測(cè)試網(wǎng)絡(luò)的名稱將由--chain-id定義,集群的名稱則是AWS中服務(wù)器管理標(biāo)識(shí)。該代碼將在每個(gè)可用區(qū)中創(chuàng)建服務(wù)器數(shù)量的服務(wù)器,最多為REGION_LIMIT,從us-east-2開始。(us-east-1被排除在外)下面的BaSH腳本也是如此,但更便于輸入。

./new-testnet.sh "$TESTNET_NAME" "$CLUSTER_NAME" 1 1

快速查詢狀態(tài)入口

make validators-status

刪除服務(wù)器

make validators-stop

日志輸出

你可以將日志發(fā)送到Logz.io,一個(gè)Elastic棧(Elastic搜索,Logstash和Kibana)服務(wù)提供商。你可以將節(jié)點(diǎn)設(shè)置為自動(dòng)登錄。創(chuàng)建一個(gè)帳戶并從此頁(yè)面上的說明中獲取你的API密鑰,然后:

yum install systemd-devel || echo "This will only work on RHEL-based systems."
apt-get install libsystemd-dev || echo "This will only work on Debian-based systems."

go get github.com/mheese/journalbeat
ansible-playbook -i inventory/digital_ocean.py -l remotenet logzio.yml -e LOGZIO_TOKEN=ABCDEFGHIJKLMNOPQRSTUVWXYZ012345

監(jiān)控

你可以安裝DataDog代理:

make datadog-install
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容