ERC-6900 и ERC-7579 описывают способы расширять возможности смарт-кошельков Ethereum с помощью модулей. Оба стандарта помогают кошелькам и приложениям согласовать интерфейсы, но не задают одну общую реализацию и не гарантируют совместимость каждого аккаунта с любым расширением. При сравнении важно смотреть на интерфейсы, жизненный цикл модуля и полномочия, которые получает его код.
Зачем смарт-аккаунту модульность
Обычный внешний аккаунт EOA опирается на приватный ключ и правила подписи, встроенные в клиента. Смарт-аккаунт может проверять операции программно: например, вводить лимит расходов, принимать подпись нескольких владельцев или выполнять серию вызовов. Модуль позволяет добавить или изменить такое поведение без переписывания всей логики кошелька, если аккаунт заранее реализует нужные точки расширения.
Для разработчика приложения стандартизированные интерфейсы уменьшают зависимость от закрытых особенностей одного кошелька. Для пользователя модульность может дать более гибкую авторизацию и удобные дополнительные сценарии. Но расширяемость увеличивает поверхность атаки: ошибка или чрезмерные права модуля способны влиять на подтверждение и исполнение операций. Название стандарта не заменяет аудит реализации.
Полезно рассматривать модульный аккаунт как комбинацию ядра, установленных расширений и правил их взаимодействия. Установка стороннего кода меняет доверительную модель кошелька. До принятия запроса нужно знать адрес модуля, его назначение, допустимые вызовы и способ отзыва. Основы организации программируемого аккаунта рассмотрены в материале о owner-key и delegated-key.
Модель ERC-6900
ERC-6900 определяет интерфейсы и структуру для аккаунтов с подключаемыми модулями, включая модули валидации, исполнения и хуки. Модуль валидации участвует в проверке того, разрешена ли конкретная операция или подпись. Модуль исполнения предоставляет дополнительные способы выполнения действий. Hook может запускаться до или после предусмотренного вызова, если реализация аккаунта поддерживает соответствующий механизм.
Стандарт описывает взаимодействие между аккаунтом и модулями, регистрацию расширений и связанные точки контроля. Это помогает формировать более предсказуемую архитектуру, чем произвольный плагинный механизм. При этом реальное поведение определяется кодом аккаунта, конкретным модулем и порядком выполнения. Интеграторам следует сверять версию спецификации и документацию реализации, а не полагаться на одно маркетинговое заявление о поддержке ERC-6900.
Особое внимание нужно уделять хукам и их последовательности. Несколько модулей могут проверять или изменять ход операции, а отказ одного компонента способен остановить весь вызов. Модуль может быть безопасен отдельно, но взаимодействовать с другими расширениями неожиданным образом. Поэтому аудит должен учитывать и комбинацию модулей, и конфигурацию аккаунта, и сценарии удаления или обновления.
Модель ERC-7579
ERC-7579 сосредоточен на минимальном наборе совместимых интерфейсов для модульных аккаунтов. Спецификация предусматривает категории validation, execution, fallback и hook. Аккаунт предоставляет способы устанавливать и удалять модули и может сообщать, какие типы и интерфейсы он поддерживает. Минималистичный подход оставляет командам свободу в архитектуре, пытаясь при этом обеспечить совместимый язык взаимодействия.
Из-за меньшего числа предписанных деталей реализации разных кошельков могут заметно отличаться. Поддержка ERC-7579 не говорит автоматически, какие именно модули доступны, кто может их устанавливать или какие дополнительные ограничения применены. Один аккаунт может требовать одобрение владельца, другой – список разрешенных адресов, третий – поддерживать ограниченный набор функций. Для пользователя важно проверять параметры конкретного аккаунта.
Гибкость может облегчить миграцию существующих кошельков и дать разработчикам выбор, но она повышает значение совместимых тестов. Проверять следует фактическую поддержку интерфейсов, корректность ошибок, события установки и удаления, поведение при неизвестном типе модуля и защиту от повторных вызовов. Метод с ожидаемым именем еще не гарантирует одинаковую семантику у всех контрактов.
Сходства и различия без упрощения
Оба стандарта разделяют расширения по ролям и стремятся упростить взаимодействие аккаунта с внешними модулями. ERC-6900 формализует более структурированную систему связей и точек исполнения. ERC-7579 предлагает компактные общие интерфейсы и оставляет реализациям больше свободы. Их не стоит объявлять взаимозаменяемыми или конкурирующими по принципу «безопасный против небезопасного».
Выбор зависит от продукта: какие модули нужны, насколько важны единообразные точки контроля, какие кошельки уже поддерживают стандарт и как будет обслуживаться код после запуска. Разработчики должны оценить объем работ по адаптации, управление версиями, обновления и тестирование крайних случаев. Пользователи могут проверить список поддерживаемых модулей и понять, сохраняется ли возможность восстановить доступ, если один из них перестанет работать.
Различие между типами модулей полезно и для проверки полномочий. Validation определяет путь авторизации; execution добавляет операции; fallback меняет обработку незнакомых вызовов; hook вмешивается до или после выполнения. Некоторые расширения могут взаимодействовать с хранилищем аккаунта или вызывать другие контракты. Права нужно анализировать в контексте всей системы, а не только по названию типа.
Что проверить перед установкой
Сначала найдите официальный адрес модуля в документации самого кошелька и сопоставьте его с адресом запроса. Проверьте сеть, исходный код и аудит нужной версии контракта. Прочитайте, какие функции модуль может выполнять, какую подпись принимает и можно ли его удалить. Не подтверждайте установку, если интерфейс не раскрывает адрес или показывает неизвестные вызовы.
Затем выясните, кто сможет инициировать операции после установки и есть ли лимит по сумме, активу или сроку. Проверьте, можно ли независимо отключить модуль и что происходит с активными сессиями. При возможности проведите тест в безопасной сети и проверьте события установки, пробную операцию и удаление. Декодирование вызовов описано в инструкции по calldata транзакции, а изменение состояния поясняет материал о calldata и состоянии EVM.
ERC-6900 и ERC-7579 дают разработчикам общий словарь для модульных аккаунтов, но сохраняют разные проектные компромиссы. Пользователю важны поддержка конкретного кошелька, полномочия конкретного расширения и возможность отзыва. Проверяйте не абстрактный номер стандарта, а установленный код и его взаимодействие с остальными компонентами аккаунта. Только это показывает, какие действия модуль действительно способен выполнять.



