
Абстракция счетов (AA) стала важным этапом в развитии Ethereum, радикально изменив подход к управлению счетами и взаимодействию с блокчейном. В этом руководстве рассматриваются механика, преимущества и внедрение абстракции счетов, с акцентом на EIP-4337 — последнюю инициативу, позволяющую реализовать AA без изменений базового протокола Ethereum.
Абстракция счетов — это новый подход к организации пользовательских счетов в Ethereum. Для понимания AA нужно различать два типа счетов: externally owned accounts (EOA — счета, управляемые извне) и contract accounts (CA — контрактные счета). EOA — это обычные счета, контролируемые приватными ключами и seed-фразами, т.е. пользователь отвечает за сохранность криптографических данных. Контрактные счета управляются смарт-контрактами, что позволяет использовать программируемую логику для управления средствами.
Абстракция счетов означает отделение источника транзакции от подписи и переход от EOA к функционалу CA. Благодаря этому смарт-контракты могут контролировать EOA, формируя смарт-кошельки. Такой подход позволяет гибко и удобно управлять счетами, устраняет ограничения обычных EOA и открывает новые возможности: расширенные механизмы безопасности, гибкая авторизация транзакций, улучшенный пользовательский опыт.
Сообщество Ethereum поддерживает абстракцию счетов, так как она упрощает и совершенствует процесс управления счетами. Главное преимущество — большая гибкость для операций в сети. В отличие от ограниченных EOA, AA позволяет реализовать программируемую логику для разных сценариев.
AA также повышает безопасность: пользователи могут настраивать мультиподписи, социальное восстановление и другие современные механизмы, ранее недоступные для EOA. Это снижает риск потери средств из-за утери ключей или seed-фраз. Также AA решает общие проблемы пользователей: необходимость хранения ETH для оплаты газа и невозможность отправлять несколько транзакций одним пакетом. Все это облегчает вход новых пользователей и делает Ethereum более доступным.
Движение к абстракции счетов в Ethereum сопровождалось серией важных Ethereum Improvement Proposal (EIP), каждая из которых приближала реализацию AA. Знание этой истории помогает понять важность EIP-4337.
EIP-2938 был первой попыткой внедрить AA: контрактные счета предлагалось сделать "верхнеуровневыми", чтобы они могли самостоятельно оплачивать комиссии и совершать транзакции. EIP-3074 предложил добавить два OpCode — AUTH и AUTHCALL, чтобы EOA могли делегировать действия контрактам. Это дало разработчикам больше гибкости при проектировании транзакций и систем проверки.
Интерес к абстракции счетов вырос именно с выходом EIP-2938 и EIP-3074. Но оба предложения требовали изменений протокола на уровне консенсуса, что было рискованно и сложно. Поэтому их реализация была отложена. Появление EIP-4337 стало поворотным моментом: AA теперь можно реализовать без изменений протокола, что существенно снизило риски.
Чтобы понять, почему EIP-4337 стал основным решением, важно сравнить разные подходы к AA. EIP-3074 был интересен, но требовал внедрения новых OpCode на уровне консенсуса. Это предполагало хардфорк и сложные изменения протокола, что создавало технические и организационные риски.
EIP-4337 реализует абстракцию счетов на более высоком уровне, без изменений слоя консенсуса. Это снижает риски внедрения и облегчает дальнейшее развитие. В то же время, EIP-4337 требует новой инфраструктуры — bundlers и paymasters, — но эти элементы работают вне ядра протокола и могут обновляться без согласования всей сети.
EIP-4337 — это система компонентов, обеспечивающих абстракцию счетов. Для понимания работы AA важно знать эти элементы. Основные из них:
UserOperation — основа системы EIP-4337. В отличие от обычных транзакций, это псевдотранзакции с полной информацией для выполнения операции от имени пользователя. UserOperation создается отправителем, но не подписывается стандартным способом.
Entry point — уникальный смарт-контракт, который координирует выполнение пакетных UserOperation. Он проверяет и обрабатывает user op, контролируя соответствие стандартам.
Bundlers — узлы, собирающие UserOperation из специального пула и объединяющие их в пакетные транзакции. Bundlers могут работать как блокбилдеры или взаимодействовать с существующей инфраструктурой построения блоков. Они обеспечивают попадание UserOperation в блоки и их валидность.
Контракты-кошельки — смарт-контракты, принадлежащие пользователям. В них реализована логика проверки подписей и исполнения транзакций на основе UserOperation.
Фабрики кошельков — смарт-контракты, отвечающие за развертывание новых смарт-кошельков по запросу пользователя.
Агрегаторы — дополнительные контракты, которым кошельки могут доверять проверку агрегированных подписей, что снижает издержки на газ при валидации множества операций.
Paymasters — один из самых инновационных компонентов EIP-4337. Они обеспечивают гибкие способы оплаты газа: могут спонсировать транзакции, принимать оплату в токенах ERC-20 или реализовать индивидуальную логику оплаты, что делает взаимодействие удобнее.
Схема работы транзакций по EIP-4337 сильно отличается от традиционной модели Ethereum. Для понимания AA важно знать этот процесс, который включает несколько последовательных этапов.
Пользователь, инициируя транзакцию в системе EIP-4337, создает объект UserOperation. В нем содержится вся необходимая информация: адрес отправителя, параметры газа (maxFeePerGas, maxPriorityFee) и данные самой операции. Поле подписи здесь обрабатывается иначе: ее проверяет реализация кошелька, а не протокол.
Созданный объект UserOperation отправляется в отдельный пул памяти, отличный от стандартного пула транзакций. Это позволяет обрабатывать UserOperation отдельно от обычных транзакций Ethereum.
После попадания UserOperation в пул памяти их обрабатывают bundlers. Они собирают несколько UserOperation и объединяют их в пакетные транзакции. Если bundler — блокбилдер, он может напрямую добавить транзакцию в блок, если entry point остается валидным. Если нет — bundler взаимодействует с инфраструктурой построения блоков, включая mev-boost, механизмы proposer-builder separation или экспериментальные RPC API, например, eth_sendRawTransactionConditional.
Пакетная обработка повышает эффективность EIP-4337: несколько UserOperation могут быть исполнены одной транзакцией, что снижает издержки и увеличивает пропускную способность.
После отправки пакетных UserOperation в контракт entry point начинается проверка. Контракт сначала валидирует каждую операцию. Для этого bundler вызывает функцию validateUserOp, которая проверяет подпись и другие параметры, характерные для конкретного смарт-кошелька.
Bundlers используют белый список поддерживаемых entry point-контрактов, чтобы обрабатывать UserOperation только через проверенные решения. Такая валидация критична для безопасности и предотвращает выполнение вредоносных операций.
На последнем этапе UserOperation исполняет смарт-кошелек. В нем реализована функция ExecuteUserOp, которая и выполняет транзакцию. Bundlers упаковывают UserOperation в транзакцию и вызывают функцию handleOps в EntryPoint-контракте. Транзакция включается в блок, завершая цикл.
Такая многоступенчатая схема обеспечивает безопасную и гибкую обработку UserOperation.
Чтобы понять преимущества AA-кошельков, важно сравнить их с другими типами кошельков. EOA-кошельки — это классические счета Ethereum с низкими издержками на создание и оплату газа, но с ограниченной функциональностью: пользователь управляет приватными ключами и не имеет встроенного восстановления. Все риски ложатся на пользователя.
MPC-кошельки (Multi-Party Computation) тоже используют EOA, но разделяют управление ключом между несколькими участниками, устраняя "единоточечный" отказ. Они более безопасны, но по-прежнему используют только подписи ECDSA и не всегда совместимы с экосистемой. Для MPC-кошельков важна прозрачность и четкая политика оффчейн-авторизации.
AA-кошельки на контрактных счетах — наиболее продвинутый вариант. Несмотря на более высокие издержки на создание и оплату газа, они поддерживают оплату газа в разных валютах, пакетные транзакции, разные методы подписи, встроенное восстановление. Классическое управление приватными ключами не требуется, безопасность достигается на уровне сети. Для AA-кошельков необходим аудит контрактов и пула запросов, а совместимость с экосистемой продолжает расти.
Понимание разницы между EIP-3074 и EIP-4337 объясняет, почему сообщество Ethereum поддерживает именно EIP-4337. EIP-3074 был отложен, поскольку требовал изменений на уровне консенсуса (core EIP). Внедрение двух OpCode дало EOA доступ к контрактным функциям, что имело и плюсы, и серьезные недостатки.
EIP-3074 позволяет пользователям делегировать управление EOA контракту, что дает разработчикам гибкость в создании новых схем транзакций: пакетная торговля, объединенные операции, гибкая оплата газа — все это без развертывания новых контрактов.
Контракты-инвокеры могут принимать оплату не только в ETH. Эти доверенные посредники обеспечивают сделки между спонсорами и получателями, делая оплату газа гибче. Кроме того, любой EOA получает функциональность смарт-кошелька без необходимости развертывать новый контракт, что важно для совместимости с экосистемой.
Главная проблема EIP-3074 — необходимость изменений на уровне консенсуса, что требует хардфорка при ошибках и создает риски для сети. Для внедрения нужен согласованный переход всего сообщества.
Также EIP-3074 расширяет EOA, но ограничивается только ECDSA-подписями. Это не позволяет использовать современные методы подписи с более высокой безопасностью и меньшими расходами на газ, что ограничивает гибкость AA.
Хотя EIP-3074 был отложен, его идеи живут в EIP-5003, где появился OpCode AUTHUSURP для развертывания кода на адресах, авторизованных через EIP-3074. EIP-5003 совместим с EIP-3607 и открывает миграцию EOA в контрактные счета.
Согласно EIP-5003, EOA, делегировавший права другому адресу через EIP-3074, позволяет этому адресу с помощью AUTHUSURP назначить код для EOA. Это превращает EOA в контрактный счет с возможностью использовать продвинутые методы подписи. Такой механизм может стать мостом между экосистемой EOA и будущим AA, но предложение еще дорабатывается.
Абстракция счетов с помощью EIP-4337 — это эволюция взаимодействия с Ethereum. Разделяя источник транзакций и подписи, позволяя смарт-контрактам управлять счетами, AA решает многие проблемы, мешавшие массовому принятию. Пользователи получают улучшенную безопасность, гибкую оплату газа, поддержку разных валют, пакетные транзакции и встроенное восстановление без риска утери ключа.
EIP-4337 реализует AA без изменений слоя консенсуса, что снижает риски и упрощает развитие по сравнению с ранними предложениями вроде EIP-3074. Новая инфраструктура (bundlers, paymasters, отдельный пул UserOperation) работает вне ядра протокола и может дорабатываться без сетевых изменений. По мере развития экосистемы Ethereum интеграция AA через EIP-4337 снизит барьеры входа для новых пользователей и предоставит опытным пользователям новые инструменты для управления активами. Массовое внедрение кошельков AA станет важным шагом на пути к массовому распространению Ethereum.
EIP-4337 — стандарт Ethereum для абстракции счетов. Он позволяет использовать смарт-кошельки с социальными логинами и транзакциями без газа через UserOperation, Bundlers, EntryPoint и Contract Accounts.
EIP-4337 — это набор инструментов для реализации функций абстракции счетов, а EIP-7702 позволяет применять эти функции к существующим EOA.
ERC-4337 — стандарт Ethereum для абстракции счетов. Он позволяет смарт-контрактам управлять счетами и транзакциями без традиционных ключей кошелька. Цель — повысить безопасность и удобство.
Нет, EIP и ERC — это разные стандарты. EIP (Ethereum Improvement Proposal) относится к изменениям протокола, а ERC (Ethereum Request for Comment) определяет стандарты токенов и смарт-контрактов.








