Архитектура и проблемы модульного счета смарт-контрактов

СреднийJan 17, 2024
Эта статья представляет собой исследование архитектуры счетов модульного смарт-контракта и его проблем.
Архитектура и проблемы модульного счета смарт-контрактов

Введение

Переход от счетов, принадлежащих внешним пользователям (Externally Owned Accounts, EOA), к счетам смарт-контрактов (Smart Contract Accounts, SCA) набирает обороты, и его поддержали многие энтузиасты, включая самого Виталика. Несмотря на волнение, применение SCA не так широко распространено, как EOA. Основными из них являются проблемы, связанные с медвежьими рынками, миграцией, проблемами с подписанием контрактов, накладными расходами на газ и, что самое важное, инженерными трудностями.

Самое значительное преимущество Account Abstractions (AA) - это возможность использовать код для настройки функциональности. Однако одной из основных инженерных проблем является невзаимозаменяемость функциональных возможностей AA, а фрагментация препятствует интеграции и открывает двери для блокировки производителей. Кроме того, обеспечение безопасности при одновременном обновлении и создании новых функций может быть сложной задачей.

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

Прочитав эту статью, читатели получат представление о:

  1. Что такое модульная абстракция счетов
  2. Как аккаунт взаимодействует с модулями
  3. Какова последовательность вызова модулей
  4. Как находить и проверять модули открытым способом

Краткий обзор АА

Ландшафт SCA

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

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

  1. Уровень протокола: Некоторые протоколы сами обеспечивают встроенную поддержку абстракции счетов, например, транзакции ZKsync следуют одному и тому же потоку, будь то из EOA или SCA, который использует единый мемпул и поток транзакций для поддержки AA, а Starknet убрал EOA, и все счета являются SCA, и у них есть встроенные кошельки для смарт-контрактов, такие как Argent.
  2. Консенсус-уровень: Для Ethereum и эквивалентных ему L2, ERC4337 вводит отдельную точку входа для транзакций, чтобы поддерживать AA без изменения уровня консенсуса. Такие проекты, как Stackup, Alchemy, Etherspot, Biconomy, Candide и Plimico, создают инфраструктуру бандлеров, а многие другие, такие как Safe, Zerodev, Etherspot и Biconomy, создают стек и SDK.

👉 Если Вы не знакомы с AA или ERC4337, ознакомьтесь с предыдущим исследованием SevenX здесь.


Дилемма принятия SCA

Тема абстрагирования счетов (Account Abstraction, AA) обсуждается с 2015 года, а в этом году она еще больше выдвинулась на первый план благодаря проекту ERC4337. Однако количество развернутых учетных записей смарт-контрактов все еще меркнет по сравнению с EOA.

Давайте разберемся в этой дилемме:

  1. Влияние медвежьего рынка:
    Несмотря на то, что AA предоставляет такие преимущества, как бесшовный вход в систему и абстрагирование от газа, преобладающий медвежий рынок состоит в основном из образованных пользователей EOA, а не новых, поэтому у dApps и кошельков нет стимула. Несмотря на это, ведущие приложения все еще находятся на пути к внедрению AA, например, Cyberconnect совершает около 360 000 UserOps (транзакций AA) в месяц, только внедрив свою систему AA и решение для работы без газа.
  2. Препятствия на пути миграции:
    Для кошельков и приложений, которые накапливают пользователей и хранят активы в EOA, безопасная и удобная миграция активов остается сложной задачей. Тем не менее, такие инициативы, как EIP-7377, позволяют EOA инициировать одноразовую операцию миграции.
  3. Проблема подписи:
    Сам смарт-контракт, естественно, не может подписывать сообщения, поскольку он не обладает закрытым ключом, как EOA. Усилия, подобные ERC1271, делают это возможным, но подписание сообщений не будет работать до первой транзакции, что создает проблемы для кошельков, использующих контрфактическое развертывание. А ERC-6492, предложенная компанией Ambire, является обратно совместимым преемником ERC-1271, который потенциально решает предыдущую проблему.
  4. Газовые накладные расходы:
    Развертывание, моделирование и выполнение SCA влечет за собой более высокие затраты по сравнению со стандартными EOA. Это становится сдерживающим фактором для усыновления. Тем не менее, для снижения этих затрат было проведено несколько тестов, например, развязка создания учетной записи от операций пользователя, а также отказ от проверки соли и существования учетной записи.
  5. Инженерные трудности:
    Команда ERC-4337 создала репо eth-infinitism, чтобы предоставить разработчикам базовую реализацию. Однако, когда мы переходим к более тонким или специфическим функциям для различных случаев использования, интеграция и декодирование становятся сложной задачей.

В этой статье мы рассмотрим проблему №5: инженерные трудности.

🤔️


Модульный счет смарт-контрактов для решения инженерных проблем

Более подробно о трудностях инженерной мысли:

  1. Фрагментация:
    Функции теперь включаются различными способами, будь то встроенные в конкретные SCA или независимые системы плагинов. Каждый из них следует своему стандарту, заставляя разработчиков решать, какие платформы поддерживать. Это приводит к потенциальной блокировке платформы или избыточным усилиям.
  2. Безопасность:
    Хотя гибкость в выборе учетных записей и функций дает свои преимущества, она может усилить проблемы безопасности. Функции могут проверяться коллективно, но отсутствие независимых оценок может повысить риск уязвимости учетных записей.
  3. Возможность обновления:
    По мере развития функций важно сохранять возможность их добавления, замены или удаления. Развертывание существующих функций при каждом обновлении создает определенные сложности.

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

Эти термины сходятся в единой концепции: Построение модульной архитектуры абстракции счетов (Modular AA).

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

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


Модульная структура: Основной аккаунт и модули

Как счет призывает модули к реализации функций

Делегатский вызов и договор о доверенности

Внешний вызов и вызов делегата:

О delegateCall

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

Контракт прокси и делегатВызов

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

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

Безопасная архитектура

Безопасная архитектура

Что такое безопасность:

Safe - это ведущая модульная инфраструктура смарт-счетов, разработанная для обеспечения проверенной в боях безопасности и гибкости, она дает разработчикам возможность создавать разнообразные приложения и кошельки. Примечательно, что многие команды строят на основе Safe или вдохновляются им. Компания Biconomy запустила свой счет, расширив систему Safe с помощью нативных мультиподписей 4337 и 1/1. Заключив более 164 000 контрактов на сумму свыше 30,7 млрд. долларов, компания Safe, без сомнения, является ведущей в космической отрасли.

Что такое структура Safe

  1. Контракт безопасного счета: основной прокси-контракт (Stateful)
    Безопасный счет - это прокси-контракт, потому что он делегирует вызов контракта-одиночки. Безопасный счет содержит владельцев, порог и адреса реализации - все они задаются в качестве переменных прокси, определяя его состояние.
  2. Контракт Singleton: Интеграционный концентратор (Stateless)
    Синглтон обслуживает учетную запись Safe, интегрирует и определяет различные интеграции, включая плагин, хук, обработчик функций и валидатор подписи.
  3. Контракт на модуль: пользовательская логика и функции:
    Модули - это мощный инструмент. Плагины как модульный тип могут определять различные функции, такие как потоки платежей, механизмы восстановления и сеансовые ключи, а также могут служить мостом между web2 и web3, получая данные вне цепи. Другие модули, такие как Hook, служат для обеспечения безопасности, а Function Handler отвечает на любые команды.

Что происходит, когда мы принимаем Безопасное:

  1. Обновляемые контракты:
    Развертывание нового синглтона необходимо всякий раз, когда появляются новые плагины. Пользователи сохраняют за собой право обновить свой Safe до желаемой версии, соответствующей их предпочтениям и требованиям.
  2. Составные и многократно используемые модули:
    Модульная природа плагинов дает разработчикам возможность создавать функциональные возможности самостоятельно. Затем они могут свободно выбирать и комбинировать эти плагины в зависимости от своих задач, что способствует созданию максимально настраиваемого подхода.

ERC-2535 Diamond Proxies

ERC2535 Diamond Architecture

О ERC2535, алмазных прокси:

ERC2535 стандартизирует алмазы - модульную систему смарт-контрактов, которая может быть модернизирована/расширена после развертывания и практически не имеет ограничений по размеру. До сих пор многие команды вдохновлялись им, например, Zerodev's Kernel или Soul Wallet's experiment.

Что такое алмазная структура:

  1. Контракт Diamond: основной прокси-контракт (Stateful) Diamond - это прокси-контракт, который вызывает функции из своих реализаций, используя delegatecall.
  2. Контракт модуля/плагина/фасета: пользовательская логика и функции (Stateless) Модуль или так называемый фасет - это контракт без статусов, который может развернуть свои функции на одном или нескольких бриллиантах. Они представляют собой отдельные, независимые контракты, которые могут совместно использовать внутренние функции, библиотеки и переменные состояния.

Что происходит, когда мы усыновляем Алмаза:

  1. Модернизируемые контракты: Diamond предоставляет систематический способ изолировать различные плагины, соединять их вместе и обмениваться данными между ними, а также напрямую добавлять/заменять/удалять любой плагин с помощью функции diamondCut. Количество плагинов, которые можно добавить к алмазам со временем, не ограничено.
  2. Модульный и многократно используемый плагин: Развернутый плагин может быть использован любым количеством бриллиантов, что значительно снижает затраты на развертывание.

Разница между Safe Smart Account и Diamond Approach:

Архитектуры Safe и Diamond имеют много сходств: обе они опираются на прокси-контракты в своей основе и ссылаются на логические контракты, чтобы добиться возможности обновления и модульности.

Тем не менее, основное различие заключается в работе с логическими контрактами. Вот более подробный обзор:

  1. Гибкость:
    В контексте включения новых плагинов, Safe требует перераспределения контракта Singleton для реализации изменений в Proxy. В отличие от этого, Diamond достигает этого напрямую с помощью функции diamondCut в своем прокси. Такое различие в подходах приводит к тому, что Safe сохраняет более высокую степень контроля, а Diamond обеспечивает повышенную гибкость и модульность.
  2. Безопасность:
    delegatecall, используемый пока в обеих структурах, может позволить внешнему коду манипулировать хранением основного контракта. В архитектуре Safe вызов делегата указывает на один логический контракт, в то время как Diamond использует вызов делегата на несколько модульных контрактов - плагинов. Следовательно, вредоносный плагин может перезаписать другой плагин, тем самым создавая риск коллизий в хранилище, которые могут нарушить целостность прокси.
  3. Стоимость:
    Гибкость, присущая подходу Diamond, сопровождается повышенными требованиями к безопасности. Это увеличивает затраты, требуя проведения всестороннего аудита при каждом добавлении нового плагина. Главное, чтобы эти плагины не мешали друг другу работать, что представляет собой сложную задачу, особенно для малых и средних предприятий, стремящихся поддерживать строгие стандарты безопасности.

Подход "Safe Smart Account" и "Diamond Approach" служат примерами различных структур, включающих прокси и модули. Очень важно найти баланс между гибкостью и безопасностью, и эти два метода могут дополнить друг друга в будущем.


Последовательность модулей: Валидатор, исполнитель и крючок

Какова последовательность вызова модулей

Давайте расширим наше обсуждение, представив ERC6900, стандарт, предложенный командой Alchemy, вдохновленный Diamond и специально разработанный для ERC-4337. Он решает проблему модульности смарт-счетов, предоставляя общие интерфейсы и координируя усилия между разработчиками плагинов и кошельков.

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

Названия функций в различном дизайне

  1. Проверка подлинности: Убедитесь в подлинности и полномочиях звонящего в аккаунт.
  2. Выполнение: Выполняет любую пользовательскую логику, которую позволяет учетная запись.
  3. Крючок: Действует как модуль, который запускается до или после другой функции. Он может изменить состояние или привести к отмене всего вызова.

ERC6900

Очень важно разделять модули, основанные на разной логике. Стандартизированный подход должен определять, как должны быть написаны функции проверки, исполнения и крючка для счетов смарт-контрактов. Будь то Safe или ERC6900, стандартизация помогает снизить необходимость в уникальных разработках, специфичных для определенных реализаций или экосистем, и предотвратить блокировку производителей.


Модули Открытие и безопасность

Как находить и проверять модули открытым способом

Решение, которое набирает обороты, предполагает создание места, позволяющего пользователям обнаруживать проверяемые модули, которое мы можем назвать "реестром". Этот реестр функционирует подобно "Магазину приложений" и призван способствовать упрощению, но процветанию модульного рынка.

Протокол Safe{Core}

Протокол Safe{Core}

Safe{Core} Протокол Safe - это взаимодействующий протокол с открытым исходным кодом для счетов смарт-контрактов, разработанный для повышения доступности для различных поставщиков и разработчиков при сохранении надежной безопасности благодаря четко определенным стандартам и правилам.

  1. Счет: В протоколе Safe{Core} понятие счета является гибким и не привязано к конкретной реализации. Это позволяет участвовать в проекте различным поставщикам услуг по обслуживанию счетов.
  2. Менеджер: Менеджер служит координатором между аккаунтами, реестрами и модулями. Он также отвечает за безопасность в качестве разрешающего слоя.
  3. Реестры: Реестры определяют атрибуты безопасности и обеспечивают соблюдение таких стандартов, как ERC6900 для модулей, стремясь создать открытую среду "магазина приложений", обеспечивающую как открываемость, так и безопасность.
  4. Модули: Модули управляют функциональными возможностями и бывают разных начальных типов, включая плагины, крючки, валидаторы подписи и обработчики функций. Они открыты для разработчиков при условии, что они соответствуют установленным стандартам.

Дизайн со стразами

Дизайн со стразами

Процесс разворачивается следующим образом:

  1. Создание определения схемы: Схема служит предопределенной структурой данных, необходимой для аттестации. Предприятия могут настраивать его в соответствии со своими специфическими задачами.
  2. Создание модулей на основе схемы: Умные контракты регистрируются как модули, получая байткод и выбирая идентификатор схемы. Затем эти данные сохраняются в реестре.
  3. Получение аттестации для модуля: Аттестаторы/аудиторы могут предоставлять аттестацию для модулей на основе схемы. Эти удостоверения могут включать уникальный идентификатор (UID) и ссылки на другие удостоверения для объединения в цепочку. Они могут распространяться по цепочкам и проверять, соблюдены ли определенные пороги в цепочках назначения.
  4. Реализация сложной логики с помощью решателей: В игру вступают решатели, опционально заданные в схеме. Они могут быть вызваны во время создания модуля, установления аттестации и отзыва. Эти резольверы позволяют разработчикам внедрять сложную и разнообразную логику, сохраняя при этом структуры аттестации.
  5. Удобный доступ к запросам: Запросы предоставляют пользователям возможность получить доступ к информации о безопасности с внешнего интерфейса. Найти этот EIP можно здесь.

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

  1. Аттестаторы: Доверенные организации, такие как Safe, могут сотрудничать с Rhinestone в качестве аттестованных лиц для внутренних модулей. Одновременно к ним могут присоединиться независимые аттестующие.
  2. Разработчики модулей: По мере формирования открытого рынка разработчики модулей могли бы потенциально монетизировать свою работу через реестр.
  3. Пользователи: Взаимодействуя с помощью удобных интерфейсов, таких как кошельки или dApps, пользователи могут изучать информацию о модулях и делегировать доверие различным аттестованным лицам.

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

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


Заключительные мысли

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

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

Заглядывая вперед, мы представляем себе будущее, в котором участие будет широко распространено, что порождает интригующие вопросы: Как только поток ордеров SCA станет достаточно прибыльным, как традиционные механизмы Miner Extractable Value (MEV) выйдут на поле для создания бандлеров и захвата стоимости? Когда инфраструктура созреет, как абстракции счетов (AA) могут стать основополагающим слоем для транзакций, основанных на намерениях? Следите за новостями: ландшафт меняется с каждой минутой.


Важные детали

  1. Безопасный обзор: https://github.com/safe-global/safe-core-protocol-specs/blob/main/whitepaper.pdf
  2. Док со стразами: https://docs.rhinestone.wtf/
  3. Бикониум док: https://www.biconomy.io/post/making-biconomy-smart-accounts-modular

Отказ от ответственности:

  1. Эта статья перепечатана с сайта[SevenX Ventures ]. Все авторские права принадлежат оригинальному автору[SevenX Ventures]. Если у Вас есть возражения против этой перепечатки, пожалуйста, свяжитесь с командой Gate Learn, и они незамедлительно рассмотрят их.
  2. Предупреждение об ответственности: Мнения и взгляды, выраженные в этой статье, принадлежат исключительно автору и не являются инвестиционным советом.
  3. Перевод статьи на другие языки осуществляется командой Gate Learn. Если не указано, копирование, распространение или плагиат переведенных статей запрещены.

Архитектура и проблемы модульного счета смарт-контрактов

СреднийJan 17, 2024
Эта статья представляет собой исследование архитектуры счетов модульного смарт-контракта и его проблем.
Архитектура и проблемы модульного счета смарт-контрактов

Введение

Переход от счетов, принадлежащих внешним пользователям (Externally Owned Accounts, EOA), к счетам смарт-контрактов (Smart Contract Accounts, SCA) набирает обороты, и его поддержали многие энтузиасты, включая самого Виталика. Несмотря на волнение, применение SCA не так широко распространено, как EOA. Основными из них являются проблемы, связанные с медвежьими рынками, миграцией, проблемами с подписанием контрактов, накладными расходами на газ и, что самое важное, инженерными трудностями.

Самое значительное преимущество Account Abstractions (AA) - это возможность использовать код для настройки функциональности. Однако одной из основных инженерных проблем является невзаимозаменяемость функциональных возможностей AA, а фрагментация препятствует интеграции и открывает двери для блокировки производителей. Кроме того, обеспечение безопасности при одновременном обновлении и создании новых функций может быть сложной задачей.

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

Прочитав эту статью, читатели получат представление о:

  1. Что такое модульная абстракция счетов
  2. Как аккаунт взаимодействует с модулями
  3. Какова последовательность вызова модулей
  4. Как находить и проверять модули открытым способом

Краткий обзор АА

Ландшафт SCA

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

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

  1. Уровень протокола: Некоторые протоколы сами обеспечивают встроенную поддержку абстракции счетов, например, транзакции ZKsync следуют одному и тому же потоку, будь то из EOA или SCA, который использует единый мемпул и поток транзакций для поддержки AA, а Starknet убрал EOA, и все счета являются SCA, и у них есть встроенные кошельки для смарт-контрактов, такие как Argent.
  2. Консенсус-уровень: Для Ethereum и эквивалентных ему L2, ERC4337 вводит отдельную точку входа для транзакций, чтобы поддерживать AA без изменения уровня консенсуса. Такие проекты, как Stackup, Alchemy, Etherspot, Biconomy, Candide и Plimico, создают инфраструктуру бандлеров, а многие другие, такие как Safe, Zerodev, Etherspot и Biconomy, создают стек и SDK.

👉 Если Вы не знакомы с AA или ERC4337, ознакомьтесь с предыдущим исследованием SevenX здесь.


Дилемма принятия SCA

Тема абстрагирования счетов (Account Abstraction, AA) обсуждается с 2015 года, а в этом году она еще больше выдвинулась на первый план благодаря проекту ERC4337. Однако количество развернутых учетных записей смарт-контрактов все еще меркнет по сравнению с EOA.

Давайте разберемся в этой дилемме:

  1. Влияние медвежьего рынка:
    Несмотря на то, что AA предоставляет такие преимущества, как бесшовный вход в систему и абстрагирование от газа, преобладающий медвежий рынок состоит в основном из образованных пользователей EOA, а не новых, поэтому у dApps и кошельков нет стимула. Несмотря на это, ведущие приложения все еще находятся на пути к внедрению AA, например, Cyberconnect совершает около 360 000 UserOps (транзакций AA) в месяц, только внедрив свою систему AA и решение для работы без газа.
  2. Препятствия на пути миграции:
    Для кошельков и приложений, которые накапливают пользователей и хранят активы в EOA, безопасная и удобная миграция активов остается сложной задачей. Тем не менее, такие инициативы, как EIP-7377, позволяют EOA инициировать одноразовую операцию миграции.
  3. Проблема подписи:
    Сам смарт-контракт, естественно, не может подписывать сообщения, поскольку он не обладает закрытым ключом, как EOA. Усилия, подобные ERC1271, делают это возможным, но подписание сообщений не будет работать до первой транзакции, что создает проблемы для кошельков, использующих контрфактическое развертывание. А ERC-6492, предложенная компанией Ambire, является обратно совместимым преемником ERC-1271, который потенциально решает предыдущую проблему.
  4. Газовые накладные расходы:
    Развертывание, моделирование и выполнение SCA влечет за собой более высокие затраты по сравнению со стандартными EOA. Это становится сдерживающим фактором для усыновления. Тем не менее, для снижения этих затрат было проведено несколько тестов, например, развязка создания учетной записи от операций пользователя, а также отказ от проверки соли и существования учетной записи.
  5. Инженерные трудности:
    Команда ERC-4337 создала репо eth-infinitism, чтобы предоставить разработчикам базовую реализацию. Однако, когда мы переходим к более тонким или специфическим функциям для различных случаев использования, интеграция и декодирование становятся сложной задачей.

В этой статье мы рассмотрим проблему №5: инженерные трудности.

🤔️


Модульный счет смарт-контрактов для решения инженерных проблем

Более подробно о трудностях инженерной мысли:

  1. Фрагментация:
    Функции теперь включаются различными способами, будь то встроенные в конкретные SCA или независимые системы плагинов. Каждый из них следует своему стандарту, заставляя разработчиков решать, какие платформы поддерживать. Это приводит к потенциальной блокировке платформы или избыточным усилиям.
  2. Безопасность:
    Хотя гибкость в выборе учетных записей и функций дает свои преимущества, она может усилить проблемы безопасности. Функции могут проверяться коллективно, но отсутствие независимых оценок может повысить риск уязвимости учетных записей.
  3. Возможность обновления:
    По мере развития функций важно сохранять возможность их добавления, замены или удаления. Развертывание существующих функций при каждом обновлении создает определенные сложности.

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

Эти термины сходятся в единой концепции: Построение модульной архитектуры абстракции счетов (Modular AA).

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

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


Модульная структура: Основной аккаунт и модули

Как счет призывает модули к реализации функций

Делегатский вызов и договор о доверенности

Внешний вызов и вызов делегата:

О delegateCall

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

Контракт прокси и делегатВызов

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

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

Безопасная архитектура

Безопасная архитектура

Что такое безопасность:

Safe - это ведущая модульная инфраструктура смарт-счетов, разработанная для обеспечения проверенной в боях безопасности и гибкости, она дает разработчикам возможность создавать разнообразные приложения и кошельки. Примечательно, что многие команды строят на основе Safe или вдохновляются им. Компания Biconomy запустила свой счет, расширив систему Safe с помощью нативных мультиподписей 4337 и 1/1. Заключив более 164 000 контрактов на сумму свыше 30,7 млрд. долларов, компания Safe, без сомнения, является ведущей в космической отрасли.

Что такое структура Safe

  1. Контракт безопасного счета: основной прокси-контракт (Stateful)
    Безопасный счет - это прокси-контракт, потому что он делегирует вызов контракта-одиночки. Безопасный счет содержит владельцев, порог и адреса реализации - все они задаются в качестве переменных прокси, определяя его состояние.
  2. Контракт Singleton: Интеграционный концентратор (Stateless)
    Синглтон обслуживает учетную запись Safe, интегрирует и определяет различные интеграции, включая плагин, хук, обработчик функций и валидатор подписи.
  3. Контракт на модуль: пользовательская логика и функции:
    Модули - это мощный инструмент. Плагины как модульный тип могут определять различные функции, такие как потоки платежей, механизмы восстановления и сеансовые ключи, а также могут служить мостом между web2 и web3, получая данные вне цепи. Другие модули, такие как Hook, служат для обеспечения безопасности, а Function Handler отвечает на любые команды.

Что происходит, когда мы принимаем Безопасное:

  1. Обновляемые контракты:
    Развертывание нового синглтона необходимо всякий раз, когда появляются новые плагины. Пользователи сохраняют за собой право обновить свой Safe до желаемой версии, соответствующей их предпочтениям и требованиям.
  2. Составные и многократно используемые модули:
    Модульная природа плагинов дает разработчикам возможность создавать функциональные возможности самостоятельно. Затем они могут свободно выбирать и комбинировать эти плагины в зависимости от своих задач, что способствует созданию максимально настраиваемого подхода.

ERC-2535 Diamond Proxies

ERC2535 Diamond Architecture

О ERC2535, алмазных прокси:

ERC2535 стандартизирует алмазы - модульную систему смарт-контрактов, которая может быть модернизирована/расширена после развертывания и практически не имеет ограничений по размеру. До сих пор многие команды вдохновлялись им, например, Zerodev's Kernel или Soul Wallet's experiment.

Что такое алмазная структура:

  1. Контракт Diamond: основной прокси-контракт (Stateful) Diamond - это прокси-контракт, который вызывает функции из своих реализаций, используя delegatecall.
  2. Контракт модуля/плагина/фасета: пользовательская логика и функции (Stateless) Модуль или так называемый фасет - это контракт без статусов, который может развернуть свои функции на одном или нескольких бриллиантах. Они представляют собой отдельные, независимые контракты, которые могут совместно использовать внутренние функции, библиотеки и переменные состояния.

Что происходит, когда мы усыновляем Алмаза:

  1. Модернизируемые контракты: Diamond предоставляет систематический способ изолировать различные плагины, соединять их вместе и обмениваться данными между ними, а также напрямую добавлять/заменять/удалять любой плагин с помощью функции diamondCut. Количество плагинов, которые можно добавить к алмазам со временем, не ограничено.
  2. Модульный и многократно используемый плагин: Развернутый плагин может быть использован любым количеством бриллиантов, что значительно снижает затраты на развертывание.

Разница между Safe Smart Account и Diamond Approach:

Архитектуры Safe и Diamond имеют много сходств: обе они опираются на прокси-контракты в своей основе и ссылаются на логические контракты, чтобы добиться возможности обновления и модульности.

Тем не менее, основное различие заключается в работе с логическими контрактами. Вот более подробный обзор:

  1. Гибкость:
    В контексте включения новых плагинов, Safe требует перераспределения контракта Singleton для реализации изменений в Proxy. В отличие от этого, Diamond достигает этого напрямую с помощью функции diamondCut в своем прокси. Такое различие в подходах приводит к тому, что Safe сохраняет более высокую степень контроля, а Diamond обеспечивает повышенную гибкость и модульность.
  2. Безопасность:
    delegatecall, используемый пока в обеих структурах, может позволить внешнему коду манипулировать хранением основного контракта. В архитектуре Safe вызов делегата указывает на один логический контракт, в то время как Diamond использует вызов делегата на несколько модульных контрактов - плагинов. Следовательно, вредоносный плагин может перезаписать другой плагин, тем самым создавая риск коллизий в хранилище, которые могут нарушить целостность прокси.
  3. Стоимость:
    Гибкость, присущая подходу Diamond, сопровождается повышенными требованиями к безопасности. Это увеличивает затраты, требуя проведения всестороннего аудита при каждом добавлении нового плагина. Главное, чтобы эти плагины не мешали друг другу работать, что представляет собой сложную задачу, особенно для малых и средних предприятий, стремящихся поддерживать строгие стандарты безопасности.

Подход "Safe Smart Account" и "Diamond Approach" служат примерами различных структур, включающих прокси и модули. Очень важно найти баланс между гибкостью и безопасностью, и эти два метода могут дополнить друг друга в будущем.


Последовательность модулей: Валидатор, исполнитель и крючок

Какова последовательность вызова модулей

Давайте расширим наше обсуждение, представив ERC6900, стандарт, предложенный командой Alchemy, вдохновленный Diamond и специально разработанный для ERC-4337. Он решает проблему модульности смарт-счетов, предоставляя общие интерфейсы и координируя усилия между разработчиками плагинов и кошельков.

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

Названия функций в различном дизайне

  1. Проверка подлинности: Убедитесь в подлинности и полномочиях звонящего в аккаунт.
  2. Выполнение: Выполняет любую пользовательскую логику, которую позволяет учетная запись.
  3. Крючок: Действует как модуль, который запускается до или после другой функции. Он может изменить состояние или привести к отмене всего вызова.

ERC6900

Очень важно разделять модули, основанные на разной логике. Стандартизированный подход должен определять, как должны быть написаны функции проверки, исполнения и крючка для счетов смарт-контрактов. Будь то Safe или ERC6900, стандартизация помогает снизить необходимость в уникальных разработках, специфичных для определенных реализаций или экосистем, и предотвратить блокировку производителей.


Модули Открытие и безопасность

Как находить и проверять модули открытым способом

Решение, которое набирает обороты, предполагает создание места, позволяющего пользователям обнаруживать проверяемые модули, которое мы можем назвать "реестром". Этот реестр функционирует подобно "Магазину приложений" и призван способствовать упрощению, но процветанию модульного рынка.

Протокол Safe{Core}

Протокол Safe{Core}

Safe{Core} Протокол Safe - это взаимодействующий протокол с открытым исходным кодом для счетов смарт-контрактов, разработанный для повышения доступности для различных поставщиков и разработчиков при сохранении надежной безопасности благодаря четко определенным стандартам и правилам.

  1. Счет: В протоколе Safe{Core} понятие счета является гибким и не привязано к конкретной реализации. Это позволяет участвовать в проекте различным поставщикам услуг по обслуживанию счетов.
  2. Менеджер: Менеджер служит координатором между аккаунтами, реестрами и модулями. Он также отвечает за безопасность в качестве разрешающего слоя.
  3. Реестры: Реестры определяют атрибуты безопасности и обеспечивают соблюдение таких стандартов, как ERC6900 для модулей, стремясь создать открытую среду "магазина приложений", обеспечивающую как открываемость, так и безопасность.
  4. Модули: Модули управляют функциональными возможностями и бывают разных начальных типов, включая плагины, крючки, валидаторы подписи и обработчики функций. Они открыты для разработчиков при условии, что они соответствуют установленным стандартам.

Дизайн со стразами

Дизайн со стразами

Процесс разворачивается следующим образом:

  1. Создание определения схемы: Схема служит предопределенной структурой данных, необходимой для аттестации. Предприятия могут настраивать его в соответствии со своими специфическими задачами.
  2. Создание модулей на основе схемы: Умные контракты регистрируются как модули, получая байткод и выбирая идентификатор схемы. Затем эти данные сохраняются в реестре.
  3. Получение аттестации для модуля: Аттестаторы/аудиторы могут предоставлять аттестацию для модулей на основе схемы. Эти удостоверения могут включать уникальный идентификатор (UID) и ссылки на другие удостоверения для объединения в цепочку. Они могут распространяться по цепочкам и проверять, соблюдены ли определенные пороги в цепочках назначения.
  4. Реализация сложной логики с помощью решателей: В игру вступают решатели, опционально заданные в схеме. Они могут быть вызваны во время создания модуля, установления аттестации и отзыва. Эти резольверы позволяют разработчикам внедрять сложную и разнообразную логику, сохраняя при этом структуры аттестации.
  5. Удобный доступ к запросам: Запросы предоставляют пользователям возможность получить доступ к информации о безопасности с внешнего интерфейса. Найти этот EIP можно здесь.

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

  1. Аттестаторы: Доверенные организации, такие как Safe, могут сотрудничать с Rhinestone в качестве аттестованных лиц для внутренних модулей. Одновременно к ним могут присоединиться независимые аттестующие.
  2. Разработчики модулей: По мере формирования открытого рынка разработчики модулей могли бы потенциально монетизировать свою работу через реестр.
  3. Пользователи: Взаимодействуя с помощью удобных интерфейсов, таких как кошельки или dApps, пользователи могут изучать информацию о модулях и делегировать доверие различным аттестованным лицам.

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

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


Заключительные мысли

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

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

Заглядывая вперед, мы представляем себе будущее, в котором участие будет широко распространено, что порождает интригующие вопросы: Как только поток ордеров SCA станет достаточно прибыльным, как традиционные механизмы Miner Extractable Value (MEV) выйдут на поле для создания бандлеров и захвата стоимости? Когда инфраструктура созреет, как абстракции счетов (AA) могут стать основополагающим слоем для транзакций, основанных на намерениях? Следите за новостями: ландшафт меняется с каждой минутой.


Важные детали

  1. Безопасный обзор: https://github.com/safe-global/safe-core-protocol-specs/blob/main/whitepaper.pdf
  2. Док со стразами: https://docs.rhinestone.wtf/
  3. Бикониум док: https://www.biconomy.io/post/making-biconomy-smart-accounts-modular

Отказ от ответственности:

  1. Эта статья перепечатана с сайта[SevenX Ventures ]. Все авторские права принадлежат оригинальному автору[SevenX Ventures]. Если у Вас есть возражения против этой перепечатки, пожалуйста, свяжитесь с командой Gate Learn, и они незамедлительно рассмотрят их.
  2. Предупреждение об ответственности: Мнения и взгляды, выраженные в этой статье, принадлежат исключительно автору и не являются инвестиционным советом.
  3. Перевод статьи на другие языки осуществляется командой Gate Learn. Если не указано, копирование, распространение или плагиат переведенных статей запрещены.
Начните торговать сейчас
Зарегистрируйтесь сейчас и получите ваучер на
$100
!