Сompleted testnets
November 23, 2022

Gitopia: Installation Guide (Testnet is over)

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

Форма регистрации в тестнет - https://airtable.com/shrMQFJxcsMD0XV2M

Тестнет эксплорер - http://explorer.nodera.org/gitopia/staking

DYOR:

Website
Discord
Twitter

Оглавление


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

Оглавление

На данном этапе устанавливаю на сервере Hetzner - CPX21: 3 CPU, 4 GB RAM, 80 GB SSD, дальше буду смотреть по нагрузке, возможно понадобится 4 CPU, 8 GB RAM, 200 GB SSD.

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

sudo apt update && sudo apt upgrade -y

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

sudo apt install curl build-essential pkg-config libssl-dev git wget jq make gcc tmux chrony -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
curl https://get.gitopia.com | bash 
git clone -b v1.2.0 gitopia://gitopia/gitopia
cd gitopia
git fetch --all && git checkout master
make install

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

MONIKER_GITOPIA=вводим свое имя
CHAIN_ID_GITOPIA=gitopia-janus-testnet-2
PORT_GITOPIA=35

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

echo "export MONIKER_GITOPIA="${MONIKER_GITOPIA}"" >> $HOME/.bash_profile
echo "export CHAIN_ID_GITOPIA="${CHAIN_ID_GITOPIA}"" >> $HOME/.bash_profile
echo "export PORT_GITOPIA="${PORT_GITOPIA}"" >> $HOME/.bash_profile
source $HOME/.bash_profile

echo -e "\nmoniker_GITOPIA > ${MONIKER_GITOPIA}.\n"
echo -e "\nchain_id_GITOPIA > ${CHAIN_ID_GITOPIA}.\n"
echo -e "\nport_GITOPIA > ${PORT_GITOPIA}.\n"

Настраиваем конфиг

gitopiad config chain-id $CHAIN_ID_GITOPIA
gitopiad config keyring-backend test
gitopiad config node tcp://localhost:${PORT_GITOPIA}657
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.001utlore\"/" $HOME/.gitopia/config/app.toml

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

gitopiad init $MONIKER_GITOPIA --chain-id $CHAIN_ID_GITOPIA

Загружаем генезис файл

wget https://server.gitopia.com/raw/gitopia/testnets/master/gitopia-janus-testnet-2/genesis.json.gz 
gunzip genesis.json.gz 
mv genesis.json $HOME/.gitopia/config/genesis.json
wget -qO $HOME/.gitopia/config/addrbook.json "https://raw.githubusercontent.com/sergiomateiko/addrbooks/main/gitopia/addrbook.json"

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

seeds="" 
peers="93b218e53303ca91b7bb4f22edbb858496b1b434@65.108.6.45:60756,fbe3b1e34e1dfe9ae2cd0db471b0a807bbb3c5f2@65.109.90.178:11356"
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.gitopia/config/config.toml

Изменяем порты для возможности дальнейшего подселения других нод проектов экосистемы Космос на один сервер

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

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

pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.gitopia/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.gitopia/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.gitopia/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.gitopia/config/app.toml

Сбрасываем данные

gitopiad tendermint unsafe-reset-all --home $HOME/.gitopia

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

printf "[Unit]
Description=Gitopia Service
After=network.target

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

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

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

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

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

gitopiad status 2>&1 | jq .SyncInfo

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


State sync

Оглавление

SNAP_RPC=https://gitopia-testnet-rpc.polkachu.com:443
peers="fbe3b1e34e1dfe9ae2cd0db471b0a807bbb3c5f2@65.109.90.178:11356"
sed -i 's|^persistent_peers *=.*|persistent_peers = "'$peers'"|' $HOME/.gitopia/config/config.toml
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
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/.gitopia/config/config.toml

gitopiad tendermint unsafe-reset-all --home /root/.gitopia
systemctl restart gitopiad && journalctl -u gitopiad -f -o cat

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

Оглавление

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

gitopiad keys add $MONIKER_GITOPIA

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

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

gitopiad keys add $MONIKER_GITOPIA --recover

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

WALLET_GITOPIA=$(gitopiad keys show $MONIKER_GITOPIA -a)
VALOPER_GITOPIA=$(gitopiad keys show $MONIKER_GITOPIA --bech val -a)

echo "export WALLET_GITOPIA="${WALLET_GITOPIA}"" >> $HOME/.bash_profile
echo "export VALOPER_GITOPIA="${VALOPER_GITOPIA}"" >> $HOME/.bash_profile
source $HOME/.bash_profile
echo -e "\nwallet_GITOPIA > ${WALLET_GITOPIA}.\n"
echo -e "\nvaloper_GITOPIA > ${VALOPER_GITOPIA}.\n"

Для пополнения кошелька тестовыми токенами регистрируемся на сайте https://gitopia.com/ с использованием своей мнемонической фразы и запращиваем токены

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

gitopiad q bank balances $WALLET_GITOPIA

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

gitopiad tx staking create-validator \
--amount 9899999utlore \
--from $WALLET_GITOPIA \
--commission-max-change-rate "0.01" \
--commission-max-rate "0.2" \
--commission-rate "0.07" \
--pubkey  $(gitopiad tendermint show-validator) \
--moniker $MONIKER_GITOPIA \
--chain-id $CHAIN_ID_GITOPIA \
--min-self-delegation "1000000" \
--identity="" \
--details="" \
--website="" \
--fees=500utlore \
--gas=auto \
-y

Проверяем своего валидатора в эксплорере -

Мониторинг можно настроить с использованием Panic! бота по гайду - https://nodera.org/panic_bot


Обновление

Оглавление

Используем скрипт для автоматического обновления

curl https://get.gitopia.com/ | bash

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

systemctl restart gitopiad && journalctl -u gitopiad -f -o cat

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

Оглавление

Перед удалением ноды убедитесь, что сохранены файлы из каталога /root/.gitopia/config

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

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

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

Оглавление

Рестарт ноды

sudo systemctl restart gitopiad

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

sudo journalctl -u gitopiad -f -o cat

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

gitopiad keys show $MONIKER_GITOPIA --bech val -a

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

gitopiad tx staking delegate gitopiavaloper1gx6j9sjdh8jezxzsf3m4taj9m79ehhrnuz3prt 9899999utlore --from $WALLET_GITOPIA --chain-id $CHAIN_ID_GITOPIA

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

gitopiad tx staking edit-validator --identity="" --details="" --website="" \
--from $WALLET_GITOPIA --chain-id $CHAIN_ID_GITOPIA -y
#identity - PGP ключ c keybase.io (устанавливает аватар валидатора)
#details - текстовое описание валидатора

Nodera

Telegram | Discord | Twitter