Запуск валидатора Kichain в mainnet
Гайд по запуску валидатора в майнете на примере Kichain network.
Установим необходимые пакеты на сервер:
sudo apt install wget chrony git build-essential make jq mc curl -y
Откройте необходимые tcp порты в firewall 26656.
cd $HOME ver="1.18.5" wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" sudo rm -rf /usr/local/go sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" rm "go$ver.linux-amd64.tar.gz" echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile source $HOME/.bash_profile go version
Установим бинарник ki network, на момент написания актуальный Mainnet-3.0.0:
rm -rf $HOME/ki-tools git clone https://github.com/KiFoundation/ki-tools.git cd ki-tools git checkout -b v3.0.0 tags/3.0.0 make install kid version
Создадим переменные для удобства:
MONIKER=ваш моникер WALLET=кошелек CHAIN=kichain-2 echo "export MONIKER="${MONIKER}"" >> $HOME/.bash_profile echo "export WALLET="${WALLET}"" >> $HOME/.bash_profile echo "export CHAIN="${CHAIN}"" >> $HOME/.bash_profile source $HOME/.bash_profile
cd kid init $MONIKER --chain-id $CHAIN --home $HOME/.kid/ kid tendermint unsafe-reset-all --home $HOME/.kid
curl https://github.com/KiFoundation/ki-networks/blob/v0.1/Mainnet/kichain-2/genesis.json?raw=true > $HOME/.kid/config/genesis.json
Создадим или восстановим кошелек (для восстановления добавьте флаг --recover):
kid keys add $WALLET --keyring-backend file
Измените seeds, peers на актуальные:
seeds="[email protected]:26656" peers="[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656"
А теперь замените значения конфигурации автовставкой:
sed -i.bak -e "s/^seeds *=.*/seeds = \"$seeds\"/; s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" ~/.kid/config/config.toml
external_address=`curl ifconfig.me` sed -i.bak -e "s/^external_address = \"\"/external_address = \"$external_address:26656\"/" $HOME/.kid/config/config.toml
Настроим прунинг для экономии места (я взял настройки для снапшота полькачу) и gas:
pruning="custom" && \ pruning_keep_recent="100" && \ pruning_keep_every="0" && \ pruning_interval="10" && \ indexer="null" && \ minimum_gas_prices="0.025uxki" && \ sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.kid/config/app.toml && \ sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.kid/config/app.toml && \ sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.kid/config/app.toml && \ sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.kid/config/app.toml sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"$minimum_gas_prices\"/" $HOME/.kid/config/app.toml sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/.kid/config/config.toml
sudo tee /etc/systemd/system/kichaind.service > /dev/null <<EOF [Unit] Description=KiChain Node After=network-online.target [Service] User=$USER ExecStart=`which kid` start Restart=always RestartSec=3 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF
sudo systemctl daemon-reload sudo systemctl enable kichaind
Стартуем со снапшота
sudo apt install snapd -y sudo snap install lz4
systemctl stop kichaind kid tendermint unsafe-reset-all --home $HOME/.kid rm -r ~/.kid/wasm
А теперь загружаем снапшот от команды polkachu и стартуем (вам нужно обновить ссылку на последний актуальный снапшот самостоятельно):
wget -O kichain_11412789.tar.lz4 https://snapshots1.polkachu.com/snapshots/kichain/kichain_11412789.tar.lz4 lz4 -c -d kichain_*.tar.lz4 | tar -x -C $HOME/.kid rm -v kichain_*.tar.lz4 systemctl restart kichaind sudo journalctl -u kichaind -f
Дождитесь полной синхронизации узла ("catching_up": false):
curl localhost:26657/status
А теперь можно создать валидатора:
kid tx staking create-validator \ --commission-max-change-rate=0.1 \ --commission-max-rate=0.1 \ --commission-rate=0.1 \ --min-self-delegation=1 \ --amount=1000000uxki \ --pubkey `kid tendermint show-validator --home $HOME/.kid/` \ --moniker=$MONIKER \ --chain-id=$CHAIN \ --gas-prices=0.025uxki \ --from=$WALLET \ --home $HOME/.kid/
Миграция ноды Kichain на Cosmovisor
go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/[email protected]
Создадим каталоги и скопируем текущий бинарник:
mkdir -p $HOME/.kid/cosmovisor/genesis/bin $HOME/.kid/cosmovisor/upgrades cp $(which kid) $HOME/.kid/cosmovisor/genesis/bin/
sudo systemctl stop kichaind
Бэкапим старый сервисник, чтобы быстро откатиться, в случае неудачи.
cp /etc/systemd/system/kichaind.service /home
Создаем новую службу (я отключил автобэкапы и автоматическую загрузку бинарников):
sudo tee /etc/systemd/system/kichaind.service > /dev/null <<EOF [Unit] Description=Kichain node After=network.target [Service] User=$USER Environment="DAEMON_NAME=kid" Environment="DAEMON_HOME=$HOME/.kid" Environment="DAEMON_RESTART_AFTER_UPGRADE=true" Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false" Environment="UNSAFE_SKIP_BACKUP=true" ExecStart=$(which cosmovisor) start Restart=on-failure RestartSec=3 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF
sudo systemctl daemon-reload sudo systemctl enable kichaind sudo systemctl restart kichaind journalctl -f -u kichaind
Если не поехало, подкиньте космовизору бинарник:
mkdir -p $HOME/.kid/cosmovisor/upgrades/v3/bin/ wget -qO $HOME/.kid/cosmovisor/upgrades/v3/bin/kid https://github.com/KiFoundation/ki-tools/releases/download/3.0.0/kid-mainnet-3.0.0-linux-amd64 chmod +x $HOME/.kid/cosmovisor/upgrades/v3/bin/kid
Полезные команды
kid query bank balances адрес_кошелька
Отправка коинов на другой кошелек:
kid tx bank send $WALLET ADDRESS_TO 1000000uxki
kid keys show $WALLET --bech val
kid tx staking delegate kivaloper_адрес_валидатора 1000000uxki --chain-id $CHAIN --from $WALLET --fees 5000uxki
kid query distribution commission kivaloper_адрес_валидатора
kid tx distribution withdraw-rewards kivaloper_адрес_валидатора --from адрес_кошелька --chain-id $CHAIN --fees=5000uxki --commission
kid tx slashing unjail --from $WALLET --chain-id=$CHAIN --gas=auto --fees=5000uxki
@starnodes_ru - наш канал в Telegram с новостями и гайдами по тестнетам.