Ended Events
September 8, 2021

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

Где <operator_address> - адрес для делегации:

"1000000uflix" - 1 токен.

Проверяем информацию о валидаторе:

$ omniflixhubd query staking \
validator $(omniflixhubd keys show $NICKNAME --bech=val -a) \
--node `cat "$HOME/.omniflixhub/config/config.toml" \
| grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")"`
Содержание

мамичу за то, что родила такого гения.

Содержание

@how_to_node - канал, где я выкладываю свои гайды.

Полезные ресурсы.

Крипто-кошельки автора гайда.