一、项目信息
Web:quicksilver.zone
Twitter:quicksilverzone
Discord:discord.gg
二、硬件要求
与任何 Cosmos-SDK 链一样,硬件要求非常适中。
- 4 个 CPU;时钟速度越快越好
- 8GB 内存
- 40GB 磁盘(我们使用 statesync,所以磁盘要求很低)
- 永久的 Internet 连接(在测试网期间流量将最小化;10Mbps 就足够了 - 对于生产,预计至少 100Mbps)
三、操作系统(建议)
- Ubuntu 20.04(server版本)
- 云服务器参考(商家已重新补货)
- 云服务器使用参考之前的教程
- 2G2核80G3T/月$26/年
- 3G2核110G4T/月$33/年
- 4G4核180G5T/月$47.8/年
- 8G4核280G7T/月$89.6/年
- 16G8核570G16T/月$171/年
四、手动部署步骤
4.1-更新系统并安装必要的组件
sudo apt update && sudo apt upgrade --yes sudo apt install make clang pkg-config libssl-dev build-essential git jq ncdu bsdmainutils -y < "/dev/null"
4.2-安装golang
cd $HOME wget -O go1.18.1.linux-amd64.tar.gz https://golang.org/dl/go1.18.1.linux-amd64.tar.gz rm -rf /usr/local/go && tar -C /usr/local -xzf go1.18.1.linux-amd64.tar.gz && rm go1.18.1.linux-amd64.tar.gz echo 'export GOROOT=/usr/local/go' >> $HOME/.bash_profile echo 'export GOPATH=$HOME/go' >> $HOME/.bash_profile echo 'export GO111MODULE=on' >> $HOME/.bash_profile echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> $HOME/.bash_profile && . $HOME/.bash_profile go version
4.3-构建Quicksilver
git clone https://github.com/ingenuity-build/quicksilver.git --branch v0.1.10 cd quicksilver make build chmod +x ./build/quicksilverd && mv ./build/quicksilverd /usr/local/bin/quicksilverd
4.4-设置验证器配置
记得将$NODENAME替换为自己的节点名字
cd $HOME quicksilverd init $NODENAME --chain-id=quicktest-3 quicksilverd config chain-id quicktest-3 quicksilverd config broadcast-mode block wget -qO $HOME/.quicksilverd/config/genesis.json "https://raw.githubusercontent.com/ingenuity-build/testnets/main/rhapsody/genesis.json" quicksilverd unsafe-reset-all
4.5-修改seeds和persistent_peers配置
SEEDS="dd3460ec11f78b4a7c4336f22a356fe00805ab64@seed.quicktest-1.quicksilver.zone:26656" sed -i -e "/seeds =/ s/= .*/= \"$SEEDS\"/" $HOME/.quicksilverd/config/config.toml PEERS="8a6c7775df2a891133b994607b93eb92a4a00e2d@95.216.161.177:26656,f9a35b54f3e9e195ed109ac2ca29814b2deddcf9@164.92.212.102:26656,2b739b09350220485b7ecefd5b784307b3127f68@88.198.242.163:26656,259cd5234c4db46de71942ce21890bf25056ad27@65.21.1.224:26656,259cd5234c4db46de71942ce21890bf25056ad27@65.21.1.224:26656,2b739b09350220485b7ecefd5b784307b3127f68@88.198.242.163:26656,f9a35b54f3e9e195ed109ac2ca29814b2deddcf9@164.92.212.102:26656,3938a7bdaae1da2f88a5c0195534052b35e61bcf@49.12.74.226:26656,cf8dbe09fca0cba81ed3b3b46243fabd5c29c164@65.21.143.79:20556" sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.quicksilverd/config/config.toml
4.6-配置pruning
pruning="custom" pruning_keep_recent="100" pruning_keep_every="0" pruning_interval="10" sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.quicksilverd/config/app.toml sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.quicksilverd/config/app.toml sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.quicksilverd/config/app.toml sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.quicksilverd/config/app.toml
4.7-修改addrbook
rm $HOME/.quicksilverd/config/addrbook.json wget -q -O $HOME/.quicksilverd/config/addrbook.json https://raw.githubusercontent.com/sourled/addrbook/main/addrbook.json
4.8-修改同步方式
SNAP_RPC1="http://node02.quicktest-1.quicksilver.zone:26657" \ && SNAP_RPC2="http://node04.quicktest-1.quicksilver.zone:26657" LATEST_HEIGHT=$(curl -s $SNAP_RPC2/block | jq -r .result.block.header.height) \ && BLOCK_HEIGHT=$((LATEST_HEIGHT - 2000)) \ && TRUST_HASH=$(curl -s "$SNAP_RPC2/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash) sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \ s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$SNAP_RPC1,$SNAP_RPC2\"| ; \ s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \ s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.quicksilverd/config/config.toml
4.9-将quicksilverd安装为服务
sudo tee /etc/systemd/system/quicksilverd.service > /dev/null <<EOF [Unit] Description=Quicksilver After=network.target [Service] Type=simple User=$USER ExecStart=$(which quicksilverd) start Restart=on-failure RestartSec=10 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF
4.10-重载并启动quicksilverd
sudo systemctl daemon-reload sudo systemctl enable quicksilverd sudo systemctl start quicksilverd
4.10-查看同步日志
journalctl -u quicksilverd -f
到此节点同步设置就完成了,观察下日志看同步是否有错。
4.11-查看同步是否完成
quicksilverd status 2>&1 | jq .SyncInfo
运行上面的命令后如果输出的是下面的内容就代表同步完成。主要看“catching_up”字段false代表同步完成,true代表正在同步。
root@quicks:~# quicksilverd status 2>&1 | jq .SyncInfo { "latest_block_hash": "5C6995D73B7DE49DB95D009B2564DA33ECC18B3AAA7800A9A431057D9B53B45C", "latest_app_hash": "08DB2173469F11E5EF7CB0C00C68A9062117E98721CCBF35D0FDB57A9FD2035E", "latest_block_height": "107746", "latest_block_time": "2022-05-10T02:56:55.681790966Z", "earliest_block_hash": "3800851F8170E3570DCFC7A0E56E72DA12FB2625B401CA74AEB1A3E6B5BADB15", "earliest_app_hash": "EA7027069F3E40904A53C0BC6A2BF1EE54FF70E93D84C74DD62D6940387A85EB", "earliest_block_height": "100501", "earliest_block_time": "2022-05-09T14:28:04.60522285Z", "catching_up": false }
4.12-创建QCK钱包并领水
将**$walletName替换为自己想要的名字(不要直接复制运行)**
quicksilverd keys add $walletName
输入两次密码,钱包创建完成后会直接显示钱包地址还有助记词,记得保存下来。
到Discord中#qck-tap频道发送下面的指令领取uqck测试币**(将钱包地址替换为自己的)**
$request quick1fssluasvna560a7djm3rzeht7k7x66w4j6yu8h rhapsody
#atom-tap频道发送下面的指令领取uatom测试币**(直接用主网的钱包地址就可以的)**
$request cosmos1eu2szhmms0dc07ufe5z7926eqhaksw8r32umhe rhapsody
4.13-创建验证器(这一步必须要在同步完成,并且钱包有余额的情况下才可以操作)
将**$walletName**修改为自己的钱包名字或者钱包地址
将**$monikername**修改为自己设置的节点名字
quicksilverd tx staking create-validator \ --from=$walletName \ --amount=4900000uqck \ --moniker=$monikername \ --chain-id=quicktest-3 \ --commission-rate=0.1 \ --commission-max-rate=0.5 \ --commission-max-change-rate=0.1 \ --min-self-delegation=1 \ --fees=200uqck \ --pubkey=$(quicksilverd tendermint show-validator)
完成之后可以到区块链浏览器中查看运行的情况
五、可能有用的命令
5.1-检查日志
journalctl -fu quicksilverd -o cat
5.2-启动服务
systemctl start quicksilverd
5.3-停止服务
systemctl stop quicksilverd
5.4-重启服务
systemctl restart quicksilverd
5.5-节点同步状态
quicksilverd status 2>&1 | jq .SyncInfo
更多命令请查看官方文档。
到此教程完结,有不懂的可以到官方Dis社区提问。