Ноды
February 15, 2023

Установка ноды Humans.ai

Humans.ai — это блокчейн-платформа, которая направлена на улучшение использования искусственного интеллекта (ИИ) в творчестве.

ИИ сейчас в мете, скипать не стоит, надо попытаться попасть в тестнет.

Самое тяжелое, это заполнить форму на участие))

Сайт проекта | Документация проекта | Discord | GitHub | Explorer
Telegram канал сообщества Starnodes

Награды

Информация уточняется.

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

4 CPU 8 RAM 200 SSD

Используемые порты: 26656,26657,6060,9090,9091 tcp

26656 - P2P порт должен быть открыт для всех.
26657 - RPC порт открывается опционально.

Аренда сервера:

1) Хостинг Hetzner - неплохой хостинг для аренды VPS по соотношению цена-качество, подойдет для большинства нод.

2) Хостинг Starnodes - VPS сервера с большой ёмкостью NVME накопителя. Все сервера расположены в датацентре и работают 24/7.

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

Создание пользователя (по желанию):

adduser $NEWUSER

Добавить в группу Sudo:

usermod -aG sudo $NEWUSER

Установим необходимое программное обеспечение:

sudo apt install curl chrony tar wget clang pkg-config libssl-dev libleveldb-dev jq build-essential bsdmainutils git make ncdu htop screen unzip bc htop mc -y

Опционально установите fail2ban:

sudo apt install fail2ban -y

Установка GO:

cd $HOME && \
ver="1.19.3" && \
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

Начало установки ноды:

Установка переменных:

MONIKER="moniker"
WALLET="moniker_wallet"
CHAIN="testnet-1"

Экспорт переменных:

echo "export MONIKER=$MONIKER" >> $HOME/.bash_profile && \
echo "export WALLET=$WALLET" >> $HOME/.bash_profile && \
echo "export CHAIN=$CHAIN" >> $HOME/.bash_profile && \
source $HOME/.bash_profile

Установка бинарных файлов:

cd $HOME
rm -rf ~/humans
git clone https://github.com/humansdotai/humans
cd humans
git checkout v1.0.0
go build -o humansd cmd/humansd/main.go
mkdir -p ~/go/bin/
mv humansd ~/go/bin/humansd

Инициализация ноды:

humansd config chain-id $CHAIN
humansd config keyring-backend test
humansd init $MONIKER --chain-id $CHAIN

Скачаем генезис и адресбук:

curl -s https://rpc-testnet.humans.zone/genesis | jq -r .result.genesis > $HOME/.humans/config/genesis.json
curl https://raw.githubusercontent.com/starnodes/humans/master/addrbook.json > ~/.humans/config/addrbook.json

Добавим сиды и пиры:

SEEDS=""
PEERS="[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656"
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.humans/config/config.toml

Настройка прунинга:

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

Выключить индексер:

indexer="null" 
sed -i.bak -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/.humans/config/config.toml

Настраиваем минимальную цену за газ в app.toml

sed -i 's/minimum-gas-prices =.*/minimum-gas-prices = "0.025uheart"/g' $HOME/.humans/config/app.toml

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

CONFIG_TOML="$HOME/.humans/config/config.toml"
sed -i 's/timeout_propose =.*/timeout_propose = "100ms"/g' $CONFIG_TOML
sed -i 's/timeout_propose_delta =.*/timeout_propose_delta = "500ms"/g' $CONFIG_TOML
sed -i 's/timeout_prevote =.*/timeout_prevote = "100ms"/g' $CONFIG_TOML
sed -i 's/timeout_prevote_delta =.*/timeout_prevote_delta = "500ms"/g' $CONFIG_TOML
sed -i 's/timeout_precommit =.*/timeout_precommit = "100ms"/g' $CONFIG_TOML
sed -i 's/timeout_precommit_delta =.*/timeout_precommit_delta = "500ms"/g' $CONFIG_TOML
sed -i 's/timeout_commit =.*/timeout_commit = "1s"/g' $CONFIG_TOML
sed -i 's/skip_timeout_commit =.*/skip_timeout_commit = false/g' $CONFIG_TOML

Сбросить старую базу:

humansd tendermint unsafe-reset-all --home $HOME/.humans --keep-addr-book

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

sudo tee /etc/systemd/system/humansd.service > /dev/null <<EOF
[Unit]
Description=humansd Node
After=network.target

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

[Install]
WantedBy=multi-user.target
EOF

Запускаем службу и добавляем в автозапуск:

sudo systemctl daemon-reload
sudo systemctl enable humansd
sudo systemctl restart humansd && sudo journalctl -u humansd -f

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

humansd status 2>&1 | jq .SyncInfo

Добавить кошелек:

humansd keys add $WALLET

Или восстановить по мнемонике:

humansd keys add $WALLET --recover

Добавим адрес валидатора и кошелька в переменные для удобства:

VALOPER=$(humansd keys show $WALLET --bech val -a) && \
ADDRESS=$(humansd keys show $WALLET --address) && \
echo "export VALOPER=$VALOPER" >> $HOME/.bash_profile && \
echo "export ADDRESS=$ADDRESS" >> $HOME/.bash_profile && \
source $HOME/.bash_profile

Запросить токены в дискорде:

https://discord.com/channels/999302051538411671/1039540296540770385

Проверить баланс на кошельке:

humansd query bank balances $ADDRESS

Создать валидатора:

humansd tx staking create-validator \
  --amount=9900000uheart \
  --pubkey=$(humansd tendermint show-validator) \
  --moniker=$MONIKER \
  --chain-id=$CHAIN \
  --commission-rate="0.10" \
  --commission-max-rate="0.20" \
  --commission-max-change-rate="0.05" \
  --min-self-delegation=1000000 \
  --fees=5000uheart \
  --from=$WALLET \
  -y

Не забывайте заполнить форму на участие (смотрите в описании).

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

sudo systemctl stop humansd
sudo systemctl disable humansd
sudo rm -rf /etc/systemd/system/humansd*
sudo systemctl daemon-reload
sudo rm $(which humansd)
sudo rm -rf $HOME/.humans
sudo rm -fr $HOME/humans

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

Статус ноды

# Логи службы ноды
journalctl -u humansd -f -o cat
# Управление службами
systemctl status humansd
systemctl stop humansd
systemctl start humansd
systemctl restart humansd
# Проверить статус ноды
humansd status 2>&1 | jq

Кошельки

# Посмотреть адрес кошелька
echo $ADDRESS
# Проверить баланс кошелька
humansd q bank balances $ADDRESS
# Отправка токенов 1 token = 1000000 (Cosmos)
humansd tx bank send $WALLET <ADDRESS_TO> <TOKENS_COUNT>$TOKEN --fees 500$TOKEN
# Удалить кошелек
humansd keys delete $WALLET

! Если транзакции не отправляются с ошибкой account sequence mismatch, expected 18, got 17: incorrect account sequence, то добавьте в команду ключ -s 18 (номер замените на тот, который ждет sequence)

Голосование

# Проголосовать
humansd tx gov vote 1 yes --from $WALLET --fees 500$TOKEN -y
# Посмотреть пропосалы, где вы проголосовали
humansd q gov proposals --voter $ADDRESS

Действия с валидатором

# Получить адрес валидатора (valoper)
echo $VALOPER
# Изменить данные валидатора
humansd tx staking edit-validator --website="<YOUR_WEBSITE>" --details="<YOUR_DESCRIPTION>" --moniker="<YOUR_NEW_MONIKER>" --from=$WALLET --fees 500$TOKEN
# Выйти из тютьмы
humansd tx slashing unjail --from $WALLET --fees 500$TOKEN
# Делегировать токены вашему валидатору
humansd tx staking delegate $VALOPER <TOKENS_COUNT>$TOKEN --from $WALLET --fees 500$TOKEN -y
# Сбросить валидатора, удалить базу и addrbook.json
humansd tendermint unsafe-reset-all --home $HOME/$HOME/.humans

@starnodes_ru - наш канал в Telegram с новостями и гайдами по тестнетам.
@starnodes_chat - канал, куда можно обратиться за помощью.