August 26, 2022

IslamicCoin: Haqq testnet

Содержание

  1. Знакомство
  2. Системные требования
  3. Установка ноды
  4. Запуск валидатора
  5. Регистрация
  6. Полезные команды

Знакомство

Описание

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

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

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

Тестнет

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

Github | Docs | Web | Discord | Telegram | Twitter

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

Рекомендуемые требования - 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="[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656"
PEERS="[email protected]:36656,[email protected]:36656,[email protected]:31656,[email protected]:45666,[email protected]:27656,[email protected]:33656,[email protected]:26656,[email protected]:46656,[email protected]: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_HAQQ -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 $WALLETNAME_HAQQ

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

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

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

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

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

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

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

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

haqqd query bank balances $(haqqd keys show $WALLETNAME_HAQQ -a)

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

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

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

Регистрация

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

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

Состояние сети:

# логи
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 $(haqqd keys show $WALLETNAME_HAQQ -a)

# удалить кошелек
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=="$NODENAME_HAQQ")' | 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 haqqd && \
sudo systemctl disable haqqd && \
rm /etc/systemd/system/haqqd.service && \
sudo systemctl daemon-reload 

# удалить файлы
cd $HOME && \
rm -rf .haqqd  && \
rm -rf haqqd && \
rm -rf $(which haqqd)

# удалить переменные окружения
unset WALLETNAME_HAQQ && \
unset VALADDRESS_HAQQ && \
unset WALLETADDRESS_HAQQ && \
unset CHAIN_ID_HAQQ 

Подписывайтесь!

Наш канал в телеграм: https://t.me/cardex_nodes

Наш канал в дискорд: https://discord.gg/mtDbNnAkk9