HAQQ: запускаем ноду для тестнета
Если вы нашли себя в таблице валидаторов в одной из групп, то это означает, что вы прошли в тестнет, поздравляю!
Недавно блокчейн HAQQ заработал в новой сети, поэтому, если вы уже устанавливали ноду, вам все равно нужно обновить её, чтобы она удовлетворяла новым требованиям.
К тому же посмотрите на официальные требования к серверу. Если ваш текущий сервер имеет более слабые характеристики и если вы хотите удовлетворять официальным требованиям блокчейна HAQQ, можете перенести свою ноду на другой сервер. То есть удалить текущую ноду и установить по приведенной ниже инструкции на новом сервере.
Если вы переносите ноду на другой сервер, то перед удалением старой ноды сохраните мнемоник и файл priv_validator_key.json. На новом сервере следуйте инструкции с начала.
Если вы не переносите ноду на другой сервер, то начинайте с пункта Устанавливаем бинарные файлы
Официальная инструкция ТУТ
Подготовка
Требования: 4 или более CPU, не менее 32GB RAM, не менее 500GB SSD
Арендовать сервер можно на Hetzner.
apt update && 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
∎ (По желанию) Можно установить Fail2Ban - инструмент для предотвращения взлома вашего сервера:
apt install fail2ban -y
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
nano /etc/fail2ban/jail.local
∎ В открывшемся редакторе необходимо найти и раскомментировать строку #ignoreip, добавив через пробел свой IP адрес вместо YOUR_IP. В результате у вас должно получиться следующее: ignoreip = 127.0.0.1/8 ::1 YOUR_IP
∎ Теперь для сохранения нажимаем Ctrl+x, y, Enter
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.18.4" && \ 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
∎ Устанавливаем бинарные файлы:
cd $HOME git clone https://github.com/haqq-network/haqq.git cd haqq git checkout v1.0.3 make install chmod +x /root/go/bin/haqqd && sudo mv /root/go/bin/haqqd /usr/local/bin/haqqd cd $HOME
∎ Проверяем версию бинарного файла:
haqqd version --long | head
На экране у вас должно появиться:
name: haqq server_name: haqqd version: '"1.0.3" commit: 58215364d5be4c9ab2b17b2a80cf89f10f6de38a
∎ Задаём переменные (вместо YOUR_MONIKER вставляем свои значения, CHAIN не меняем):
MONIKER="YOUR_MONIKER"
CHAIN="haqq_54211-2"
WALLET_NAME="YOUR_MONIKER"
echo 'export MONIKER='${MONIKER} >> $HOME/.bash_profile echo 'export CHAIN='${CHAIN} >> $HOME/.bash_profile echo 'export WALLET_NAME='${WALLET_NAME} >> $HOME/.bash_profile source $HOME/.bash_profile
haqqd init $MONIKER --chain-id $CHAIN
haqqd config chain-id $CHAIN
∎ Если вы не переносили ноду на новый сервер, то сначала удалите старый генезис:
rm -rf $HOME/.haqqd/config/genesis.json
wget -O $HOME/.haqqd/config/genesis.json "https://raw.githubusercontent.com/haqq-network/validators-contest/master/genesis.json"
sha256sum $HOME/.haqqd/config/genesis.json
8c79dda3c8f0b2b9c0f5e770136fd6044ea1a062c9272d17665cb31464a371f7
∎ Сбрасываем состояние валидатора:
haqqd tendermint unsafe-reset-all --home $HOME/.haqqd
Настраиваем конфигурацию ноды
∎ (По желанию) Устанавливаем минимальную цену за газ в app.toml:
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0aISLM\"/;" ~/.haqqd/config/app.toml
∎ (По желанию) Добавляем сиды и пиры:
seeds="62bf004201a90ce00df6f69390378c3d90f6dd7e@seed2.testedge2.haqq.network:26656,23a1176c9911eac442d6d1bf15f92eeabb3981d5@seed1.testedge2.haqq.network:26656" peers="[email protected]:33656,[email protected]:29656,[email protected]:26556,[email protected]:29956,[email protected]:20116,[email protected]:45656,[email protected]:36656,[email protected]:26656,[email protected]:26656,[email protected]:36656,[email protected]:32656" sed -i -e 's|^seeds *=.*|seeds = "'$seeds'"|; s|^persistent_peers *=.*|persistent_peers = "'$peers'"|' $HOME/.haqqd/config/config.toml
∎ (По желанию) Настраиваем фильтрацию плохих пиров:
sed -i -e "s/^filter_peers *=.*/filter_peers = \"true\"/" $HOME/.haqqd/config/config.toml
∎ (По желанию) Настраиваем прунинг:
pruning="custom" && \ pruning_keep_recent="100" && \ pruning_keep_every="0" && \ pruning_interval="50" && \ sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.haqqd/config/app.toml && \ sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.haqqd/config/app.toml && \ sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.haqqd/config/app.toml && \ sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.haqqd/config/app.toml
∎ (По желанию) Выключаем индексацию:
indexer="null" && \ sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/.haqqd/config/config.toml
sudo tee /etc/systemd/system/haqqd.service > /dev/null <<EOF [Unit] Description=haqqd After=network-online.target [Service] User=$USER ExecStart=$(which haqqd) start Restart=on-failure RestartSec=3 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF
sudo systemctl daemon-reload sudo systemctl enable haqqd sudo systemctl restart haqqd
sudo journalctl -u haqqd -f -o cat
∎ Проверяем, синхронизировалась ли нода, следующей командой (в разделе catching_up должно быть false):
curl localhost:26657/status
∎ Ждём, когда нода синхронизируется. Если это долго не происходит, то можно в дискорде поискать более актуальные пиры или addrbook или воспользоваться этой:
sudo systemctl stop haqqd
rm $HOME/.haqqd/config/addrbook.json
wget -O $HOME/.haqqd/config/addrbook.json "https://raw.githubusercontent.com/StakeTake/guidecosmos/main/haqq/haqq_54211-2/addrbook.json"
sudo systemctl restart haqqd && journalctl -u haqqd -f -o cat
Создаем валидатора
∎ Восстанавливаем кошелек после того, как нода синхронизировалась:
haqqd keys add $WALLET_NAME --recover
∎ Копируем priv_validator_key.json с сервера, на котором делали gentx, в текущую рабочую папку (.haqq/config). Если не остался priv_validator_key.json, то это нестрашно, если вы не в 1й группе.
∎ Задаём переменную с адресом кошелька:
WALLET_ADDRESS=$(haqqd keys show $WALLET_NAME -a)
echo 'export WALLET_ADDRESS='${WALLET_ADDRESS} >> $HOME/.bash_profile source $HOME/.bash_profile
∎ Получаем монеты на кошелек в кране.
Если вам нужен ETH-адрес вашего кошелька, то выполняем команду:
haqqd debug addr адрес_кошелька_haqq
haqqd query bank balances $WALLET_ADDRESS
∎ Создаем валидатора, если баланс пополнен (сумму делегирования себе в строке amount можете указать любую, но чтобы хватило на комиссии):
haqqd tx staking create-validator \ --amount=980000000000000000aISLM \ --pubkey=$(haqqd tendermint show-validator) \ --moniker=$MONIKER \ --chain-id=haqq_54211-2 \ --commission-rate="0.10" \ --commission-max-rate="0.20" \ --commission-max-change-rate="0.01" \ --min-self-delegation="1000000" \ --gas="auto" \ --from=$WALLET_NAME
∎ Создаём переменную с адресом валидатора:
VALOPER=$(haqqd keys show $WALLET_ADDRESS --bech val -a)
echo 'export VALOPER='${VALOPER} >> $HOME/.bash_profile source $HOME/.bash_profile
∎ Проверяем статус валидатора:
haqqd query staking validator $VALOPER
Не забудьте сохранить файл priv_validator_key.json у себя в надежном месте!
Готово! Вы установили ноду для тестнета.
Осталось дождаться очереди вашей группы и приступить к выполнению заданий. Удачи!
Полезные команды
haqqd tx slashing unjail --from $WALLET_NAME --chain-id $CHAIN
sudo journalctl -u haqqd -f -o cat
haqqd query bank balances $WALLET_ADDRESS
sudo systemctl stop haqqd && \ sudo systemctl disable haqqd && \ rm /etc/systemd/system/haqqd.service && \ sudo systemctl daemon-reload && \ cd $HOME && \ rm -rf .haqqd haqq && \ rm -rf $(which haqqd)
Спасибо за внимание!
Ссылка на TG канал: https://t.me/cryptonik_space