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/
Сrunchbase
Website
Discord
Оглавление
- Подготовка сервера
- Установка ноды
- State Sync
- Создание валидатора
- Задания
- Selfie!
- Help a friend!
- Like a squirrel in a wheel!
- I'm the only one here!
- Get yours!
- I'll give you the last one!
- Обновление v1.3.0
- Удаление ноды
- Полезные команды
Подготовка сервера
Для стабильной работы долно хватить сервера с следующими характеристиками: 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
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
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
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
Подтверждаем загрузку файла и переходим в раздел Pull Request
Называем PR по типу "Add gentx <ваш_moniker>" и открываем Pull Request.
Проверяем появился ли наш PR по ссылке - https://github.com/haqq-network/validators-contest/pulls
Заполняем форму подключаем свой дискорд к лидерборду и ждем результатов отбора.
Задания
В данном задании необходимо делегировать токены вашему валидатору
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
Копируем хэш транзакции и подтверждаем задание
В данном задании необходимо делегировать токены стороннему валидатору
В команде ниже указан мой адрес валидатора. Можете использовать его либо заменить на адрес другого валидатора из эксплорера https://haqq.explorers.guru/validators (формат адреса haqqvaloper....)
haqqd tx staking delegate haqqvaloper1wh2wf0ahp9m3spdeje5jlmc7vn007jev2x9gkn \ 1000000000000000000aISLM --from $HAQQ_WALLET --chain-id $HAQQ_CHAIN_ID \ --fees=5000aISLM --gas=auto
Копируем хэш транзакции и подтверждаем задание
Для выполнения данного задания, в конце недели в активе, ваш аптайм не должен быть ниже 98%. Если аптайм выше, делаем скриншот аптайма с экплорера и подтверждаем задание.
В данном задании необходимо изменить отображение вашего валидатора в эксплорере. Например, добавить аватар.
1. Находим своего валидатора в эксплорере http://explorer.nodera.org/haqq/staking и делаем скриншот страницы валидатора до изменений.
2. Регистрируемся на сайте Keybase. Подтверждаем почту, устанавливаем аватар, добавляем PGP ключ. (Если что-то будет непонятно, можно посмотреть гайд со скриншотами у наших друзей Let's Node
4. Изменяем вадидатора командой
haqqd tx staking edit-validator --identity "ваш PGP ключ" --from $HAQQ_WALLET
5. Делаем скриншот страницы валидатора после изменений, объединяем два скриншота в один файл и подтверждаем задание.
Для выполнения задания необходимо вывести награды с вашего валидатора и со стороннего валидатора, в которого мы делегировали в задании "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
Отправляем оба хэша для подтверждения задания.
Для выполнения задания необходимо ределегировать токены со своего валидатора на стороннего валидатора
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