September 14, 2022

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

Установка ноды

Устанавливаем Go:

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

В выводе вам нужен EIP-55

∎ Проверяем баланс:

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