Skip to content
Все руководства по опционам и фьючерсам
Смарт-аккаунты Ethereum12 мин. чтения

Смарт-аккаунты Ethereum: UserOperation, bundler и спонсирование газа

Разберитесь, как UserOperation ERC-4337 проходит через bundler и EntryPoint, как paymaster спонсирует газ и чем восстановление аккаунта отличается от хранения ключей.

В этом руководствеСмарт-аккаунт хранит программируемые правила доступа в контракте

Краткое резюме

ERC-4337 позволяет смарт-аккаунту отправлять UserOperation по своим правилам отдельно от транзакций EOA. Bundler вызывает EntryPoint; paymaster может спонсировать газ. Восстановление, бесплатные операции и отсутствие кастодиального контроля не гарантируются.

Смарт-аккаунт хранит программируемые правила доступа в контракте

Обычный внешний аккаунт (EOA) подтверждает контроль подписью закрытого ключа, а nonce задаёт порядок транзакций. Модель проста, но обычно одним ключом разрешаются все действия.

В транзакции EOA есть одно действие верхнего уровня, однако вызванный контракт может выполнить и другие внутренние вызовы.

Руководство по ожидающим транзакциям Ethereum описывает этот путь EOA, отличный от ERC-4337.

Смарт-аккаунт — контракт, который может хранить активы и выполнять вызовы. Его проверка может требовать одну подпись, порог нескольких подписей или разрешения с истекающим сроком.

ERC-4337 задаёт интерфейс для подтверждения и выполнения операций, а не конкретный кошелёк или политику восстановления.

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

Название «смарт-кошелёк» не говорит само по себе, кто им управляет. Проверьте контракт с активами, код и EntryPoint, которым доверяет аккаунт, а также подписантов, способных разрешать вызовы.

Если логику можно обновлять, права администратора и порядок изменений тоже влияют на контроль активов.

UserOperation ещё не является транзакцией Ethereum в блоке

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

Дополнительно могут передаваться данные фабрики для создания аккаунта или данные paymaster для спонсирования. Точный набор полей зависит от версии EntryPoint.

Кошелёк не отправляет этот объект в сеть обычным способом eth_sendTransaction, а передаёт bundler или relay с ERC-4337 RPC, например eth_sendUserOperation. Запрос проходит через отдельный пул UserOperation, а не пул транзакций EOA.

Хэш UserOperation идентифицирует запрос; у созданной bundler транзакции в сети отдельные хэш и квитанция. ERC-7769 задаёт RPC для отправки и проверки результатов.

Ответ bundler может означать, что запрос прошёл его проверки и попал в его пул.

Он не доказывает включение в блок или успех действия приложения. Передача запроса другим bundler зависит от инфраструктуры и политики. Различайте подтверждение провайдера и результат в блокчейне.

Bundler моделирует проверку и готовит вызов в сеть

Получив UserOperation, bundler проверяет совместимость с версией EntryPoint и моделирует проверку аккаунта и paymaster. Он проверяет подпись, доверие к EntryPoint, nonce, газ и условия спонсирования.

Запрос, нарушающий правила или не прошедший симуляцию, могут отклонить. Руководство ERC-4337 по bundler описывает симуляцию и отправку пакета.

Затем bundler выбирает одну или несколько операций, прошедших проверки, и создаёт обычную транзакцию Ethereum с вызовом handleOps у EntryPoint. Включение этой транзакции в блок по-прежнему зависит от производства блоков и состояния сети.

Возвращённый хэш UserOperation не доказывает исполнение в канонической цепи. Пул UserOperation отличается от пула EOA; разные провайдеры могут видеть разные запросы.

Bundler может отклонить операцию или оставить её ждать, а поддерживаемые сети, версии EntryPoint и правила отличаются. Проверяя статус, отделяйте интерфейс кошелька, квитанцию операции и сетевую квитанцию пакетной транзакции.

Схема без слов: подписанная операция проходит через bundler и EntryPoint к смарт-аккаунту; gas может оплатить необязательный спонсор
ERC-4337 разделяет подписанный запрос, отправку bundler, проверку аккаунта и необязательную оплату gas спонсором

EntryPoint проверяет полномочия и затем вызывает аккаунт

EntryPoint получает вызов handleOps от bundler и вызывает функцию проверки каждого смарт-аккаунта.

Аккаунт проверяет доверенный EntryPoint, подпись и собственные правила доступа. Nonce ERC-4337 включает 192-битный ключ и 64-битную последовательность.

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

После успешной проверки EntryPoint вызывает функцию исполнения аккаунта, выполняет действие из callData и рассчитывает стоимость. EntryPoint — общий контракт, позволяющий строить потоки смарт-аккаунтов без изменения протокола для каждого кошелька.

Руководство ERC-4337 по EntryPoint подробнее описывает проверку и расчёт. Проверяйте фактический адрес, версию и сеть. Симуляция — полезный предварительный просмотр, но не обещание включения.

Пока запрос ждёт, могут измениться состояние цепи, комиссии, окно действительности или внешний контракт. Даже при успешной проверке вызов приложения может завершиться ошибкой или откатом.

Само включение в блок не доказывает, что перевод или действие прошли успешно.

Paymaster спонсирует газ только после одобрения операции

Если UserOperation содержит данные paymaster, EntryPoint спрашивает этот контракт, готов ли он взять расходы на себя. Приложение может оплатить комиссию или дать пользователю начать без ETH на аккаунте.

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

Его депозит в EntryPoint используется для оплаты. Если правила требуют отдельный stake, это залог, а не тот же доступный остаток для газа.

Руководство ERC-4337 по paymaster и EIP-4337 описывают проверку и расчёт.

Нулевая комиссия в интерфейсе приложения не означает отсутствия затрат. Спонсор может сначала заплатить, а затем получить компенсацию через подписку, токен или условия сервиса.

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

Оценивайте несколько вызовов и их комиссии отдельно

Если кошелёк поддерживает такой режим, одна UserOperation может содержать одобрение приложения и обмен. Оба действия проходят через EntryPoint как одна операция.

Это отличается от одной обычной транзакции EOA и от объединения bundler нескольких отдельных UserOperation в одну транзакцию сети. Проверьте предварительный просмотр кошелька.

Условный пример: фактическая стоимость газа для одобренной спонсируемой операции составляет 0,0012 ETH. Её могут списать из депозита paymaster в EntryPoint, а не из баланса пользователя. Это число приведено для примера, а не как текущая котировка.

Реальная стоимость зависит от использованного газа, условий комиссии и сети. Объединение не всегда дешевле или безопаснее. Атомарность нескольких вызовов зависит от обработки сбоев конкретным аккаунтом.

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

Руководство по комиссиям Ethereum объясняет поля комиссии.

Восстановление зависит от аккаунта, а не от ERC-4337

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

ERC-4337 позволяет аккаунту задавать собственные правила, но не включает резервные ключи или социальное восстановление автоматически. Малое число guardians или слабые правила замены ключа могут открыть путь атаке.

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

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

Проверяйте контракт с активами отдельно от ключей и служб управления. Руководство по восстановлению seed-фразы посвящено другому типу восстановления.

Перед отправкой проверьте операцию и путь контроля

В предварительном просмотре кошелька проверьте сеть, адрес аккаунта, целевые контракты, данные вызова, пределы одобрения токенов и число вызовов. Подпись может разрешить больше, чем действие, выделенное интерфейсом.

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

Активная отметка спонсирования не означает безусловную бесплатность, и paymaster всё ещё может отклонить запрос. Загрузка сети и задержка блока — отдельные факторы.

Если UserOperation долго ждёт, не применяйте автоматически «ускорение» или «отмену» для транзакций EOA. Сначала найдите хэш и квитанцию операции. Если известен хэш транзакции bundler, проверьте также квитанцию блока и результат исполнения.

RPC-квитанции могут отличать реальную стоимость и успех операции от квитанции всего пакета.

Частые вопросы

Q1UserOperation — это то же самое, что транзакция Ethereum?

Нет. Это запрос смарт-аккаунта через отдельный пул. Когда bundler отправляет вызов EntryPoint, сеть записывает пакетную транзакцию и результат каждой операции.

Q2Значит ли paymaster, что пользователь не платит за газ?

Пользователь может не платить ETH напрямую со своего аккаунта, но сетевые затраты остаются. Возможны лимиты, оплата токеном или условия сервиса; сбой операции тоже может стоить газа.

Q3Можно ли восстановить кошелёк ERC-4337 после потери ключа?

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

Источники и дополнительное чтение

Сообщить о проблеме

Мы подготовим письмо со ссылкой на эту статью. Mark получит сообщение только после отправки

Быстрая проверка

Прочитали руководство? Проверьте себя в 3 вопросах

Вопрос 1 / 3

Вопрос 01

Bundler вернул хэш UserOperation. Что это доказывает само по себе?

Выберите ответ, чтобы увидеть объяснение

Словарь опционов

Ожидающие транзакции EthereumОжидающие транзакции Ethereum: nonce, замена и отменаРазберитесь, почему транзакции Ethereum ждут, как nonce упорядочивают операции аккаунта и что могут и чего не могут сделать функции ускорения и отмены в кошельке.Комиссии за газ EthereumКак устроены комиссии за газ Ethereum: базовая комиссия, приоритетная комиссия и лимит газаРазберитесь, что означают единицы газа, лимит газа, базовая и приоритетная комиссии, а также максимальная комиссия, и рассчитайте фактическую стоимость транзакции в Ethereum.Руководство по восстановлению криптокошелькаSeed-фраза криптокошелька: резервная копия, восстановление и парольная фразаУзнайте, как seed-фраза связана с приватными ключами, как хранить офлайн-копию и как парольная фраза меняет восстановлениеОсновы опционовЧто означают «в деньгах», «около денег» и «вне денег»?Узнайте, как страйк опциона соотносится с ценой базового актива и почему смысл различается для коллов и путовОсновы опционовКолл-опционы: право покупателя и риск продавцаУзнайте, чем отличаются покупатель и продавец колла, что означает страйк $50, как премия влияет на безубыточность и когда возможно назначение