EVMPack — Управление жизненным циклом блокчейн-проектов
Так получилось что этот проект внезапно родился пока я создавал другой.
В мире блокчейна, разработка под экосистему ethereum очень сильно развита, много смарт контрактов "готовых", которые прошли аудит, много разных инструментов таких как Slither, Foundry, Hardhat и т.д., с ними комфортно писать контракты и тестировать.
Что делать со всем этим дальше? Нет инструментов которые бы меня устроили, или я не нашел, все идет на откуп команды разработчиков, то как они построят процесс обновления смарт контрактов, аудит, безопасность и т.д.
Честно говоря, на мой взгляд тут просто какой то бардак. Используются подходы к сопровождению проектов из обычной сферы разработки, но мы же с вами работаем с распределенным компьютером EVM и работаем почему то напрямую, без операционной системы.
Давайте вспомним что должна делать операционная система для классической ЭВМ:
Управление аппаратным обеспечением
Управление файловой системой
Предоставление интерфейса пользователя
Управление процессами и программами
Обеспечение безопасности и разграничения доступа
Управление пакетами, представьте сейчас любой Linux или MacOs без систем пакетного менеджера
EVM это тот же компьютер, только операционной системы под нее нет, есть просто разбросанный набор инструментов.
EVMPack это попытка создать что то хотя бы похожее на операционную систему для EVM совместимых блокчейнов, и первое что я реализовал, это пакетный менеджер, потому что это фундамент без которого ничего дальше не сделаешь.
У нас сейчас есть условно 3 источника откуда мы можем взять какие то библиотеки:
npm - по дороге со смарт контрактами мы тащим еще много зависимостей которые вообще к контрактам не имеют никакого отношения
foundry - фактически работает с гит репозиториями, получаем пакеты как сабмодули, но опять же, тащим по дороге кучу ненужного мусора по дороге с контрактами. отсутствует контролируемая система версионирования semver, подход не удобен для работы с жизненным циклом проекта
github - те же проблемы что и в foundry
И самое главное, ни один из вариантов не дает мне использовать готовую, проверенную, задеплоиную реализацию.
Есть уже огромное кол-во контрактов которые мы могли бы использовать не деплоя их и даже не клонируя.
Допустим есть реализация ERC20(самый популярный контракт для токенов) от крупной команды OpenZeppelin, если бы эта реализация была задеплоена и адрес этой реализации проверили сообществом.
Далее я могу развернуть простой прокси контракт, который только и делает что вызывает эту проверенную реализацию, а данные я напомню если кто не в курсе хранятся в самом прокси, а функции которые с ними взаимодействуют находятся в реализации. Сам прокси контракт один, его не надо писать, просто можно сделать одну кнопку "Создать токены" и быть максимально уверенным что все будет хорошо!
А теперь давайте добавим в эту всю историю SemVer версии 2.0.0. Получится что команда из OpenZeppelin выпускает новую версию этой реализации, она проходит так же проверку сообществом, и получает галочку - "проверено", в этот момент вам прилетает уведомление что у реализации которую вы используете для своего токена вышла новая версия, она проверена и можно без опаски обновиться, почитать что там нового добавили, что исправили. Далее вы просто нажимаете кнопку обновить и все! И таких как вы может быть сотни и тысячи которые используют одну и ту же реализацию, все вы толпой уверенны что никто не взломает этот контракт и не утащит ваши кровные токены, а так же все сообщество может легко проверить что вы никого не обманываете и используете проверенную реализацию.
Вот пример как это работает если это использовать другим смарт контрактом:
А теперь давайте увеличим масштаб, теперь мы будем работать не с одним пакетом, а с 5 или больше, ведь мы захотели построить свое приложение.
Мы заходим в стор evmpack (которого пока нет, но это не на долго) и смотрим какие есть уже готовые и проверенные реализации, видим что есть удобный контракт управлением пользователей, доступом, и т.д. И далее просто собираем один контракт который будет использовать готовые реализации нужных версий, evmpack проверить совместимость, и хоба! у вас уже есть готовый бэкенд на блокчейне который готов к продакшену практически сразу и вам провести аудит нужно только одного контракта! Процесс аудита можно так же легко встроить в эту систему, потому что ваш готовый бэкенд тоже является пакетом и вы его так же публикуете с версионированием и реализацией, если вам захочется что то добавить, то вы выпускаете новый релиз реализации, и уже после того как прошли аудит снова можете обновлять.
Вот ссылка на репозиторий - https://github.com/EMVPack/core
Всю обратную связь по проекту лучше пишите на github в issue, критику тоже, потому что спорных моментов может быть много и хорошо бы делить на разные дискуссии.
В следующих постах я буду создавать большой проект с использованием этого инструмента и показывать наглядно что и как, так что цикл статей объявляется открытым!
Если кому интересно, то в ТГ канале я буду писать о проблемах по дороге разработки, объявлять о стримах на которых буду разрабатывать проект.