Ноды
August 25, 2022

HAQQ нода

Автор статьи Crypto time

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

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

Подробный видео гайд по установке

Подробная статья описана в статье Бесплатный сервер для ноды

Нам потребуется сервер с следующими характеристиками:

  • CPU: 4
  • RAM: 8GB
  • SSD: 100GB
  • Ubuntu: 20.04

Арендовать сервер можно на сайтах:

  1. Digitalocean
  2. Kamatera
  3. Cloud google
  4. Vultr
  5. Oracle
  6. Linode

Настройка сервера

Обновляем наш сервер

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.18.2" && \ 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/haqq-network/haqq.git cd haqq 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_53211-1" 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 $CHAIN

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

haqqd config chain-id $CHAIN 

Скачиваем файл генезис и проверяем его

curl -OL https://storage.googleapis.com/haqq-testedge-snapshots/genesis.json mv genesis.json $HOME/.haqqd/config/genesis.json haqqd validate-genesis

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

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

Настраиваем синхронизацию

curl -OL https://raw.githubusercontent.com/haqq-network/testnets/main/TestEdge/state_sync.sh chmod +x state_sync.sh ./state_sync.sh

Настраиваем прунинг

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

После синхронизации создаем кошелек

Не забываем сохранить мнемоник фразу

haqqd keys add $WALLET_NAME

Если кошелек уже есть то восстанавливаем с помощью мнемоник фразы

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_53211-1 \
 --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

Снять награду

haqqd tx distribution withdraw-all-rewards --from $WALLET_NAME --fees=000aISLM --chain-id $CHAIN

Список валидаторов

haqqd query staking validators --limit 1000 -o json | jq -r '.validators[] | select(.status=="BOND_STATUS_BONDED") | [.operator_address, .status, (.tokens|tonumber / pow(10; 6)), .description.moniker] | @csv' | column -t -s"," | sort -k3 -n -r | nl

Ссылки

Сайт

Twitter

Discord

Telegram