Устанавливаем ноду HAQQ / Islamic Coin (Russian Edition)
Если вкратце, то HAQQ - это масштабируемый, высокопроизводительный блокчейн Proof-of-Stake, полностью совместимый и взаимодействующий с Ethereum. Основные тезисы которые я бы выдедил:
- Islamic Coin (Исламская монета) стремится привлечь исламский финансовый сектор в криптовалюту, причем на 2020 год объем денежных средств там составлял 2.88 триллиона долларов, к 2024 году ожидается увеличение до 3.69 триллиона долларов;
- Islamic Coin / HAQQ получил фетву (решение о том, что продукт соответствует Шариату), изданную ведущими мировыми экспертами в области Ислама. То есть 2 миллиарда мусульман официально могут использовать эту валюту, и она не противоречит религиозным принципам;
- Масштабируемый и быстрый EVM (виртуальная машина Эфириума) совместимый блокчейн;
- Есть возможность работать с экосистемой Cosmos;
- Над проектом работают очень опытные финансисты, которые управляли миллиардными оборотами;
- Блокчейн HAQQ уже привлек 200 миллионов долларов инвестиций в приватном seed раунде.
Подготовка
Нам нужен будет сервер Ubuntu 22.04 и следующие характеристики:
- 4 Cores (modern CPU's)
- 8GB RAM
- 100GB_SSD of disk space
- Постоянное подключение к Интернету (трафик будет не менее 10 Мбит/с во время тестовой сети) Хотя бы 100 Мбит/с должно быть у вас.
Лоукостерные серваки можно арендовать у сдедующих провайдеров по скидкам:
Как я устанавливал HAQQ ноду на сервер от DigitalOcean можно для наглядности зыркнуть на моём Youtube канале.
Раз уж вы решили установить ноду, настоятельно рекомендую подписаться на их официальные медиа:
Установка и настройка ноды HAQQ
1. Обновляем пакеты:
sudo apt update && sudo apt upgrade -y
2. Устанавливаем дополнительные пакеты:
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
3. Устанавливаем GO и проверяем версию:
ver="1.18.3" && \ cd $HOME && \ 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
4. Скачиваем и устанавливаем бинарники с Github:
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/ cd $HOME
5. Задаем переменные, вместо user_name придумываем свое имя (латинскими буквами ребята!):
MONIKER="user_name"
CHAIN="haqq_53211-1"
WALLET_NAME="user_name"
6. Добавляем все в баш профиль:
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
7. Инициализируем ноду:
haqqd init $MONIKER --chain-id $CHAIN
8. Прописываем имя сети в Config:
haqqd config chain-id $CHAIN
9. Скачиваем снепшот генезиса и проверяем его:
curl -OL https://storage.googleapis.com/haqq-testedge-snapshots/genesis.json mv genesis.json $HOME/.haqqd/config/genesis.json haqqd validate-genesis
10. Сбрасываем состояние валидатора:
haqqd tendermint unsafe-reset-all --home $HOME/.haqqd
11. Настраиваем синхронизацию:
curl -OL https://raw.githubusercontent.com/haqq-network/testnets/main/TestEdge/state_sync.sh chmod +x state_sync.sh ./state_sync.sh
12. Настраиваем прунинг:
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
13. Выключаем индексер:
indexer="null" && \ sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/.haqqd/config/config.toml
14. Создаем сервис файл:
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
15. Запускаем сервис.
sudo systemctl daemon-reload && \ sudo systemctl enable haqqd && \ sudo systemctl restart haqqd
16. Дабы ускорить процесс синхронизации, нужно прознести следующее заклинание:
sudo systemctl stop haqqd haqqd tendermint unsafe-reset-all --home $HOME/.haqqd SEEDS="[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656" PEERS=""; \ sed -i.bak -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.haqqd/config/config.toml wget -O $HOME/.haqqd/config/addrbook.json "https://raw.githubusercontent.com/StakeTake/guidecosmos/main/haqq/haqq_53211-1/addrbook.json" SNAP_RPC="http://haqq.stake-take.com:36657" LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \ BLOCK_HEIGHT=$((LATEST_HEIGHT - 2000)); \ TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash) echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH 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 && journalctl -u haqqd -f -o cat
17. Всё, на этом этапе у нас пошли логи. Глядим что у нас с логами (устаём смотреть - клацаем CTR+C). Хотим ещё раз глятунь, призываем команду:
sudo journalctl -u haqqd -f -o cat
18. Далее смотрим на статус синхронизации. Нам нужно, чтобы catching_up показывало false. Придётся какое то время подождать пока нода все чехлы соберёт.
curl localhost:26657/status
19. Далее переходим к созданию нового кошеля или воссоздания имеющего при помощи мнемоника.
haqqd keys add $WALLET_NAME
haqqd keys add $WALLET_NAME --recover
20. Добавляем переменную с адресом кошелька:
WALLET_ADDRESS=$(haqqd keys show $WALLET_NAME -a)
21. Добавляем переменную в баш профиль:
echo 'export WALLET_ADDRESS='${WALLET_ADDRESS} >> $HOME/.bash_profile source $HOME/.bash_profile
Далее нам нужно, чтоб нам отсыпали тестовые токены $ISLM. Для этого нам понадобится Chrome, MetaMask и профиль на Github.
Переходим на официальную просилку тестовых монет. Логинимся с помощью Github. Подключаем метамаск. Добовляем тестовую сеть и клеймим токены.
22. Возвращаемся в терминал. И проверяем баланс.
haqqd query bank balances $WALLET_ADDRESS
23. Монетки мы свои получили и теперь давайте уже перейдём к созданию валидатора. Показываю на примере 500 монет $ISLM.
1 ISLM = 1000000000000000000 aISLM (18 бубликов)
haqqd tx staking create-validator \ --amount=500000000000000000000aISLM \ --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
24. Задаем переменную с адресом валидатора:
VALOPER=$(haqqd keys show $WALLET_ADDRESS --bech val -a)
25. Добавляем ее в баш профиль:
echo 'export VALOPER='${VALOPER} >> $HOME/.bash_profile source $HOME/.bash_profile
26. Проверяем статуса валидатора:
haqqd query staking validator $VALOPER
27. Давайте делегирнём себе 10 токенов:
haqqd tx staking delegate $VALOPER 10000000000000000000aISLM --from $WALLET_NAME --chain-id haqq_53211-1
28. И для галочки заделегируем 10 монет другому валидатору. В знак признательности можете кинуть мне. В команде прописываю свой адресс
haqqd tx staking delegate haqqvaloper1c7ft8zfrk6h34vhtml0vh20au9g4zya05xd8m5 10000000000000000000aISLM --from $WALLET_NAME --chain-id haqq_53211-1
Вуаля, вы молодцы - справились.
Теперь после установки ноды можно отправить форму регистрации валидатора.
Где запалить наши транзакции в HAQQ?
Представляю вашему вниманию три эксплорера которые мне удалось найти
Полезные команды
Снести полностью ноду
sudo systemctl stop haqqd && \ sudo systemctl disable haqqd && \ rm /etc/systemd/system/haqqd.service && \ sudo systemctl daemon-reload && \ cd $HOME && \ rm -rf .haqqd && \ rm -rf haqq && \ rm -rf $(which haqqd)
Перезагрузить ноду
sudo systemctl daemon-reload && \ sudo systemctl enable haqqd && \ sudo systemctl restart haqqd && \ sudo journalctl -u haqqd -f -o cat
Снять награду
haqqd tx distribution withdraw-all-rewards --from $WALLET_NAME --fees=000aISLM --chain-id $CHAIN
Информация по валидатору
haqqd status 2>&1 | jq .ValidatorInfo
Информация по ноде
haqqd status 2>&1 | jq .NodeInfo
Как выйти из тюрьмы
haqqd tx slashing unjail \ --broadcast-mode=block \ --from=$WALLETNAME \ --chain-id=$CHAIN_ID \ --gas=auto --fees 250aISLM
На этом пожалуй всё. Спасибо за внимание. Подписывайтесь на мои соц.сети. Пока они совсем свежие, но я планирую активно их развивать. Дайте мне месяцок и всё будет огонь.