October 3, 2022

Как работает IslamicCoin Haqq testnet. Основные настройки и параметры

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

Среди основных особенностей Haqq можно выделить: совместимость с Web3 и EVM, высокую пропускную способность благодаря ядру Tendermint, горизонтальную масштабируемость через IBC и быструю скорость транзакций.

Цель Haqq — служить международному мусульманскому сообществу, предоставляя финансовый и технологический инструмент, который позволяет осуществлять независимое финансовое взаимодействие, поддерживая при этом технологическую эволюцию и благотворительность.


Если вы желаете поделиться своим мнением о криптовалютах и блокчейн-технологиях, добро пожаловать в наш Telegram-чат. Нам важно знать, что вы думаете!


Тестнет

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

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

Рекомендуемые требования - 4 CPU / 8 RAM / 200 SSD

Минимальные требования - 3 CPU / 4 RAM / 80 SSD

Установка

Подготавливаем сервер:

# обновляем 'базу данных' и дистрибутив

sudo apt update && sudo apt upgrade -y

#cкачиваем необходимые зависимости

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://golang.org/dl/go1.18.1.linux-amd64.tar.gz; \

rm -rv /usr/local/go; \

tar -C /usr/local -xzf go1.18.1.linux-amd64.tar.gz && \

rm -v go1.18.3.linux-amd64.tar.gz && \

echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> ~/.bash_profile && \

source ~/.bash_profile && \

# проверяем версию

go version

Устанавливаем переменные окружения:

# вводим свои значения

echo export NODENAME_HAQQ=введите_имя_ноды >> $HOME/.bash_profile

echo export WALLETNAME_HAQQ=введите_имя_кошелька >> $HOME/.bash_profile

echo export CHAIN_ID_HAQQ="haqq_53211-1" >> $HOME/.bash_profile

# сохраняем изменения

source ~/.bash_profile

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

# удаляем старые файлы (если до этого устанавливали эту ноду)

rm -rf $HOME/haqq $HOME/.haqqd

# cкачиваем и устанавливаем проект

cd $HOME && \

git clone -b v1.0.3 https://github.com/haqq-network/haqq && \

cd haqq && \

make install

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

haqqd init $NODENAME_HAQQ --chain-id $CHAIN_ID_HAQQ

Cоздаем конфиги:

# удаляем старую базу

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

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

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

wget -O $HOME/.haqqd/config/genesis.json "https://storage.googleapis.com/haqq-testedge-snapshots/genesis.json"

wget -O $HOME/.haqqd/config/addrbook.json "https://raw.githubusercontent.com/StakeTake/guidecosmos/main/haqq/haqq_53211-1/addrbook.json"

# Настраиваем сиды и пиры

SEEDS=8f7b0add0523ec3648cb48bc12ac35357b1a73ae@195.201.123.87:26656,899eb370da6930cf0bfe01478c82548bb7c71460@34.90.233.163:26656,f2a78c20d5bb567dd05d525b76324a45b5b7aa28@34.90.227.10:26656,4705cf12fb56d7f9eb7144937c9f1b1d8c7b6a4a@34.91.195.139:26656

PEERS="22a64e0d99ceb809fb902c4b1f91918553b06e9b@173.249.38.80:36656,0e8de1037b15af79705174d43c5fee1a93ac92ca@116.203.35.46:36656,583b6585d34e9993a7b02a8faa057d6334de30e6@65.109.17.86:31656,ffadba4c95ad235c828763e35cddee3fd2a35892@78.107.234.44:45666,d09e4b49d27a4d0a8a338157afb9674af0bb0da3@65.109.30.117:27656,9f15d378fda449c030eea4f913c1fee26a3046f5@65.109.18.179:33656,1ab6eba1e24b195a51a5a8e960f6328a4782b43c@195.201.108.152:26656,c3ee2e7ad7533d589e6de8b7cb146495a88a744c@135.181.248.69:46656,952b9d918037bc8f6d52756c111d0a30a456b3fe@213.239.217.52:29656"; \

sed -i.bak -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.haqqd/config/config.toml

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

indexer="null"

pruning="custom"

pruning_keep_recent="100"

pruning_keep_every="0"

pruning_interval="10"

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

Ставим снепшот

cd && rm -rf ~/.haqqd/data; \

wget -O - http://snap.stake-take.com:8000/haqq.tar.gz | tar xf -

mv $HOME/root/.haqqd/data $HOME/.haqqd

rm -rf $HOME/root

Создаем сервисник:

tee $HOME/haqqd.service > /dev/null <<EOF

[Unit]

Description=haqq

After=network.target

[Service]

Type=simple

User=$USER

ExecStart=$(which haqqd) start

Restart=on-failure

RestartSec=10

LimitNOFILE=65535

[Install]

WantedBy=multi-user.target

EOF

sudo mv $HOME/haqqd.service /etc/systemd/system/

Запускаем ноду:

sudo systemctl daemon-reload

sudo systemctl enable haqqd

sudo systemctl restart haqqd

Проверяем логи:

journalctl -fu haqqd -o cat

Создаем кошелек и валидатора

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

# создаем новый кошелек

haqqd keys add $WALLETNAME_HAQQ

# восстанавливаем старый кошелек

haqqd keys add $WALLETNAME_HAQQ--recover

ВНИМАНИЕ! ОБЯЗАТЕЛЬНО СОХРАНИТЕ МНЕМОНИКУ КОШЕЛЬКА!

# сохраняем адреса в виде переменных

echo 'export WALLETADDRESS_HAQQ='$(haqqd keys show $WALLETNAME -a) >> $HOME/.bash_profile

echo 'export VALADDRESS_HAQQ='$(haqqd keys show cardex --bech val -a) >> $HOME/.bash_profile

source $HOME/.bash_profile

Запрашиваем токены:

1. Импортируем кошелек Haqq в Метамаск, для отображения приватного ключа вводим команду:

haqqd keys unsafe-export-eth-key cardex

2. Переходим на сайт и привязываем к нему Метамаск.

3. Привязываем к сайту свой гитхаб.

4. Запрашиваем токены.

Запрашивать токены можно раз в 24 часа

Проверяем статус синхронизации:

haqqd status 2>&1 | jq ."SyncInfo"."catching_up"

Если falce, то продолжаем.

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

haqqd query bank balances $WALLETADDRESS_HAQQ

Если баланс не отображается, значит синхронизация еще не завершена

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

haqqd tx staking create-validator \

--amount 1000000000000000000aISLM \

--from $WALLETADDRESS_HAQQ \

--commission-max-change-rate "0.05" \

--commission-max-rate "0.20" \

--commission-rate "0.05" \

--min-self-delegation "1" \

--pubkey $(haqqd tendermint show-validator) \

--moniker $NODENAME_HAQQ \

--chain-id $CHAIN_ID_HAQQ \

--gas 300000 \

-y

Регистрация

После того как установили ноду и создали валидатора заполняем форму.

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

# cостояние сети

# логи

sudo journalctl -u haqqd -f -o

# статус синхронизации

haqqd status 2>&1 | jq |grep catch

# статус

haqqd status 2>&1 | jq

# Параметры сети

haqqd q staking params haqqd q slashing params

# проверка высоты блоков

haqqd status 2>&1 | jq ."SyncInfo"."latest_block_height"

# количество пропущенных блоков

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

# вывод списка кошельков

haqqd keys list

# баланс кошелька

haqqd q bank balances $WALLETNAME_HAQQ

# удалить кошелек

haqqd keys delete $WALLETNAME_HAQQ

# вывод ключа аккаунта

haqqd keys show $WALLETNAME_HAQQ --bech acc

# вывод ключа консенсуса

haqqd keys show $WALLETNAME_HAQQ --bech cons

# вывод ключа валидатора

haqqd keys show $WALLETNAME_HAQQ --bech val

# pubkey валидатора

haqqd tendermint show-validator

# проверить валидатора

haqqd query staking validator $VALADDRESS_HAQQ

haqqd query staking validators --limit 1000000 -o json | jq '.validators[] | select(.description.moniker=="<имя валидатора>")' | jq

Транзакции:

# собрать комиссионные + реварды

haqqd tx distribution withdraw-rewards $VALADDRESS_HAQQ --from $WALLETNAME_HAQQ --fees 300000aISLM --commission -y --chain-id $CHAIN_ID_HAQQ

# заделегировать себе в стейк еще (так отправляется 1 монетa)

haqqd tx staking delegate $VALADDRESS_HAQQ 1000000aISLM --from $WALLETNAME_HAQQ --fees 300000aISLM -y --chain-id $CHAIN_ID_HAQQ

# ределегирование на другого валидатора

haqqd tx staking redelegate <src-validator-addr> <dst-validator-addr> 1000000aISLM --from $WALLETNAME_HAQQ --fees 300000aISLM -y --chain-id $CHAIN_ID_HAQQ

# unbond

haqqd tx staking unbond $VALADDRESS_HAQQ 1000000aISLM --from $WALLETNAME_HAQQ --fees 300000aISLM -y --chain-id $CHAIN_ID_HAQQ

# отправить монеты на другой адрес

haqqd tx bank send $WALLETNAME_HAQQ $VALADDRESS_HAQQ 1000000aISLM --fees 300000aISLM -y --chain-id $CHAIN_ID_HAQQ

# выбраться из тюрьмы

haqqd tx slashing unjail --from $WALLETNAME_HAQQ--fees 300000aISLM -y --chain-id $CHAIN_ID_HAQQ

# проверка количества пиров

curl -s http://localhost:26657/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr | split(":")[2])"' | wc -l

# cписок моникеров подключенных пиров

curl -s http://localhost:26657/net_info | jq '.result.peers[].node_info.moniker'

Удалить ноду:

# удалить системник

sudo systemctl stop Cardchain && \

sudo systemctl disable Cardchain && \

rm /etc/systemd/system/Cardchain.service && \

sudo systemctl daemon-reload

# удалить файлы

cd $HOME && \

rm -rf .Cardchain && \

rm -rf Cardchain && \

rm -rf $(which Cardchain)

# удалить переменные окружения

unset WALLETNAME_HAQQ && \

unset VALADDRESS_HAQQ && \

unset WALLETADDRESS_HAQQ && \

unset CHAIN_ID_HAQQ