Завершённые
August 12, 2021

Evmos | Olympus Mons

1package & Let's Node

⠀Evmos — масштабируемый, высоко-пропускной PoS блокчейн, построенный с использованием Cosmos SDK и полностью совместимый с Ethereum.


Содержание


Информация о проекте

К содержанию

Описание

⠀Evmos — масштабируемый, высоко-пропускной Proof-of-Stake блокчейн, полностью совместимый с Ethereum. Он построен с использованием Cosmos SDK, который работает поверх консенсуса Tendermint. Подобное решение предоставляет возможность для разработчиков с обеих сторон взаимодействовать с блокчейнами практически параллельно, что позволяет использовать лучшие особенности каждого из них по максимуму.

⠀Особенности проекта:

  • Совместимость с Web3 и EVM;
  • Высокая пропускная способность благодаря Tendermint Core;
  • Горизонтальная масштабируемость с помощью IBC;
  • Быстрое завершение транзакций.

⠀Совокупность этих особенностей позволяет разработчикам из экосистемы Ethereum практически беспрепятственно развертывать смарт-контракты, позволяющие параллельно взаимодействовать с остальной экосистемой Cosmos.

Фазы

⠀На данном этапе известны следующие этапы:

  • 12 октября — середина ноября — не стимулирующая тестовая сеть;
  • 19 ноября — 10 декабря — проведение стимулирующей тестовой сети под названием Olympus Mons;
    • 19 ноября — 26 ноября — миссия «Usability»;
    • 26 ноября — 3 декабря — миссия «Tooling and UX»;
    • 3 декабря — 10 декабря — миссия «Security and Stress Testing»;
  • конец 2021 г. — начало 2022 г. — запуск основной сети.

Награды

⠀На событие выделяется пул в размере 7,5% от общего предложения токенов будущей основной сети. Помимо этого, есть зависимость от количества участников — чем больше, тем больше наград от этого пула раздадут:

  • 0-500 участников — 25%;
  • 501-1000 — 50%;
  • 1001-1500 — 75%;
  • 1501 — 100%.

⠀Награды будут присваиваться в зависимости от полученных за задания очков. Задания делятся на две части:

  • Для разработчиков (большая часть наград);
  • Для валидаторов, которые 2/3 времени проведения тестовой сети находились в топ 300 по делегации.

⠀Для получения наград будет необходимо пройти KYC верификацию.


Требования к серверу

К содержанию

По документации (VPS/VDS/DS):
4 CPU, 16 GB RAM, 500 GB SSD

⠀Думаем, что подойдёт (VPS/VDS/DS):
6 Cores, 16 GB RAM, 400 GB SSD

⠀Подходящие сервера:


Запуск

К содержанию

Подготовка

⠀Установить ноду

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/Evmos/main/multi_tool.sh)

⠀Установить GO

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/installers/golang.sh)

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

  • Автоматически загрузить новую версию бинарных файлов;
  • Остановить ноду;
  • Заменить старый бинарный файл на новый;
  • Перезапустить ноду на новой версии.

⠀Это крайне важный инструмент в контексте валидаторов в основных сетях, поскольку позволяет минимизировать время простоя сети между обновлениями бинарных файлов.

⠀Установить Cosmovisor

go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@latest; \
mv `which cosmovisor` /usr/bin

⠀Поместить бинарный файлы ноды в Cosmovisor

mkdir -p $HOME/.evmosd/cosmovisor/genesis/bin $HOME/.evmosd/cosmovisor/upgrades; \
cp `which evmosd` $HOME/.evmosd/cosmovisor/genesis/bin

⠀Придумать название ноды, запустить команду и ввести название, тем самым добавить его в систему в виде переменной

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n evmos_moniker

⠀Настроить конфиг

evmosd config chain-id evmos_9000-2
evmosd config keyring-backend file

⠀Удалить кривые конфиги

rm -rf $HOME/.evmosd/config/app.toml $HOME/.evmosd/config/config.toml

⠀Сбросить состояние валидатора

evmosd unsafe-reset-all

⠀Придумать название кошелька, запустить команду и ввести название, тем самым добавить его в систему в виде переменной

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n evmos_wallet_name

Далее выполнять тем, кто не устанавливал ноду при подачи PR в GitHub. Если вы ставите на тот же сервер,

⠀Инициализировать ноду

evmosd init "$evmos_moniker" --chain-id evmos_9000-2

Сделать резервную копию папки с настройками, сохранив себе на ПК (команда отображает путь)

echo $HOME/.evmosd/config/

⠀Восставить кошелёк из старой сети, если есть

evmosd keys add "$evmos_wallet_name" --recover --keyring-backend file

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

⠀Или создать новый, если нет

evmosd keys add "$evmos_wallet_name" --keyring-backend file

⠀Необходимо задать пароль, запомнить его и

Сохранить вывод команды в надёжном месте

Продолжение

Запуск ноды

⠀Скачать файл генезиса

wget -qO $HOME/.evmosd/config/genesis.json https://raw.githubusercontent.com/tharsis/testnets/main/olympus_mons/genesis.json

⠀Отредактировать конфиг набором команд

sed -i -e "s%^moniker *=.*%moniker = \"$evmos_moniker\"%; "\
"s%^seeds *=.*%seeds = \"`wget -qO - https://raw.githubusercontent.com/tharsis/testnets/main/olympus_mons/seeds.txt | tr '\n' ',' | sed 's%,$%%'`\"%; "\
"s%^persistent_peers *=.*%persistent_peers = \"847e72f31e1f87e8059231b4b9e3302989c22d3a@5.189.156.65:26656,`wget -qO - https://raw.githubusercontent.com/SecorD0/Evmos/main/peers.txt | tr '\n' ',' | sed 's%,$%%'`\"%; " $HOME/.evmosd/config/config.toml

⠀Если на сервере стоит ещё одна нода, использующая Tendermint (Stratos, Findora и пр.), то дополнительно настроить конфиг в соответствии со статьёй

⠀Создать сервисный файл

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

[Service]
User=$USER
Environment="DAEMON_NAME=evmosd"
Environment="DAEMON_HOME=$HOME/.evmosd"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=true"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
ExecStart=`which cosmovisor` start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

⠀Запустить сервис

sudo systemctl daemon-reload
sudo systemctl enable evmosd
sudo systemctl restart evmosd

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

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n evmos_log -v "sudo journalctl -fn 100 -u evmosd" -a

⠀Добавить команду для просмотра информации о ноде в систему в виде переменной

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n evmos_node_info -v ". <(wget -qO- https://raw.githubusercontent.com/SecorD0/Evmos/main/node_info.sh) -l RU 2> /dev/null" -a


Побег из тюрьмы

К содержанию

⠀Чтобы узнать, находится ли нода в тюрьме, необходимо использовать команду

evmos_node_info

⠀Если нода находится в заточении, то необходимо выполнить команду, чтобы выбраться из него

evmosd tx slashing unjail \
  --from "$evmos_wallet_name" \
  --chain-id evmos_9000-2 \
  --node `grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")" $HOME/.evmosd/config/config.toml`

⠀Через некоторое время нода должна выбраться из заточения


Установка аватара

К содержанию

⠀Зарегистрировать или авторизоваться на сайте KeyBase

⠀Подтвердить почту

⠀⠀Установить аватар

⠀Сгенерировать PGP ключ

⠀Нажать на PGP ключ и скопировать его для дальнейшей установки аватара

⠀Подставить свои значения в команду для редактирования валидатора (в блокноте), выполнить её, подтвердить транзакцию и ввести пароль

evmosd tx staking edit-validator \
  --moniker "ANY_NAME" \
  --identity "1A1A2B2B3C3C4D4D" \
  --details "ANY_TEXT" \
  --gas 800000 \
  --gas-prices 0.025aphoton \
  --from "$evmos_wallet_name" \
  --node `grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")" $HOME/.evmosd/config/config.toml` \
  --chain-id evmos_9000-2
  • moniker — можно указать как старый, так и новый;
  • identity — скопированный ранее PGP ключ;
  • details — любое описание валидатора.

Задания

К содержанию

Официальная статья

Активные валидаторы

⠀Валидаторы, которые 2/3 времени проведения тестовой сети находились в топ 300 по делегации, имеют право получить награды в зависимости от количества полученных очков за задания. Период для выполнения заданий — всё время тестнета.

⠀Задания:

  • Ретранслировать большинство IBC пакетов — 15 очков;
  • Не нарушать правила консенсуса — 5;
  • Не попасть в тюрьму за нарушение — 10;
  • Итоговый аптайм выше 98% — 50;
  • Бонус: участие в качестве валидатора первой тестовой сети — 15;
  • Бонус: была отправлена первоначальная форма интереса (судя по всему та, что была в августе) — 5.

Разработчики

⠀Бо́льшая часть наград уйдёт разработчикам, способным внести вклад в развитие сети. Среди заданий есть и достаточно простые.

⠀Каждую неделю отдельная тема заданий:

  • 19 ноября — 26 ноября — миссия «Usability».
  • 26 ноября — 3 декабря — миссия «Tooling and UX».
  • 3 декабря — 10 декабря — миссия «Security and Stress Testing»;

Вклад сообщества

К содержанию

Наша команде не несёт ответственности за возможные негативные последствия, поскольку не может гарантировать безопасность использования представленных инструментов

Как сюда попасть?

⠀Чтобы попасть в этот почётный раздел необходимо написать SecorD’у сообщение с информацией об инструменте:

  • Название проекта;
  • Краткое название в 2-3 слова (будет использоваться как заголовок);
  • Описание, которое будет добавлено в статью (зачем нужно, функционал, как использовать, другая полезная информация, желательно со скриншотами).

⠀Что это даёт?

  • Пользу сообществу;
  • Возможность заявить о себе;
  • Дополнительную возможность представления доказательств контрибуции в различных проектах.

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

К содержанию

⠀Доступные переменные (при использовании убрать echo)

echo $evmos_moniker
echo $evmos_wallet_name
echo $evmos_wallet_address

⠀Посмотреть лог ноды

evmos_log
sudo journalctl -fn 100 -u evmosd

⠀Посмотреть информацию о ноде

evmos_node_info
. <(wget -qO- https://raw.githubusercontent.com/SecorD0/Evmos/main/node_info.sh) -l RU

⠀Баланс с кучей нулей

evmosd query bank balances `evmosd keys show "$evmos_wallet_name" -a` --node "http://167.86.86.48:26657/"

⠀Список валидаторов

evmosd query staking validators -o json --limit 1500 --node "http://167.86.86.48:26657/" | jq '.validators[] | select(.status=="BOND_STATUS_BONDED")' | jq -r -c '((.tokens|tonumber/1000000000000000000)|tostring) + " " + .description.moniker' | sort -gr | nl | awk '{printf("%3d\t", $1); printf("%4.5f\t", $2); printf("%s %s %s %s\n", $3, $4, $5, $6)}'

⠀Создание валидатора

evmosd tx staking create-validator \
  --amount 1000000000000aphoton \
  --pubkey `evmosd tendermint show-validator` \
  --moniker "$evmos_moniker" \
  --from "$evmos_wallet_name" \
  --chain-id evmos_9000-1 \
  --commission-rate 0.10 \
  --commission-max-rate 0.20 \
  --commission-max-change-rate 0.01 \
  --min-self-delegation 1000000 \
  --gas 800000 \
  --gas-prices 0.025aphoton \
  --keyring-backend file

⠀Делегирование токенов

evmosd tx staking delegate "VAL_ADDR" "NUMBERaphoton" \
  --chain-id evmos_9000-2 \
  --from "$evmos_wallet_name" \
  --fees 200aphoton \
  --gas 800000 \
  --keyring-backend file \
  --node `grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")" $HOME/.evmosd/config/config.toml` \
  -y
  • VAL_ADDR — адрес валидатора, можно узнать в команде evmos_node_info;
  • NUMBER — количество токенов для делегации, 1 photon = 10^18 aphoton.

⠀Перезапуск ноды

sudo systemctl restart evmosd

Полезные ссылки

К содержанию

Русскоязычная группа Telegram | Discord | Twitter | GitHub

Cosmovisor (EN) | Официальная документация | Explorer


Благодарности

К содержанию

Команда 1package — изучение проекта, написание статьи, ведение русскоязычного сообщества

Команда Let’s Node! — администрирование русскоязычного сообщества

Выразить благодарность