Сompleted testnets
September 2, 2022

HAQQ: Installation Guide (Testnet is over)

HAQQ (Islamic Coin) - это масштабируемый, высокопроизводительный EVM-совместимый PoS блокчейн, нацеленный на привлечение исламского капитала в криптомир. По слухам в сид раунде привлечено $200М.

Для участия в тестнете Haqq TestEdge до 6 сентября необходимо установить ноду, подать gentx и заполнить форму. Тестнет начнется 8 сентября, будет отобрано 100 валидаторов.

Форма для подачи заявки - https://haqq-network.typeform.com/to/zEgmX3TO

Валидаторы, не попавшие в генезис разделены на группы, проверить себя можно по ссылке - https://docs.google.com/spreadsheets/d/1jRBe64-WsnLNTHAOLUU5Ed_8CODU60Y4Enm59Bs_d60/edit?usp=sharing

Лидерборд - https://haqq-val-contest.crew3.xyz/

DYOR:

Сrunchbase
Website
Discord
Twitter

Оглавление


Подготовка сервера

Оглавление

Для стабильной работы долно хватить сервера с следующими характеристиками: 4 CPU, 8 GB RAM, 100+ GB SSD, что позволяет установить ноду на сервер Hetzner - CPX31.

Обновляем пакеты

sudo apt update && sudo apt upgrade -y

Устанавливаем инструменты разработчика и необходимые пакеты

sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential bsdmainutils git make ncdu gcc git jq chrony liblz4-tool -y

Устанавливаем GO

wget https://go.dev/dl/go1.18.4.linux-amd64.tar.gz; \
rm -rv /usr/local/go; \
tar -C /usr/local -xzf go1.18.4.linux-amd64.tar.gz && \
rm -v go1.18.4.linux-amd64.tar.gz && \
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> ~/.bash_profile && \
source ~/.bash_profile && \
go version

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

Оглавление

Клонируем репозиторий проекта с нодой

cd $HOME
git clone https://github.com/haqq-network/haqq

Переходим в папку с проектом, собираем бинарные файлы и проверяем версию

cd haqq && \
git checkout v1.3.0 && \
make install
haqqd version

Актуальная версия - v1.3.0

Создаем переменные

HAQQ_MONIKER=вводим свое имя
HAQQ_CHAIN_ID=haqq_54211-3
HAQQ_PORT=31

Сохраняем переменные, перезагружаем .bash_profile и проверяем значения переменных

echo "export HAQQ_MONIKER="${HAQQ_MONIKER}"" >> $HOME/.bash_profile
echo "export HAQQ_CHAIN_ID="${HAQQ_CHAIN_ID}"" >> $HOME/.bash_profile
echo "export HAQQ_PORT="${HAQQ_PORT}"" >> $HOME/.bash_profile

source $HOME/.bash_profile

echo -e "\nmoniker > ${HAQQ_MONIKER}.\n"
echo -e "\nchain_id > ${HAQQ_CHAIN_ID}.\n"
echo -e "\nport > ${HAQQ_PORT}.\n"

Инициализируем ноду

haqqd config node tcp://localhost:${HAQQ_PORT}657
haqqd config chain-id $HAQQ_CHAIN_ID
haqqd init $HAQQ_MONIKER --chain-id $HAQQ_CHAIN_ID
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${HAQQ_PORT}658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${HAQQ_PORT}657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${HAQQ_PORT}060\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${HAQQ_PORT}656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${HAQQ_PORT}660\"%" $HOME/.haqqd/config/config.toml
sed -i.bak -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${HAQQ_PORT}317\"%; s%^address = \":8080\"%address = \":${HAQQ_PORT}080\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${HAQQ_PORT}090\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${HAQQ_PORT}091\"%" $HOME/.haqqd/config/app.toml

Создаем кошелек

haqqd keys add $HAQQ_MONIKER

Сохраняем мнемоник фразу в надежном месте!

Если вы участвовали в предыдущих тестнетах, восстанавливаем кошелек командой и вводим мнемоник фразу

haqqd keys add $HAQQ_MONIKER --recover

Создаем переменную с адресом кошелька

HAQQ_WALLET=вводим свой кошелек
echo "export HAQQ_WALLET="${HAQQ_WALLET}"" >> $HOME/.bash_profile
source $HOME/.bash_profile
echo -e "\nwallet > ${HAQQ_WALLET}.\n"

Удаляем старый файл генезиса и скачиваем новый

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

Проверяем файл генезиса

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

Корректный вывод - b93f2650bdf560cab2cf7706ecee72bfba6d947fa57f8b1b8cb887f8b428233f

Скачиваем адресбук

rm $HOME/.haqqd/config/addrbook.json && wget -O $HOME/.haqqd/config/addrbook.json "https://raw.githubusercontent.com/cryptobtcbuyer/Testnet_guides/main/Haqq/addrbook.json"

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

peers="23ff658b56fbb8bc73372973a34733ff5d79b435@142.132.202.50:11604" \
&& sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.haqqd/config/config.toml

Создаем сервисный файл

printf "[Unit]
Description=Haqq Node
After=network.target

[Service]
User=$USER
Type=simple
ExecStart=$(which haqqd) start
Restart=on-failure
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target" > /etc/systemd/system/haqqd.service

Запускаем сервис и проверяем логи

sudo systemctl daemon-reload && \
sudo systemctl enable haqqd && \
sudo systemctl restart haqqd && \
sudo journalctl -u haqqd -f -o cat

Ждем окончания синхронизации, проверить синхронизации можно командой

haqqd status 2>&1 | jq .SyncInfo

Если вывод показывает false, синхронизация завершена.


State Sync

Оглавление

sudo systemctl stop haqqd && haqqd tendermint unsafe-reset-all --home $HOME/.haqqd

SNAP_RPC="http://142.132.202.50:11601"  
LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \
BLOCK_HEIGHT=$((LATEST_HEIGHT - 1000)); \
TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash)
echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH

wget -O $HOME/.haqqd/config/addrbook.json "https://raw.githubusercontent.com/cryptobtcbuyer/Testnet_guides/main/Haqq/addrbook.json"
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$SNAP_RPC,$SNAP_RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"| ; \
s|^(seeds[[:space:]]+=[[:space:]]+).*$|\1\"\"|" $HOME/.haqqd/config/config.toml

sudo systemctl restart haqqd &&  sudo journalctl -u haqqd -f -o cat

Создание валидатора

Оглавление

Заходим в метамаск и импортируем кошелек по приватному ключу. Приватный ключ можно узнать следующей командой

haqqd keys export $HAQQ_MONIKER --unarmored-hex --unsafe

Важно! Никому не показывайте приватный ключ!!

Заходим на сайт крана - https://testedge2.haqq.network/, подключаем гитхаб и метамаск. После этого можно заклеймить токены.

После завершения синхронизации и получения токенов, создаем валидатора

haqqd tx staking create-validator --amount=1000000000000000000aISLM --pubkey=$(haqqd tendermint show-validator) --moniker=$HAQQ_MONIKER --chain-id=$HAQQ_CHAIN_ID --commission-rate="0.05" --commission-max-rate="0.10" --commission-max-change-rate="0.01" --min-self-delegation=1000000000000000000 --fees=5000aISLM --from=$HAQQ_WALLET

Дожидаемся своей группы и начинаем выполнять задания


Создание кошелька и gentx (не актуально)

Оглавление

Создаем кошелек

haqqd keys add $HAQQ_MONIKER

Сохраняем мнемоник фразу в надежном месте!

Если вы участвовали в предыдущих тестнетах, восстанавливаем кошелек командой и вводим мнемоник фразу

haqqd keys add $HAQQ_MONIKER --recover

Создаем переменную с адресом кошелька

HAQQ_WALLET=вводим свой кошелек
echo "export HAQQ_WALLET="${HAQQ_WALLET}"" >> $HOME/.bash_profile
source $HOME/.bash_profile
echo -e "\nwallet > ${HAQQ_WALLET}.\n"

Добавляем аккаунт в генезис

haqqd add-genesis-account $HAQQ_WALLET 10000000000000000000aISLM

Создаем gentx

haqqd gentx $HAQQ_WALLET 10000000000000000000aISLM \
--chain-id=haqq_54211-2 \
--moniker=$HAQQ_MONIKER \
--commission-max-change-rate 0.05 \
--commission-max-rate 0.20 \
--commission-rate 0.05 \
--website="" \
--security-contact="" \
--identity="" \
--details=""

Сохраняем созданный gentx к себе на компьютер. Файл находится по пути

/.haqqd/config/gentx/gentx-xxx.json

Переименовываем файл в <ваш_моникер>.json


Открытие Pull Request (не актуально)

Оглавление

Не актуально!!

Переходим на гитхаб проекта по ссылке и создаем форк репозитория

Переходим в созданный форк репозитория в папку gentx по ссылке

https://github.com/<ваш_github_id>/validators-contest/tree/master/gentx

Загружаем ваш gentx в папку

Подтверждаем загрузку файла и переходим в раздел Pull Request

Называем PR по типу "Add gentx <ваш_moniker>" и открываем Pull Request.

Проверяем появился ли наш PR по ссылке - https://github.com/haqq-network/validators-contest/pulls

Заполняем форму подключаем свой дискорд к лидерборду и ждем результатов отбора.


Задания

Selfie!

Оглавление

В данном задании необходимо делегировать токены вашему валидатору

Узнаем адрес валидатора

haqqd keys show $HAQQ_WALLET --bech val -a

Для дальнейшего удобства можно создать переменную с адресом валидатора

HAQQ_VALOPER=адрес вашего валидатора

Сохраняем переменные, перезагружаем .bash_profile и проверяем значения переменных

echo "export HAQQ_VALOPER="${HAQQ_VALOPER}"" >> $HOME/.bash_profile

source $HOME/.bash_profile

echo -e "\nvaloper > ${HAQQ_VALOPER}.\n"

Делегируем токены валидатору

haqqd tx staking delegate $HAQQ_VALOPER 1000000000000000000aISLM \
--from $HAQQ_WALLET --chain-id $HAQQ_CHAIN_ID --fees=5000aISLM --gas=auto

Копируем хэш транзакции и подтверждаем задание


Help a friend!

Оглавление

В данном задании необходимо делегировать токены стороннему валидатору

В команде ниже указан мой адрес валидатора. Можете использовать его либо заменить на адрес другого валидатора из эксплорера https://haqq.explorers.guru/validators (формат адреса haqqvaloper....)

Делегируем токены командой

haqqd tx staking delegate haqqvaloper1wh2wf0ahp9m3spdeje5jlmc7vn007jev2x9gkn \
1000000000000000000aISLM --from $HAQQ_WALLET --chain-id $HAQQ_CHAIN_ID \
--fees=5000aISLM --gas=auto

Копируем хэш транзакции и подтверждаем задание


Like a squirrel in a wheel!

Оглавление

Для выполнения данного задания, в конце недели в активе, ваш аптайм не должен быть ниже 98%. Если аптайм выше, делаем скриншот аптайма с экплорера и подтверждаем задание.


I'm the only one here!

Оглавление

В данном задании необходимо изменить отображение вашего валидатора в эксплорере. Например, добавить аватар.

1. Находим своего валидатора в эксплорере http://explorer.nodera.org/haqq/staking и делаем скриншот страницы валидатора до изменений.

2. Регистрируемся на сайте Keybase. Подтверждаем почту, устанавливаем аватар, добавляем PGP ключ. (Если что-то будет непонятно, можно посмотреть гайд со скриншотами у наших друзей Let's Node

3. Копируем PGP ключ

4. Изменяем вадидатора командой

haqqd tx staking edit-validator  --identity "ваш PGP ключ" --from $HAQQ_WALLET

5. Делаем скриншот страницы валидатора после изменений, объединяем два скриншота в один файл и подтверждаем задание.


Get yours!

Оглавление

Для выполнения задания необходимо вывести награды с вашего валидатора и со стороннего валидатора, в которого мы делегировали в задании "Help a friend!"

Выводим реварды со своего валидатора и копируем хэш транзакции

haqqd tx distribution withdraw-rewards $HAQQ_VALOPER \
--chain-id $HAQQ_CHAIN_ID --from $HAQQ_WALLET --yes

Выводим реварды со стороннего валидатора и копируем хэш транзакции

haqqd tx distribution withdraw-rewards адрес стороннего валидатора \
--chain-id $HAQQ_CHAIN_ID --from $HAQQ_WALLET

Отправляем оба хэша для подтверждения задания.


I'll give you the last one!

Оглавление

Для выполнения задания необходимо ределегировать токены со своего валидатора на стороннего валидатора

haqqd tx staking redelegate $HAQQ_VALOPER haqqvaloper1wh2wf0ahp9m3spdeje5jlmc7vn007jev2x9gkn \
1000000000000000000aISLM --from $HAQQ_WALLET --chain-id $HAQQ_CHAIN_ID \
--fees=5000aISLM --gas=auto

Копируем хэш транзакции и подтверждаем задание.


Обновление v1.3.0

Оглавление

Важно!! Обновлять ноду только после 1 412 300 блока!!!

Проверяем текущий блок

sudo journalctl -u haqqd -f -o cat|grep indexed

Если блок больше 1 412 300, выполняем следующие действия

Останавливаем ноду

sudo systemctl stop haqqd

Обновляем бинарные файлы

cd $HOME && rm -rf haqq 
git clone https://github.com/haqq-network/haqq.git && cd haqq 
git checkout v1.3.0 
make build
sudo mv ./build/haqqd $(which haqqd)
haqqd version
#версия должна быть v1.3.0

Перезапускаем ноду

sudo systemctl restart haqqd && sudo journalctl -u haqqd -f -o cat

Удаление ноды

Оглавление

Для удаления ноды используйте следующие команды

cd

sudo systemctl stop haqqd
sudo systemctl disable haqqd
sudo rm -rf $HOME/.haqqd
sudo rm -rf $HOME/haqq 
sudo rm -rf /etc/systemd/system/haqq.service 
sudo rm -rf /usr/local/bin/haqqd
sudo systemctl daemon-reload

Полезные команды

Оглавление

Рестарт ноды

sudo systemctl restart haqqd

Проверка логов

sudo journalctl -u haqqd -f -o cat

Проверка нахождения валидатора в тюрьме

haqqd q slashing signing-info $(haqqd tendermint show-validator)

Выход из тюрьмы

haqqd tx slashing unjail --from $HAQQ_WALLET --fees 500aISLM -y

Nodera

Telegram | Discord | Twitter