darkrainkz

darkrainkz

На Пикабу
Дата рождения: 13 апреля
1029 рейтинг 177 подписчиков 13 подписок 15 постов 3 в горячем
Награды:
10 лет на Пикабу
3

Прокси контракты, как они работают, какие бывают и как это работает в EVMPack. Часть 1

Прокси-контракты: Сравнение подходов OpenZeppelin и EVMPack

Обновление смарт-контрактов в mainnet - задача нетривиальная. Развернутый код неизменяем, и любая ошибка или необходимость добавить функционал требуют сложных и рискованных миграций. Для решения этой проблемы используется паттерн "прокси", позволяющий обновлять логику контракта, сохраняя его адрес и состояние.

Что такое прокси-контракт?

Прокси-контракт - это, по сути, "пустая" обертка с очень важной деталью - кастомной `fallback` функцией. Эта функция - фундаментальная часть EVM, она автоматически вызывается, когда кто-то обращается к контракту с вызовом, не соответствующим ни одной из явно объявленных функций.

Вся магия происходит именно здесь. Когда вы вызываете, например, `myFunction()` на адресе прокси, EVM не находит такой функции в самом прокси. Срабатывает `fallback`. Внутри этой функции находится низкоуровневый код (inline assembly), который берет все данные вашего вызова (`calldata`) и перенаправляет их с помощью `delegatecall` на адрес "логического" контракта.

Особенность `delegatecall` в том, что код логического контракта исполняется, но все изменения состояния (`storage`) происходят в контексте прокси-контракта. Таким образом, прокси хранит данные, а логический контракт - код. Для обновления достаточно просто указать прокси новый адрес реализации.

Классический подход: Hardhat + OpenZeppelin

Самый популярный стек для разработки - это Hardhat в связке с плагинами от OpenZeppelin. Плагин hardhat-upgrades значительно упрощает работу с прокси, абстрагируясь от ручного развертывания всех необходимых компонентов.

Рассмотрим реальный код из теста для контракта Blog.

Пример 1: Процесс, управляемый с клиента

Вот как выглядит развертывание прокси с помощью плагина в JavaScript-тесте:

Прокси контракты, как они работают, какие бывают и как это работает в EVMPack. Часть 1

Это решение удобно, но его фундаментальная особенность в том, что вся логика оркестрации находится на стороне клиента, в JavaScript. Выполнение скрипта инициирует серию транзакций. Этот подход хорошо подходит для администрирования или разработки, но не для предоставления возможности создания экземпляров контракта другим пользователям или смарт-контрактам.

Ончейн-подход: EVMPack

EVMPack переносит логику оркестрации ончейн, действуя как ончейн-менеджер пакетов, аналогично npm или pip.

Пример 2: Ончейн-фабрика EVMPack

Предположим, разработчик Blog зарегистрировал свой пакет в EVMPack под именем "my-blog". Любой пользователь или другой смарт-контракт может создать экземпляр блога одной транзакцией через фабрику EVMPackProxyFactory:

Прокси контракты, как они работают, какие бывают и как это работает в EVMPack. Часть 1

Важно понимать, что вызывать usePackageRelease можно не только из другого контракта. Представьте себе веб-интерфейс (dApp), где пользователь нажимает кнопку "Создать мой блог". Ваш JavaScript-клиент, используя ethers.js, делает одну транзакцию - вызов этой функции. В результате пользователь с ходу получает готовое "приложение" на стороне блокчейна - его личный, обновляемый экземпляр контракта. К тому же, это очень экономно по газу, так как каждый раз разворачивается только легковесный прокси-контракт (и опционально его админ), а не вся тяжеловесная логика реализации. Да, останется задача отрисовать для него UI, но это уже другая история. Главное - мы заложили мощную и гибкую базу.

Процесс, который ранее был в JS-скрипте, теперь находится ончейн, стандартизирован и доступен для всех участников сети.

Сравнение подходов

Прокси контракты, как они работают, какие бывают и как это работает в EVMPack. Часть 1

А как обновляться?

Процесс обновления так же прост, но устроен хитрее, чем можно было предположить. Владелец прокси вызывает функцию upgradeAndCall на своем персональном контракте EVMPackProxyAdmin (который фабрика создала для него автоматически).

Этот контракт-админ не обращается к реестру EVMPack напрямую. Вместо этого он дает команду самому прокси-контракту обновиться до указанной версии.

Прокси контракты, как они работают, какие бывают и как это работает в EVMPack. Часть 1

Как и в случае с созданием, процесс полностью происходит ончейн, он безопасен (вызывается только владельцем) и не требует запуска каких-либо внешних скриптов.

Такая архитектура также дает важные преимущества в безопасности. Во-первых, есть четкое разделение ролей: простой контракт-админ отвечает только за авторизацию обновления, что минимизирует его поверхность атаки. Во-вторых, так как прокси сам знает свое имя пакета и ищет реализацию по версии, это защищает владельца от случайной или злонамеренной ошибки - невозможно обновить прокси до реализации от другого, несовместимого пакета. Владелец оперирует понятными версиями, а не сырыми адресами, что снижает риск человеческой ошибки.

Преимущества ончейн-фабрики

Подход EVMPack превращает создание прокси в публичный, компонуемый ончейн-сервис. Это создает новые возможности:

  • DeFi протоколы, позволяющие пользователям создавать изолированные обновляемые хранилища.

  • DAO, которые могут автоматически разворачивать новые версии продуктов по результатам голосования.

  • NFT-проекты, где каждая NFT может быть прокси с кастомизируемой логикой.

Это делает ончейн-код по-настоящему переиспользуемым, по аналогии с npm-пакетами.

Итог

Плагин hardhat-upgrades - это эффективный инструмент, решающий задачу для разработчика.

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

В следующей части разберём Beacon прокси

Следить за активной разработкой инструмента можно на гитхабе или в ТГ канале, но на него не надо подписываться

Показать полностью 4
0

Анонс: Прокси контракты, как они работают, какие бывают и как это работает в EVMPack

Анонс: Прокси контракты, как они работают, какие бывают и как это работает в EVMPack

Сегодня я на стриме в 21:00 разберу то как работают изменяемые смарт контракты, покажу разные реализации и стандарты которые все используют, почему текущим решениям нельзя доверять на мой взгляд и покажу свое решение.

P.S. Параллельно к стримам я буду публиковать текстовую версию, но она будет без срока, т.к. текстовая версия требует гораздо больше времени.

ТГ для удобства. Я не ограничиваю контент, на Пикабу буду публиковать все важное что и в ТГ, не подписывайтесь если любите Пикабу

Показать полностью
1

32 Ampere & EVMPack. Использование блокчейна в коммерческом продукте

32 Ampere & EVMPack. Использование блокчейна в коммерческом продукте

Сегодня будет стрим в 21:00

Представление 2-х проектов:

  • 32 Ampere - Open Source протокол для зарядной инфраструктуры с запуском на EVM совместимой блокчейн инфраструктуре

  • EVMPack - Управление жизненным циклом блокчейн проекта

Показать полностью

Стартует реалити шоу - запуск блокчейн стартапа

Итак, прошлым постом я кратко представил новый инструмент который будет мне помогать запускать реальный проект который я делаю уже давно. Он уже собран без использования EVMPack, написаны все тесты и сделано ещё много чего. Теперь я готов пошагово показать разработку всю от А до Я с испоользованием EVMPack. И речь идёт не только о программной части, будет 2 режима:

1) Маркетинг мод - тут я буду показывать стратегию продукта, как я её разрабатываю, на что опираюсь, какие проблемы решаем, о чем продукт, зачем нужен и в чем выгода

2) Кодинг мод - в этом режиме я буду разрабатывать проект который будет соответствовать требованиям первого режима, строить архитектуру, писать дополнительные инструменты которых не хватает.

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

Проект будет полностью открытым, в таком формате я думаю ещё никто не делал.

Моя цель - найти единомышленников, доказать работоспособность подхода в разработке и реализации продукта, научить людей не бояться блокчейна, разбавить негатив насчёт блокчейна созданный инфоцыганами.

Единственное что сейчас от сообщества хотелось бы узнать, это время начала стрима, сам стрим будет продолжительностью 2-4 часа, будет все весьма активно, все будет в записях. Если кто занимается стримами, накидайте советов по опыту, тут я новичок.

Тема первого стрима: Использование блокчейн технологии в коммерческом продукте. Введение. Знакомство. [Маркетинг мод]

Дата: 9 октября

Когда всем удобно
Всего голосов:
Показать полностью 1
2

EVMPack — Управление жизненным циклом блокчейн-проектов

Так получилось что этот проект внезапно родился пока я создавал другой.

В мире блокчейна, разработка под экосистему ethereum очень сильно развита, много смарт контрактов "готовых", которые прошли аудит, много разных инструментов таких как Slither, Foundry, Hardhat и т.д., с ними комфортно писать контракты и тестировать.

Что делать со всем этим дальше? Нет инструментов которые бы меня устроили, или я не нашел, все идет на откуп команды разработчиков, то как они построят процесс обновления смарт контрактов, аудит, безопасность и т.д.

Честно говоря, на мой взгляд тут просто какой то бардак. Используются подходы к сопровождению проектов из обычной сферы разработки, но мы же с вами работаем с распределенным компьютером EVM и работаем почему то напрямую, без операционной системы.

Давайте вспомним что должна делать операционная система для классической ЭВМ:

  • Управление аппаратным обеспечением

  • Управление файловой системой

  • Предоставление интерфейса пользователя

  • Управление процессами и программами

  • Обеспечение безопасности и разграничения доступа

  • Управление пакетами, представьте сейчас любой Linux или MacOs без систем пакетного менеджера

EVM это тот же компьютер, только операционной системы под нее нет, есть просто разбросанный набор инструментов.

EVMPack это попытка создать что то хотя бы похожее на операционную систему для EVM совместимых блокчейнов, и первое что я реализовал, это пакетный менеджер, потому что это фундамент без которого ничего дальше не сделаешь.

У нас сейчас есть условно 3 источника откуда мы можем взять какие то библиотеки:

  1. npm - по дороге со смарт контрактами мы тащим еще много зависимостей которые вообще к контрактам не имеют никакого отношения

  2. foundry - фактически работает с гит репозиториями, получаем пакеты как сабмодули, но опять же, тащим по дороге кучу ненужного мусора по дороге с контрактами. отсутствует контролируемая система версионирования semver, подход не удобен для работы с жизненным циклом проекта

  3. github - те же проблемы что и в foundry

И самое главное, ни один из вариантов не дает мне использовать готовую, проверенную, задеплоиную реализацию.

Есть уже огромное кол-во контрактов которые мы могли бы использовать не деплоя их и даже не клонируя.

Допустим есть реализация ERC20(самый популярный контракт для токенов) от крупной команды OpenZeppelin, если бы эта реализация была задеплоена и адрес этой реализации проверили сообществом.

Далее я могу развернуть простой прокси контракт, который только и делает что вызывает эту проверенную реализацию, а данные я напомню если кто не в курсе хранятся в самом прокси, а функции которые с ними взаимодействуют находятся в реализации. Сам прокси контракт один, его не надо писать, просто можно сделать одну кнопку "Создать токены" и быть максимально уверенным что все будет хорошо!

А теперь давайте добавим в эту всю историю SemVer версии 2.0.0. Получится что команда из OpenZeppelin выпускает новую версию этой реализации, она проходит так же проверку сообществом, и получает галочку - "проверено", в этот момент вам прилетает уведомление что у реализации которую вы используете для своего токена вышла новая версия, она проверена и можно без опаски обновиться, почитать что там нового добавили, что исправили. Далее вы просто нажимаете кнопку обновить и все! И таких как вы может быть сотни и тысячи которые используют одну и ту же реализацию, все вы толпой уверенны что никто не взломает этот контракт и не утащит ваши кровные токены, а так же все сообщество может легко проверить что вы никого не обманываете и используете проверенную реализацию.

Вот пример как это работает если это использовать другим смарт контрактом:

EVMPack — Управление жизненным циклом блокчейн-проектов

А теперь давайте увеличим масштаб, теперь мы будем работать не с одним пакетом, а с 5 или больше, ведь мы захотели построить свое приложение.

Мы заходим в стор evmpack (которого пока нет, но это не на долго) и смотрим какие есть уже готовые и проверенные реализации, видим что есть удобный контракт управлением пользователей, доступом, и т.д. И далее просто собираем один контракт который будет использовать готовые реализации нужных версий, evmpack проверить совместимость, и хоба! у вас уже есть готовый бэкенд на блокчейне который готов к продакшену практически сразу и вам провести аудит нужно только одного контракта! Процесс аудита можно так же легко встроить в эту систему, потому что ваш готовый бэкенд тоже является пакетом и вы его так же публикуете с версионированием и реализацией, если вам захочется что то добавить, то вы выпускаете новый релиз реализации, и уже после того как прошли аудит снова можете обновлять.

Вот ссылка на репозиторий - https://github.com/EMVPack/core

Всю обратную связь по проекту лучше пишите на github в issue, критику тоже, потому что спорных моментов может быть много и хорошо бы делить на разные дискуссии.

В следующих постах я буду создавать большой проект с использованием этого инструмента и показывать наглядно что и как, так что цикл статей объявляется открытым!

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

Показать полностью 1
10

Все забили на производительность ПО, Яндекс Музыка и Музыка ВК подталкивают к пиратству

Я тот человек которого раздражают тормоза в системе или где еще либо. А когда мой ноут внезапно начинает греться без причины, я сразу начинаю ее выяснять, так получилось и в этой ситуации.

Слушаю я свой любимый D&B подкаст Neuropunk и понимаю что ладошки потеют, смотрю системный монитор, это опять браузер, я открываю диспетчер задач и вижу такую картину:

Что? О_о

Что? О_о

Задача плеера простая, играть музыку, зачем ему столько ресурсов? Почему столько воркеров?

Ладно думаю, послушаю старый добрый металл на Яндекс Музыке и ситуация такая же, даже хуже!

Да, памяти жрет поменьше, но процессор бедолага)

Сбросил кэш, ситуация не изменилась, написал в поддержку Яндекса, сказали что отправили тех специалистам, ок. Месяц прошел, ситуация не поменялась, фидбэка никакого нет, а жара на улице добавляет дискомфорта и ладошки уже не просто мокрые, а пальцы поскальзываются на клавиатуре.

В общем вот решение, на текущий мемент:
1) Ставим soulseek, там легко находим музыку и качаем, это p2p обменник музыкой с поиском.

2) Качаем музло

3) Включаем встроенный Lollypop в линуксе

Минусы:

- надо качать

- иногда попадаются в поиске альбомы с музыкой со всякими ремиксами допом, главное не скачать лишнего

Плюсы:

- Ты пират!

- загрузка ЦП

- Звук лучше О_о


Может свой сделать p2p плеер но без кидалова исполнителей?

ТГ

Показать полностью 4
10

Пропал бас, может и мой найдется

Пропал бас, может и мой найдется

Санкт Петербург. Бас пропал давно, уже год. Этот бас мне подарила жена, он очень мне дорог, я очень полюбил этот инструмент. До сих пор просматриваю Авито и все такое в надежде его найти.

Скребёт душу.

Один бас уже нашли, с кем черт не шутит, может и мой найдется. Я готов его купить.

Японский старый Fender годов 70-х судя по базе, давно смотрел. К сожалению его номер у меня не сохранился (

Показать полностью 1
561

Новый интернет зачем и когда? WEB 3.0

Новый интернет зачем и когда? WEB 3.0

Чтобы понять что такое WEB 3.0 надо для начала понять что из себя представляет первая и вторая версия. Для тех кто вообще не понимает что такое WEB, прошу в начале сходить на википедию.


Первая версия

Создается в сети интернет ресурс, где информацию размещают только создатели этого ресурса. Пример: газета, сайт администрации президента, веб книга и т.д.

С таким подходом много информации ресурс не сможет генерировать, т.к. той же газете чтобы наращивать количество публикаций нужно будет нанимать больше авторов которым надо платить деньги.


Вторая версия

Расширяет первую версию добавляя возможность посетителям интернет ресурса создавать контент и взаимодействовать с ним. Теперь интернет ресурсу не нужно иметь в штате своих редакторов, пользователи сами создают контент, тем самым привлекая новых пользователей. Добавление элемента общения, комментарии, личные сообщения и т.д. увеличивают вовлечённость пользователей в ресурс. Вроде бы все хорошо, все мы счастливы, или нет?


Корневая проблема текущей версии интернета в том что во время передачи информации всегда происходит через 3-ю сторону, эта третья сторона полностью контролирует информацию, она ее может изменить, удалить, заблокировать доступ без объяснения причин. Также интернет ресурс зарабатывает на мне показывая рекламу. Только вчера написал пост про блокчейн, так мне сразу реклама по криптовалюте пошла из всех щелей.

Это плата за “бесплатное” пользование интернет ресурсом, т.е. я сейчас пишу пост, тысячи людей его читают, а интернет ресурс зарабатывает на мне.


С каждым днем в вебе у нас все меньше свободы, мы не контролируем ту информацию которую нам выдают и которую мы сами производим.

Многих такое положение дел устраивает, меня частично тоже, но только потому что пока еще нет достойных альтернатив.

Пока в текущем вебе все сильнее закручиваются гайки огромное кол-во ребят строят WEB 3.0


WEB 3.0

Все предыдущие версии имели один общий недостаток - централизация.

Третья версия пытается использовать децентрализованную модель. На данный момент еще не устоялась до конца та модель которой будут пользоваться большинство людей, можно сказать что на данный момент все мы имеем пока только бета версию.


Сейчас все данные пикабу хранятся на нескольких серверах и нет никакой гарантии что данные там никто не подменит. В случае с пикабу это не так критично, тут развлекательный контент. Но что если это жизненно важная информация, допустим баланс вашего счета в банке, система идентификации гражданина или твой аккаунт Youtube где у тебя огромное кол-во подписчиков?


Децентрализация подразумевает что третьей стороны либо не существует, либо ею владеет огромное сообщество. Хороший пример децентрализации являются торренты, у нас нет сервера который бы хранил фильм или игру, вы качаете файл от множества участников.


А теперь представьте что мы имеем децентрализованные пикабу, инстаграм, youtube и т.д. Твой аккаунт никто не может удалить, деньги заблокировать, нельзя собрать детальные метрики для показа рекламы и т.д.


Чтобы это реализовать нужно начинать практически все сначала, потому что даже доменом pikabu.ru по факту владеет REGRU, понятное дело что забирать домен у владельца никто не будет, но физически такая возможность есть. Кто знает, может придет режим который сделает все интернет ресурсы государственными:)))


Также остается много нерешенных юридических вопросов, потому что сейчас РКН может попросить администрацию пикабу удалить мой пост и она это сделает, а в новой версии так не получится, поэтому это развивается не так просто и быстро.


Государства не понимают что с этим делать, только они взяли под контроль текущий интернет, как готовится новая версия. Так что нас ждет очень интересный мир в будущем.


Это было введение в серию постов, дальше я буду рассказывать про Blockchain, основах криптографии, смарт контрактах, сетях и других элементах которые готовят нам новый децентрализованный веб. Подписывайтесь, будет интересно:)


Telegram: Цифровое мышление

Показать полностью
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества