Stride setup
Validator setup instructions
https://stride.explorers.guru
Хардваре (официальные)
Минимум
- 4x CPUs; the faster clock speed the better
- 8GB RAM
- 100GB of storage (SSD or NVME)
- Permanent Internet connection (traffic will be minimal during testnet; 10Mbps will be plenty - for production at least 100Mbps is expected)
Рекомендовано
- 4x CPUs; the faster clock speed the better
- 32GB RAM
- 200GB of storage (SSD or NVME)
- Permanent Internet connection (traffic will be minimal during testnet; 10Mbps will be plenty - for production at least 100Mbps is expected)
Ставим ноду с ноля | перейти к апдейту 4
NODENAME=<ПОМЕНЯЙ НА СВОЕ>
STRIDE_PORT=16
echo "export NODENAME=$NODENAME" >> $HOME/.bash_profile
if [ ! $WALLET ]; then
echo "export WALLET=wallet" >> $HOME/.bash_profile
fi
echo "export STRIDE_CHAIN_ID=STRIDE-TESTNET-4" >> $HOME/.bash_profile
echo "export STRIDE_PORT=${STRIDE_PORT}" >> $HOME/.bash_profile
source $HOME/.bash_profile
sudo apt update && sudo apt upgrade -y
sudo apt install curl build-essential git wget jq make gcc tmux chrony -y
if ! [ -x "$(command -v go)" ]; then ver="1.18.2" cd $HOME 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" >> ~/.bash_profile source ~/.bash_profile fi
cd $HOME git clone https://github.com/Stride-Labs/stride.git cd stride git checkout cf4e7f2d4ffe2002997428dbb1c530614b85df1b make build sudo cp $HOME/stride/build/strided /usr/local/bin
strided config chain-id $STRIDE_CHAIN_ID
strided config keyring-backend test
strided config node tcp://localhost:${STRIDE_PORT}657
strided init $NODENAME --chain-id $STRIDE_CHAIN_ID
wget -qO $HOME/.stride/config/genesis.json "https://raw.githubusercontent.com/Stride-Labs/testnet/main/poolparty/genesis.json"
SEEDS="d2ec8f968e7977311965c1dbef21647369327a29@seedv2.poolparty.stridenet.co:26656" PEERS="2771ec2eeac9224058d8075b21ad045711fe0ef0@34.135.129.186:26656,a3afae256ad780f873f85a0c377da5c8e9c28cb2@54.219.207.30:26656,328d459d21f82c759dda88b97ad56835c949d433@78.47.222.208:26639,bf57701e5e8a19c40a5135405d6757e5f0f9e6a3@143.244.186.222:16656,f93ce5616f45d6c20d061302519a5c2420e3475d@135.125.5.31:54356" sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.stride/config/config.toml
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${STRIDE_PORT}658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${STRIDE_PORT}657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${STRIDE_PORT}060\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${STRIDE_PORT}656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${STRIDE_PORT}660\"%" $HOME/.stride/config/config.toml
sed -i.bak -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${STRIDE_PORT}317\"%; s%^address = \":8080\"%address = \":${STRIDE_PORT}080\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${STRIDE_PORT}090\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${STRIDE_PORT}091\"%" $HOME/.stride/config/app.toml
pruning="custom" pruning_keep_recent="100" pruning_keep_every="0" pruning_interval="50" sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.stride/config/app.toml sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.stride/config/app.toml sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.stride/config/app.toml sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.stride/config/app.toml
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0ustrd\"/" $HOME/.stride/config/app.toml
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.stride/config/config.toml
strided tendermint unsafe-reset-all --home $HOME/.stride
sudo tee /etc/systemd/system/strided.service > /dev/null <<EOF [Unit] Description=stride After=network-online.target [Service] User=$USER ExecStart=$(which strided) start --home $HOME/.stride Restart=on-failure RestartSec=3 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF
sudo systemctl daemon-reload sudo systemctl enable strided sudo systemctl restart strided && sudo journalctl -u strided -f -o cat
Что дальше
Загружаем переменные в систему
source $HOME/.bash_profile
Дожидаемся конца синхронизации. Ответом на следующую команду должно быть false
strided status 2>&1 | jq .SyncInfo
Создаем кошелек
strided keys add $WALLET
strided keys add $WALLET --recover
Посмотреть кошельки можно командой
strided keys list
Закидываем данные кошелька в переменные
STRIDE_WALLET_ADDRESS=$(strided keys show $WALLET -a)
STRIDE_VALOPER_ADDRESS=$(strided keys show $WALLET --bech val -a)
echo 'export STRIDE_WALLET_ADDRESS='${STRIDE_WALLET_ADDRESS} >> $HOME/.bash_profile
echo 'export STRIDE_VALOPER_ADDRESS='${STRIDE_VALOPER_ADDRESS} >> $HOME/.bash_profile
source $HOME/.bash_profile
Идем в дискорд и просим токены в разделе: #token-faucet
$faucet-stride:<STRIDE_WALLET_ADDRESS>
Создаем валидатора
На балансе у вас должно быть минимум 1 strd (1 strd это 1000000 ustrd)
Баланс можно проверить командой:
strided query bank balances $STRIDE_WALLET_ADDRESS
Если баланс не показывается - скорее всего нода не синхронизирована
strided tx staking create-validator \ --amount 10000000ustrd \ --from $WALLET \ --commission-max-change-rate "0.01" \ --commission-max-rate "0.2" \ --commission-rate "0.07" \ --min-self-delegation "1" \ --pubkey $(strided tendermint show-validator) \ --moniker $NODENAME \ --chain-id $STRIDE_CHAIN_ID
Операции с ликвидностью
Добавить ликвид ATOM в стейк (получим stATOM)
strided tx stakeibc liquid-stake 1000 uatom --from $WALLET --chain-id $STRIDE_CHAIN_ID
На данный момент анбандинг 30 минут
strided tx stakeibc redeem-stake 1000 GAIA <COSMOS_ADDRESS_YOU_WANT_TO_REDEEM_TO> --chain-id $STRIDE_CHAIN_ID --from $WALLET
Проверить есть ли токены для клейма можно так
strided q records list-user-redemption-record --limit 10000 --output json | jq --arg WALLET_ADDRESS "$STRIDE_WALLET_ADDRESS" '.UserRedemptionRecord | map(select(.sender == $WALLET_ADDRESS))'
isClaimable=true показывает что есть токены для клейма
wget -qO claim.sh https://raw.githubusercontent.com/kj89/testnet_manuals/main/stride/tools/claim.sh && chmod +x claim.sh ./claim.sh $STRIDE_WALLET_ADDRESS
Посмотреть валидатор кей можно так:
[[ $(strided q staking validator $STRIDE_VALOPER_ADDRESS -oj | jq -r .consensus_pubkey.key) = $(strided status | jq -r .ValidatorInfo.PubKey.value) ]] && echo -e "\n\e[1m\e[32mTrue\e[0m\n" || echo -e "\n\e[1m\e[31mFalse\e[0m\n"
strided q staking validators -oj --limit=3000 | jq '.validators[] | select(.status=="BOND_STATUS_BONDED")' | jq -r '(.tokens|tonumber/pow(10; 6)|floor|tostring) + " \t " + .description.moniker' | sort -gr | nl
Полезные команды
journalctl -fu strided -o cat
sudo systemctl start strided
sudo systemctl stop strided
sudo systemctl restart strided
Инфа по ноде
strided status 2>&1 | jq .SyncInfo
strided status 2>&1 | jq .ValidatorInfo
strided status 2>&1 | jq .NodeInfo
strided tendermint show-node-id
Операции с кошельком
strided keys list
strided keys add $WALLET --recover
strided keys delete $WALLET
strided query bank balances $STRIDE_WALLET_ADDRESS
strided tx bank send $STRIDE_WALLET_ADDRESS <TO_STRIDE_WALLET_ADDRESS> 10000000ustrd
Голосование
strided tx gov vote 1 yes --from $WALLET --chain-id=$STRIDE_CHAIN_ID
Стейкинг, делегирование, клайм
strided tx staking delegate $STRIDE_VALOPER_ADDRESS 10000000ustrd --from=$WALLET --chain-id=$STRIDE_CHAIN_ID --gas=auto
Переделигировать с одного валидатора на другого
strided tx staking redelegate <srcValidatorAddress> <destValidatorAddress> 10000000ustrd --from=$WALLET --chain-id=$STRIDE_CHAIN_ID --gas=auto
strided tx distribution withdraw-all-rewards --from=$WALLET --chain-id=$STRIDE_CHAIN_ID --gas=auto
Заклаймить все реварды с комиссией
strided tx distribution withdraw-rewards $STRIDE_VALOPER_ADDRESS --from=$WALLET --commission --chain-id=$STRIDE_CHAIN_ID
Управление валидатором
strided tx staking edit-validator \ --moniker=$NODENAME \ --identity=<your_keybase_id> \ --website="<your_website>" \ --details="<your_validator_description>" \ --chain-id=$STRIDE_CHAIN_ID \ --from=$WALLET
strided tx slashing unjail \ --broadcast-mode=block \ --from=$WALLET \ --chain-id=$STRIDE_CHAIN_ID \ --gas=auto
Удалить все
sudo systemctl stop strided sudo systemctl disable strided sudo rm /etc/systemd/system/stride* -rf sudo rm $(which strided) -rf sudo rm $HOME/.stride* -rf sudo rm $HOME/stride -rf sed -i '/STRIDE_/d' ~/.bash_profile
Pruning for state sync node
pruning="custom" pruning_keep_recent="100" pruning_keep_every="2000" pruning_interval="50" snapshot_interval="2000" snapshot_keep_recent="5" sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.stride/config/app.toml sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.stride/config/app.toml sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.stride/config/app.toml sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.stride/config/app.toml sed -i -e "s/^snapshot-interval *=.*/snapshot-interval = \"$snapshot_interval\"/" $HOME/.stride/config/app.toml sed -i -e "s/^snapshot-keep-recent *=.*/snapshot-keep-recent = \"$snapshot_keep_recent\"/" $HOME/.stride/config/app.toml
Upgrade STRIDE-TESTNET-4
Скачиваим и билдим новые бинарники
sudo systemctl stop strided cd $HOME && rm -rf stride git clone https://github.com/Stride-Labs/stride.git cd stride git checkout cf4e7f2d4ffe2002997428dbb1c530614b85df1b make build sudo cp $HOME/stride/build/strided /usr/local/bin
wget -qO $HOME/.stride/config/genesis.json "https://raw.githubusercontent.com/Stride-Labs/testnet/main/poolparty/genesis.json"
SEEDS="d2ec8f968e7977311965c1dbef21647369327a29@seedv2.poolparty.stridenet.co:26656" PEERS="2771ec2eeac9224058d8075b21ad045711fe0ef0@34.135.129.186:26656,a3afae256ad780f873f85a0c377da5c8e9c28cb2@54.219.207.30:26656,328d459d21f82c759dda88b97ad56835c949d433@78.47.222.208:26639,bf57701e5e8a19c40a5135405d6757e5f0f9e6a3@143.244.186.222:16656,f93ce5616f45d6c20d061302519a5c2420e3475d@135.125.5.31:54356" sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.stride/config/config.toml
sed -i '/STRIDE_CHAIN_ID/d' ~/.bash_profile echo "export STRIDE_CHAIN_ID=STRIDE-TESTNET-4" >> $HOME/.bash_profile source $HOME/.bash_profile strided config chain-id $STRIDE_CHAIN_ID
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1false|" $HOME/.stride/config/config.toml strided tendermint unsafe-reset-all --home $HOME/.stride
sudo systemctl start strided && journalctl -fu strided -o cat
strided query bank balances $STRIDE_WALLET_ADDRESS
strided tx staking create-validator \ --amount 10000000ustrd \ --from $WALLET \ --commission-max-change-rate "0.01" \ --commission-max-rate "0.2" \ --commission-rate "0.07" \ --min-self-delegation "1" \ --pubkey $(strided tendermint show-validator) \ --moniker $NODENAME \ --chain-id $STRIDE_CHAIN_ID
Делигируем в нашего валидатора
strided tx staking delegate $STRIDE_VALOPER_ADDRESS <AMOUNT>ustrd --from=$WALLET --chain-id=$STRIDE_CHAIN_ID --gas=auto
Если после апдейта не цепляется к пирам то выполняем это:
sudo systemctl stop strided rm $HOME/.stride/config/addrbook.json wget -O $HOME/.stride/config/addrbook.json "https://raw.githubusercontent.com/StakeTake/guidecosmos/main/stride/STRIDE-TESTNET-4/addrbook.json" sudo systemctl restart strided && journalctl -u strided -f -o cat