Omniflix /// v3.0
Устанавливаем ноду Omniflix для участия в тестнете FlixNet-3.
Если вы не знаете, что такое нода — читаем статью.
Если вы не знаете, где арендовать сервер для ноды — читаем статью.
Если вы не знаете, как подключиться к серверу — читаем статью.
Если вы всё знаете — открываем MobaXterm и создаём сессию.
- Краткое описание ивента: несколько слов про ивент, условия участия.
- Требования к железу: рекомендуемые технические параметры сервера.
- Установка
- Нода: скачиваем и настраиваем ноду;
- Валидатора: создаём файл сервиса и запускаем валидатора.
- Полезные вещи
- Полезные команды при работе с нодой;
- Перенос и бэкап: пригодится при переезде;
- Удаление ноды: на будущее;
- Ределегация: выводим реварды за стейкинг и ределегируем их.
Omniflix Network - это мультимедийная сеть для авторов, позволяющая создавать, распространять и монетизировать мультимедийные активы.
Blog | Docs | GitHub | WebSite | Twitter | Discord | Telegram
Официальные требования: 2 CPU x 4 GB RAM x 200 GB SSD - Ubuntu 20.04.
Субъективные наблюдения: 1 CPU x 2 GB RAM x 200 GB SSD - Ubuntu 20.04.
В этом блоке мы скачаем необходимые модули на сервер, установим и инициализируем ноду, а также восстановим ключи.
# обновляем 'базу данных' и скачиваем необходимые зависимости $ sudo apt-get update && sudo apt-get upgrade -y $ sudo apt install curl build-essential git wget jq -y
# устанавливаем 'go' одной командой $ wget https://golang.org/dl/go1.17.5.linux-amd64.tar.gz; \ rm -rv /usr/local/go; \ tar -C /usr/local -xzf go1.17.5.linux-amd64.tar.gz && \ rm -v go1.17.5.linux-amd64.tar.gz && \ echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> ~/.bash_profile && \ source ~/.bash_profile && \ go version
Отлично, сервер подготовлен. Приступаем к скачиванию необходимых файлов.
# клонируем и устанавливаем ноду $ git clone https://github.com/Omniflix/omniflixhub.git && \ cd omniflixhub && \ git fetch --all && \ git checkout v0.3.0 && \ go mod tidy && \ make install && \ cd
# проверяем $ omniflixhubd version
Теперь добавим наш никнейм, который будет в дальнейшем использоваться в качестве моникера и названия кошелька, в систему, как переменную.
Замените условную переменную <nickname> на желаемый никнейм, раскрывая кавычки.
# например, "export NICKNAME="cyberomanov"" $ echo "export NICKNAME="<nickname>"" >> ~/.bash_profile
# чтобы переменная загрузилась, необходимо перезагрузить '.bash_profile' $ source ~/.bash_profile
# проверим значение переменной, выведя её на экран $ echo $NICKNAME
Отлично. Приступим к инициализации ноды и генерации ключей.
# инициализируем ноду $ omniflixhubd init $NICKNAME --chain-id flixnet-3
Скачиваем каталог $HOME/.omniflixhub/config/ себе на ПК, в качестве бэкапа.
# восстанавливаем ключи по мнемонике $ omniflixhubd keys add $NICKNAME --recover # либо генерируем новые $ omniflixhubd keys add $NICKNAME
Переходим к созданию сервиса ноды для запуска валидатора.
# скачиваем новый генезис файл $ curl https://raw.githubusercontent.com/OmniFlix/testnets/main/flixnet-3/genesis.json > ~/.omniflixhub/config/genesis.json
# создаём файл сервиса $ sudo tee /etc/systemd/system/omniflixhubd.service > /dev/null <<EOF [Unit] Description=OmniFlixHub Daemon After=network-online.target [Service] User=$USER ExecStart=$(which omniflixhubd) start Restart=always RestartSec=3 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF
Редактируем конфиг, обновляя сиды и пиры.
# создаём временные переменные, где указываем рабочие пиры и сиды $ seeds="75a6d3a3b387947e272dab5b4647556e8a3f9fc1@45.72.100.122:26656" $ peers="f05968e78c84fd3997583fabeb3733a4861f53bf@45.72.100.120:26656,\ b29fad915c9bcaf866b0a8ad88493224118e8b78@104.154.172.193:26656,\ 28ea934fbe330df2ca8f0ddd7a57a8a68c39a1a2@45.72.100.110:26656,\ 94326ddc5661a1b571ea10c0626f6411f4926230@45.72.100.111:26656"
# и выполняем команду по установке новых пиров $ sed -i.bak -e "s/^seeds *=.*/seeds = \"$seeds\"/; s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.omniflixhub/config/config.toml
# устанавливаем минимальную цену газа $ sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.001uflix\"/" $HOME/.omniflixhub/config/app.toml
# 'очищаем кеш' $ omniflixhubd unsafe-reset-all
# обновляем данные о сервисах и запускаем ноду одной командой $ sudo systemctl daemon-reload && \ sudo systemctl enable omniflixhubd && \ sudo systemctl restart omniflixhubd
# проверяем логи $ sudo journalctl -u omniflixhubd -f -o cat
После полной синхронизации создаём валидатора:
$ omniflixhubd tx staking create-validator \ --amount=1000000uflix \ --pubkey=$(omniflixhubd tendermint show-validator) \ --moniker="$NICKNAME" \ --chain-id="flixnet-3" \ --commission-rate="0.10" \ --commission-max-rate="0.20" \ --commission-max-change-rate="0.01" \ --min-self-delegation="1" \ --gas="auto" \ --gas-adjustment="1.2" \ --gas-prices="0.025uflix" \ --node `cat "$HOME/.omniflixhub/config/config.toml" \ | grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"` \ --from=$NICKNAME
Несколько команд для удобной работы с нодой.
# получаем высоту блоков нашей ноды $ omniflixhubd status 2>&1 \ --node `cat "$HOME/.omniflixhub/config/config.toml" \ | grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"` \ | jq ."SyncInfo"."latest_block_height"
# получаем статус синхронизации ноды $ omniflixhubd status 2>&1 \ --node `cat "$HOME/.omniflixhub/config/config.toml" \ | grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"` \ | jq ."SyncInfo"."catching_up" # 'true' - нода синхронизируется, 'false' - нода синхронизирована
# посмотреть информацию о валидаторе $ omniflixhubd query staking \ validator $(omniflixhubd keys show $NICKNAME --bech=val -a) \ --node `cat "$HOME/.omniflixhub/config/config.toml" \ | grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"`
# локальный эксплорер $ omniflixhubd q staking validators --node `cat "$HOME/.omniflixhub/config/config.toml" \ | grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"` \ -o json --limit=1000 \ | jq '.validators[] | select(.status=="BOND_STATUS_BONDED")' \ | jq -r '.tokens + " - " + .description.moniker' | sort -gr | nl
# выйти из 'тюрьмы' $ omniflixhubd tx slashing unjail \ --chain-id="flixnet-3" \ --gas="auto" \ --gas-prices="0.025uflix" \ --gas-adjustment="1.2" \ --node `cat "$HOME/.omniflixhub/config/config.toml" \ | grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"` \ --from=$NICKNAME
# перезапустить сервис с нодой $ sudo systemctl restart omniflixhubd
# остановить сервис с нодой $ sudo systemctl stop omniflixhubd
# проверить логи ноды $ sudo journalctl -u omniflixhubd -f
Про перенос я написал полноценную статью. Читаем внимательно и вдумчиво.
Если вы вдруг разочаровались в проекте и хотите удалить его с сервера, то можно просто разрушить/удалить сервер из личного кабинета хостинга.
Это сработает, если на сервере нет других важных нод. В случае, если вы хотите оставить сервер, но удалить конкретную ноду - приступаем к её удалению:
# останавливаем и отключаем сервис ноды $ sudo systemctl stop omniflixhubd && sudo systemctl disable omniflixhubd
# удаляем каталоги с файлами ноды $ rm -Rvf $HOME/omniflixhub $ rm -Rvf $HOME/.omniflixhub
# удаляем файл сервиса и перезагружаем демона $ sudo rm -v /etc/systemd/system/omniflixhubd.service $ sudo systemctl daemon-reload
План работы: выводим реварды за активное валидирование, проверяем баланс, ределегируем собранную награду снова на своего валидатора.
# вывести реварды за стейкинг для последующей ределегации $ omniflixhubd tx distribution withdraw-all-rewards \ --gas="auto" \ --gas-adjustment="1.5" \ --gas-prices="0.025uflix" \ --chain-id=flixnet-3 \ --node `cat "$HOME/.omniflixhub/config/config.toml" \ | grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"` \ --from=$NICKNAME
Замените условную переменную <address> на ваш omni-адрес, раскрывая кавычки.
# проверяем баланс $ omniflixhubd query bank balances <address> --denom="uflix" \ --node `cat "$HOME/.omniflixhub/config/config.toml" \ | grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"`
Где <address> - адрес, с которого производилось создание валидатора.
В amount показывает весь свободный баланс. Не советую делегировать весь баланс, помните, что каждая транзакция имеет комиссию.
# делегировать токены на своего валидатора $ omniflixhubd tx staking delegate <operator_address> "1000000uflix" \ --gas="auto" \ --gas-adjustment=1.5 \ --gas-prices="0.025uflix" \ --chain-id=flixnet-3 \ --node `cat "$HOME/.omniflixhub/config/config.toml" \ | grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"` --from=$NICKNAME
Проверяем информацию о валидаторе:
$ omniflixhubd query staking \ validator $(omniflixhubd keys show $NICKNAME --bech=val -a) \ --node `cat "$HOME/.omniflixhub/config/config.toml" \ | grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"`
мамичу за то, что родила такого гения.
@how_to_node - канал, где я выкладываю свои гайды.