Gno.land
🪓 Telegram канал UTSA 🪓 Telegram чат UTSA
- Network Chain ID:
topaz-1 - RPC: https://rpc.topaz.testnets.gno.land
- Valopers: https://topaz.testnets.gno.land/r/gnops/valopers?page=1
- Explorer: https://exp.gno.utsa.tech/
- TG bot: @UTSAGNOBot
- Faucet: https://faucet.gno.land/
Подготовка сервера
# обновляем репозитории 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/topaz make -C gno.land install.gnoland install.gnokey gnoland version # gnoland version: chain/topaz gnokey --help
Инициализируем ноду, чтобы создать необходимые файлы конфигурации
gnoland config init gnoland secrets init
wget -O $HOME/gno/gnoland-data/config/genesis.json "https://github.com/gnolang/gno/releases/download/chain/topaz/genesis.json" shasum -a 256 $HOME/gno/gnoland-data/config/genesis.json # 2dd049f973b82858727440df9aff5722cb0b322fd00890f40f2b0688276898ff
Настраиваем конфигурацию ноды
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.seeds g19q07ssuafhmg6r7ys7wp7rpc4jxc85cpvdy426@seed-1.topaz.testnets.gno.land:26656,g15k98e65gm8h7fdr3yr4tqn82lvch4a97a3sg3j@seed-2.topaz.testnets.gno.land:26656 gnoland config set p2p.persistent_peers \ "g10zqystndwphs4aumuj8fujmh0z5ep9lmx9fnpl@38.49.212.137:36656,g138usej2c7hvcqec6wzsqwaw2zexnngx0hrpele@208.76.222.122:36656,g1393shc3547t6yyva69hnpwmqnc0psxkyhknljw@152.53.245.124:26656,g15k98e65gm8h7fdr3yr4tqn82lvch4a97a3sg3j@108.132.15.161:26656,g163g9pyzc8l83ta5qmedmckfywrtzhvknxlsmks@85.195.116.219:26680,g17d5epdngr7yt7n5tn9xx0xm38s870475c6gnsk@46.224.197.243:55656,g17mkvewp957pvcu2n5m7y2cpmpl7fdzlajhqm53@149.202.68.156:26676,g17qp5xc8a607svp77h3ttl05mg4fuzyl5fyvc2r@152.53.253.167:55656,g17t7vlg7hjvsldqj06zenkxpktzntkp62thg9a7@65.109.106.214:55656,g18ahqzryula7y9j6w4v7fnkc0l6djn3rvguhld8@135.181.17.54: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 6 hours | db_backend: pebbledb
🌐 https://share118.utsa.tech/gno_test/
# останавливаем ноду 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_test/gno-test-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 topaz-1 \ --genesis $HOME/gno/gnoland-data/config/genesis.json \ --log-level info \ --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.topaz.testnets.gno.land" auth/accounts/<ADDRESS> #gnokey query --remote "http://127.0.0.1:26657" auth/accounts/<ADDRESS>
Регистрируемся в качестве кандидата в валидаторы
⚠️ Gnoland использует систему регистрации валидаторов на основе GovDAO. Регистрация делает Вас только кандидатом. Член GovDAO должен создать и передать предложение о включении Вас в список активных валидаторов
Получите открытый ключ вашего Валидатора (gpub1...)
cd $HOME/gno && gnoland secrets get validator_key
#{
# "address": "g1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
# "pub_key": "gpub1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
#}⚠️ В тестнете для регистрации используется только 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.topaz.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 topaz-1 --remote "$REMOTE" --broadcast "$KEY_NAME"
ℹ️ После успешной транзакции вы можете просмотреть свой профиль по ссылке:
https://topaz.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:26657/status); REMOTE_JSON=$(curl -s https://rpc.topaz.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 "topaz-1" \ -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