Gno.land - test 13
🪓 Telegram канал UTSA 🪓 Telegram чат UTSA
- Network Chain ID:
test-13 - RPC: https://rpc.test13.testnets.gno.land
- Explorer: https://explorer-gnoland.oshvank.xyz/?v=g1lyt8fg7e987jgh7kxa3fn8zlcx295kdzuj7d8d
- Valopers: https://test13.testnets.gno.land/r/gnops/valopers
- Active validators: https://test13.testnets.gno.land/r/sys/validators/v3
- Faucet: https://faucet.gno.land/
Полное руководство по запуску узла валидации в тестовой сети gno.land test13
Подготовка сервера
# обновляем репозитории apt update && sudo apt upgrade -y # устанавливаем необходимые утилиты apt install curl build-essential git wget jq make gcc tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y # проверяем работу жестких дисков curl -sL yabs.sh | bash -s — -ig # проверяем работу интернета curl -sL yabs.sh | bash -s — -fg
File2Ban - подробнее здесь
# устанавливаем и копируем конфиг, который будет иметь больший приоритет apt install fail2ban -y && \ cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local && \ nano /etc/fail2ban/jail.local # раскомментировать и добавить свой IP: ignoreip = 127.0.0.1/8 ::1 <ip> systemctl restart fail2ban # проверяем status systemctl status fail2ban # проверяем, какие jails активны (по умолчанию только sshd) fail2ban-client status # проверяем статистику по sshd fail2ban-client status sshd # смотрим логи tail /var/log/fail2ban.log # останавливаем работу и удаляем с автозагрузки #systemctl stop fail2ban && systemctl disable fail2ban
ver="1.22.13" && \ 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
Новая установка ноды
ВАЖНО — в командах ниже все, что в <> меняем на свое значение и убираем сами <>
git clone https://github.com/gnolang/gno && cd $HOME/gno git checkout chain/test13 make -C gno.land install.gnoland install.gnokey gnoland version # gnoland version: chain/test13 gnokey --help
Инициализируем ноду, чтобы создать необходимые файлы конфигурации
gnoland config init gnoland secrets init
wget -O $HOME/gno/genesis.json "https://github.com/gnolang/gno/releases/download/chain/test13/genesis.json" shasum -a 256 $HOME/gno/genesis.json # 56f56e135174feff9f93283d5ec7e4ec955cd5155108aff5009d4fd51c5adaf2
Настраиваем конфигурацию ноды
gnoland config set moniker "<moniker>" SERVER_IP=$(curl -4 -s ifconfig.me) gnoland config set p2p.external_address "$SERVER_IP:26656" gnoland config set p2p.pex true # persistent peers (required) gnoland config set p2p.persistent_peers \ "g1e3pftctakyx58mzapqs4syc4h0jcxwtnraq00c@185.248.24.16:47656,g13lg797wyweuultfxdntaz3v9yuchl5p9aexj4k@178.124.192.147:26656,g1z3mavstqrfewltrw886d35fufq6v7eg63xjcet@88.198.46.55:32556,g1j3ylvtrdfzckh5979kvhpznvgy6e0ytwhzrja5@149.50.96.58:41656,g1xjx0hcg67jwqfsmuzjz4uqfhh5ma4rf6n7yg2k@38.246.115.151:26656,g13gumehh3euchv3hp29gsj72pt0ssezaapqu5qd@138.201.240.155:17656,g17su28ydtj8jsdqt2c7m3jn3mysqlz6n57vxd5t@62.210.125.225:26656,g1tsdm60z0akzxtwxkfamt02m6e8fqk0y9h25vks@135.181.78.21:17656,g1xmnn74a2fcc9qnmk6zdlgr5n446em44378c5n3@142.132.158.158:26656,g16ueudzsm5t2v5t2hdr2tr8n2fzj2x6mekx6pvy@192.155.100.132:26656,g1lxkf9gn7kddrr26c640ww5wg3ezsm22we8cjpc@99.81.240.125:26656,g1ghkxmz46w46562yl8capdfqvlypp6zcp55qx7t@185.144.99.19:26656,g1ghl8lhhdnhwwvp94z0gsadvz3c03et30cqyhu2@117.1.104.188:26656,g1wfu406mz57cv2cq68agrkefd4g6pw0ew4kyvlu@65.109.22.211:54656,g1cw4ajr026320c3a6rfm2d77tr94yglh5namap9@149.50.110.40:22656,g17qp5xc8a607svp77h3ttl05mg4fuzyl5fyvc2r@37.60.255.34:27656,g1zz2yvc23ts7uk05gemxmj9dlrhdt7w8pxtcdy5@62.210.207.58:26656,g1pzyfmmtxlla7ay90rfx62cc3rq6hq3jk48cjqz@146.19.24.32:26656,g142k7zc2qym3c0u6jmkf6rv26llgr2f4nakmlmt@54.145.44.95:26656,g1v5unyq7fsndekzegp2xh0tw45nsxpkx5qsgy8u@135.181.232.179:26656,g1dlu8z4kxq8hekht2vmn6z3qqzrea4u37js727a@176.9.3.249:26656,g16f7dlfvrk6qugcdmaq5npw0sjhlf79vrz7ge6c@5.9.8.148:30800,g12gxe0qpq90vhhpp5gtavafgr2nl9cntntvrjkj@186.233.184.95:37656,g1uycj5lkvu97jddywjttd8xq53u3p6eyhh2js25@62.210.124.8:26656" # consensus settings gnoland config set application.prune_strategy syncable gnoland config set consensus.timeout_commit 3s gnoland config set consensus.peer_gossip_sleep_duration 10ms gnoland config set p2p.flush_throttle_timeout 10ms # performance gnoland config set mempool.size 10000 gnoland config set p2p.max_num_outbound_peers 40 # проверим nano /root/gno/gnoland-data/config/config.toml
Snapshot
time: every 12 hours | db_backend: pebbledb
🌐 https://share118.utsa.tech/gno_test13/
# останавливаем ноду systemctl stop gnoland 2>/dev/null || pkill -f "gnoland start" 2>/dev/null || true # очищаем старую базу данных rm -rf ~/gno/gnoland-data/db ~/gno/gnoland-data/wal # скачиваем snapshot curl -o - -L https://share118.utsa.tech/gno_test13/gno-test13-snapshot.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/gno/gnoland-data/
tee /etc/systemd/system/gnoland.service > /dev/null <<EOF [Unit] Description=Gnoland After=network-online.target Wants=network-online.target [Service] User=$USER WorkingDirectory=$HOME/gno Environment=GNOROOT=$HOME/gno Environment=HOME=$HOME ExecStart=$(which gnoland) start \ --chainid test-13 \ --genesis $HOME/gno/genesis.json \ --skip-genesis-sig-verification Restart=on-failure RestartSec=5s LimitNOFILE=65535 StandardOutput=journal StandardError=journal SyslogIdentifier=gnoland [Install] WantedBy=multi-user.target EOF
systemctl daemon-reload systemctl enable gnoland systemctl restart gnoland && journalctl -u gnoland -f -o cat
Создаем или восстанавливаем кошелек и сохраняем вывод
# создать кошелек. Кошелек создастся по пути $HOME/.config/gno/data/keys.db/ gnokey add <name_wallet> # восстановить кошелек gnokey add <name_wallet> --recover # получить адрес вашего оператора: gnokey list
Faucet
Воспользуйтесь faucet https://faucet.gno.land/ и запросите токены для своего адреса оператора g1xxx
gnokey query --remote "https://rpc.test13.testnets.gno.land" auth/accounts/<ADDRESS> #gnokey query --remote "http://127.0.0.1:26657" auth/accounts/<ADDRESS>
Регистрируемся в качестве кандидата в валидаторы
⚠️ Gnoland использует систему регистрации валидаторов на основе GovDAO. Регистрация делает Вас только кандидатом. Член GovDAO должен создать и передать предложение о включении Вас в список активных валидаторов
Получите открытый ключ вашего Валидатора (gpub1...)
cd /root/gno && gnoland secrets get validator_key
#{
# "address": "g1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
# "pub_key": "gpub1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
#}⚠️ В тестнете 13 для регистрации используется только pub_key
Здесь address это адрес ключа консенсуса, не используйте его в качестве адреса оператора. Вместо этого используйте адрес своего кошелька из gnokey list
Добавьте все необходимые данные
MONIKER="moniker"
read -r -d '' DESCRIPTION <<'EOF'
**Validator Name:** XXX
**Networks We Are Currently Validating:**
- XXX
- XXX
- XXX
**Total AuM:**
- ~$1M across all networks
**Links to Our Digital Presence:**
- Website: XXX
- GitHub: XXX
- X/Twitter: XXX
**Contact Details:**
- Email: XXX
- Telegram: XXX
- Discord: XXX
**Why We Are Interested in Validating on gno.land:**
XXX
**Contributions & Plans:**
XXX
EOF
SERVER_TYPE="data-center"
# OPERATOR_ADDRESS можно посмотреть через gnokey list
OPERATOR_ADDRESS="XXX"
CONSENSUS_PUBKEY=$(gnoland secrets get validator_key | grep 'pub_key' | awk '{print $2}' | tr -d '"')
KEY_NAME="XXX"
REMOTE="https://rpc.test13.testnets.gno.land"echo "$MONIKER"; echo "$DESCRIPTION"; echo "$SERVER_TYPE"; echo "$OPERATOR_ADDRESS"; echo "$CONSENSUS_PUBKEY"; echo "$KEY_NAME"; echo "$REMOTE"
Отправить заявку на регистрацию в Validator
gnokey maketx call --pkgpath gno.land/r/gnops/valopers --func Register --args "$MONIKER" --args "$DESCRIPTION" --args "$SERVER_TYPE" --args "$OPERATOR_ADDRESS" --args "$CONSENSUS_PUBKEY" --gas-fee 1000000ugnot --gas-wanted 50000000 --chainid test-13 --remote "$REMOTE" --broadcast "$KEY_NAME"
ℹ️ После успешной транзакции вы можете просмотреть свой профиль по ссылке:
https://test13.testnets.gno.land/r/gnops/valopers
Полезные команды
# проверка синхронизации curl -s http://127.0.0.1:26657/status | jq '.result.sync_info' # проверка пиров curl -s http://127.0.0.1:26657/net_info | jq '.result.n_peers, .result.peers[]?.node_info.moniker' # проверка статуса curl -s http://127.0.0.1:26657/status | jq # проверка адреса Node consensus key cd /root/gno && gnoland secrets get validator_key # сравнение высоты с RPC watch -n 5 'LOCAL_JSON=$(curl -s http://127.0.0.1:36657/status); REMOTE_JSON=$(curl -s https://rpc.test13.testnets.gno.land/status); LOCAL=$(echo "$LOCAL_JSON" | jq -r ".result.sync_info.latest_block_height // 0"); REMOTE=$(echo "$REMOTE_JSON" | jq -r ".result.sync_info.latest_block_height // 0"); CATCHING=$(echo "$LOCAL_JSON" | jq -r ".result.sync_info.catching_up"); DIFF=$((REMOTE-LOCAL)); echo "Local height: $LOCAL"; echo "Remote height: $REMOTE"; echo "Diff: $DIFF"; echo "Catching up: $CATCHING"'
gnokey maketx send \ -send "1000000ugnot" \ -to "RECIPIENT_ADDRESS" \ -gas-fee 1000000ugnot \ -gas-wanted 10000000 \ -broadcast \ -chainid "test-13" \ -remote "https://rpc.test13.testnets.gno.land" \ wallet
# создать кошелек. Кошелек создастся по пути $HOME/.config/gno/data/keys.db/ gnokey add <name_wallet> # восстановить кошелек gnokey add <name_wallet> --recover # получить адрес вашего оператора: gnok
systemctl stop gnoland && \ systemctl disable gnoland && \ rm /etc/systemd/system/gnoland.service && \ systemctl daemon-reload cd $HOME rm -rf gno