August 22, 2022

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

Здравствуйте сегодня мы расскажем об установке ноды HAQQ для новой сети, как было заявлено раннее произошёл отбор валидаторов в новую сеть, валидаторы распределены на группы, смена групп происходит каждый понедельник, более подробно можно ознакомиться в дискорде, список групп здесь. Так же понадобиться mnemonic от кошелька и priv_validator_key.json с сервера на котором делали gentx

Оригинальная инструкция находится тут.

Haqq — это масштабируемый, высокопроизводительный блокчейн Proof-of-Stake, полностью совместимый и взаимодействующий с Ethereum, более подробно можно прочитать на официальном сайте.

Рекомендуемые требования для сервера

8GB RAM, 100GB_SSD of disk space, 4Cores (modern CPU's)

Краткую инструкцию по аренде сервера можно посмотреть тут

Как всегда обновляем наш сервер

sudo apt update && sudo apt upgrade -y

Устанавливаем доп. пакеты

sudo 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

Устанавливаем go и проверяем версию

ver="1.19.1" && \ 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.2.1 make install chmod +x /root/go/bin/haqqd && sudo mv /root/go/bin/haqqd /usr/local/bin/haqqd cd $HOME

Задаем переменные (CHAIN оставляем без изменений, в остальные вписываем свои данные)

MONIKER="your_name" CHAIN="haqq_54211-3" WALLET_NAME="your_name"

Добавляем все в баш профиль

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 haqq_54211-3

Прописываем в конфиг имя сети

haqqd config chain-id haqq_54211-3

Скачиваем файл генезис

cd $HOME/.haqqd/config && rm -rf genesis.json && wget https://github.com/haqq-network/validators-contest/raw/master/genesis.json

Проверяем генезис

sha256sum $HOME/.haqqd/config/genesis.json

Вывод такой

b93f2650bdf560cab2cf7706ecee72bfba6d947fa57f8b1b8cb887f8b428233f

Сбрасываем состояние валидатора

haqqd tendermint unsafe-reset-all --home $HOME/.haqqd

Добавляем сиды и пиры

seeds="62bf004201a90ce00df6f69390378c3d90f6dd7e@seed2.testedge2.haqq.network:26656,23a1176c9911eac442d6d1bf15f92eeabb3981d5@seed1.testedge2.haqq.network:26656" peers="b3ce1618585a9012c42e9a78bf4a5c1b4bad1123@65.21.170.3:33656,952b9d918037bc8f6d52756c111d0a30a456b3fe@213.239.217.52:29656,85301989752fe0ca934854aecc6379c1ccddf937@65.109.49.111:26556,d648d598c34e0e58ec759aa399fe4534021e8401@109.205.180.81:29956,f2c77f2169b753f93078de2b6b86bfa1ec4a6282@141.95.124.150:20116,eaa6d38517bbc32bdc487e894b6be9477fb9298f@78.107.234.44:45656,37513faac5f48bd043a1be122096c1ea1c973854@65.108.52.192:36656,d2764c55607aa9e8d4cee6e763d3d14e73b83168@66.94.119.47:26656,fc4311f0109d5aed5fcb8656fb6eab29c15d1cf6@65.109.53.53:26656,297bf784ea674e05d36af48e3a951de966f9aa40@65.109.34.133:36656,bc8c24e9d231faf55d4c6c8992a8b187cdd5c214@65.109.17.86:32656" sed -i -e 's|^seeds *=.*|seeds = "'$seeds'"|; s|^persistent_peers *=.*|persistent_peers = "'$peers'"|' $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

После синхронизации восстанавливаем с помощью мнемоника кошелек и копируем priv_validator_key.json с сервера на котором делали gentx в текущую рабочую папку (.haqq/config)

haqqd keys add $WALLET_NAME --recover

Добавляем переменную с адресом кошелька

WALLET_ADDRESS=$(haqqd keys show $WALLET_NAME -a)

Добавляем переменную в баш профиль

echo 'export WALLET_ADDRESS='${WALLET_ADDRESS} >> $HOME/.bash_profile source $HOME/.bash_profile

Теперь нам необходимо получить средства на кошелек. Для этого переходим по ссылке и создаем с помощью мнемоника полученного при создании кошелька для ноды, или подключаем кошелёк метамаск, после чего авторизуемся через гитхаб и запрашиваем токены на баланс кошелька (сеть новая, не забудьте смемить для того чтобы отобразился баланс), если ваша группа пока не в активе то запрашивать токены все равно можно.

После этого выполняем команду

haqqd debug addr адрес_кошелька_haqq

В выводе нам нужен адрес (EIP-55) на него переводим средства с метамаска (если кошелёк создавали с помощью мнемоника от кошелька ноды, то просто напрямую на него запрашиваем токены).

После запроса проверяем баланс

haqqd query bank balances $WALLET_ADDRESS

Если средства успешно поступили, то создаем валидатора (сумму указывайте свою, сколько хотите делегировать с кошелька, указывайте чуть меньше что бы хватило на комиссию)

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 \
--node https://rpc.tm.testedge.haqq.network:443

Задаем переменную с адресом валидатора

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

Делегация средств с кошелька на валидатора (сумму вводите свою)

haqqd tx staking delegate $VALOPER 1000000aISLM --from $WALLET_NAME --chain-id $CHAIN

Ну и если вдруг ваша нода попала в тюрьму, то выход

haqqd tx slashing unjail --from $WALLET_NAME --chain-id $CHAIN

Большое спасибо, за внимание и уделенное время

Наш телеграмм канал по нодам — https://t.me/mmsnodes
Наш телеграмм чат по нодам - https://t.me/mmsnodeschat
Наш телеграмм канал по экосистеме Cosmos - https://t.me/cosmochannel_mms

С уважением, MMS_Team