Evmos | Olympus Mons
⠀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% от общего предложения токенов будущей основной сети. Помимо этого, есть зависимость от количества участников — чем больше, тем больше наград от этого пула раздадут:
⠀Награды будут присваиваться в зависимости от полученных за задания очков. Задания делятся на две части:
- Для разработчиков (большая часть наград);
- Для валидаторов, которые 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)
. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/installers/golang.sh)
⠀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 ключ и скопировать его для дальнейшей установки аватара
⠀Подставить свои значения в команду для редактирования валидатора (в блокноте), выполнить её, подтвердить транзакцию и ввести пароль
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
Задания
Активные валидаторы
⠀Валидаторы, которые 2/3 времени проведения тестовой сети находились в топ 300 по делегации, имеют право получить награды в зависимости от количества полученных очков за задания. Период для выполнения заданий — всё время тестнета.
- Ретранслировать большинство IBC пакетов — 15 очков;
- Не нарушать правила консенсуса — 5;
- Не попасть в тюрьму за нарушение — 10;
- Итоговый аптайм выше 98% — 50;
- Бонус: участие в качестве валидатора первой тестовой сети — 15;
- Бонус: была отправлена первоначальная форма интереса (судя по всему та, что была в августе) — 5.
Разработчики
⠀Бо́льшая часть наград уйдёт разработчикам, способным внести вклад в развитие сети. Среди заданий есть и достаточно простые.
⠀Каждую неделю отдельная тема заданий:
Вклад сообщества
Наша команде не несёт ответственности за возможные негативные последствия, поскольку не может гарантировать безопасность использования представленных инструментов
Как сюда попасть?
⠀Чтобы попасть в этот почётный раздел необходимо написать 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
sudo systemctl restart evmosd
Полезные ссылки
Русскоязычная группа Telegram | Discord | Twitter | GitHub
Cosmovisor (EN) | Официальная документация | Explorer
Благодарности
Команда 1package — изучение проекта, написание статьи, ведение русскоязычного сообщества
Команда Let’s Node! — администрирование русскоязычного сообщества