﻿---
title: "Абстракция аккаунта"
description: "Разберитесь в абстракции аккаунта Ethereum через смарт-аккаунты ERC-4337, версии EntryPoint, UserOperation, бандлеры, пэймастеры, линии nonce, валидацию, исполнение, делегирование EIP-7702, комиссии и риск восстановления."
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Абстракция аккаунта

> Только в образовательных целях; не является инвестиционным советом или инвестиционной рекомендацией. Инвестиции могут привести к убыткам.

<a id="answer"></a>

## Краткий ответ

Абстракция аккаунта делает правила авторизации и исполнения аккаунта программируемыми. В Ethereum стандарт ERC-4337 реализует это без изменения типа консенсусной транзакции: кошелёк отправляет `UserOperation` через специализированную RPC-инфраструктуру, бандлер оборачивает одну или несколько операций в обычную транзакцию к версионируемому контракту `EntryPoint`, а смарт-аккаунт валидирует и исполняет собственную операцию. Восстановление, ключи доступа, сеансовые ключи, лимиты расходов, пакетные вызовы и спонсирование комиссий — функции аккаунта или сервиса, построенные поверх этого потока, а не автоматические гарантии ERC-4337.

Это отличается от ERC-1271, стандартизирующего проверку контрактом подписи сообщения, и EIP-7702, позволяющего внешнему аккаунту (EOA) делегировать исполнение коду. Механизмы могут взаимодействовать, но не имеют общей модели интерфейса, nonce, развёртывания или безопасности. Абстракция аккаунта не устраняет учётные данные, стоимость газа, контрактный риск и необходимость проверки конкретной сети и реализации.

<a id="mechanism"></a>

## Поток ERC-4337 в семь шагов

1. Зафиксируйте среду: `chainId`, реализацию смарт-аккаунта и контроль обновлений, фабрику, версию EntryPoint, адрес и хеш развёрнутого кода, поддержку бандлера и активацию EIP-7702 в сети. Адрес, действительный для одного выпуска EntryPoint или одной сети, не является универсальной константой.
2. Сформируйте операцию для нужной версии. Текущие логические поля включают `sender`, `nonce`, `factory`, `factoryData`, `callData`, `callGasLimit`, `verificationGasLimit`, `preVerificationGas`, `maxFeePerGas`, `maxPriorityFeePerGas`, необязательные поля пэймастера и `signature`. В сети EntryPoint получает упакованное представление; целевые вызовы кодируются внутри определяемого аккаунтом `callData`, а не в универсальном поле цели.
3. Привяжите авторизацию к правильному домену. `userOpHash` охватывает операцию без подписи и привязывает её к EntryPoint и сети, не допуская повторного использования между этими доменами. Функция аккаунта `validateUserOp` проверяет владельца, мультиподпись, ключ доступа, сеанс или иную политику. ERC-1271 `isValidSignature` — отдельный интерфейс контрактной подписи; необязательный агрегатор может проверять агрегированные подписи. Кортеж авторизации EIP-7702 передаётся отдельно от UserOperation.
4. Подтвердите способность оплатить комиссию. Аккаунт может внести предоплату через баланс в EntryPoint, либо пэймастер может условно принять обязательство за счёт собственного депозита. Пэймастер может спонсировать пользователя, взимать токен, применять списки разрешений или квоты и запускать `postOp`; ERC-4337 не фиксирует эти коммерческие правила. Стейк отличается от депозита: стейк поддерживает правила валидации и репутации, а депозит оплачивает газ.
5. Оцените и отправьте через RPC ERC-7769. Бандлер выполняет валидацию при получении, повторно перед отбором и ещё раз при формировании пакета. ERC-7562 ограничивает опкоды и доступ к хранилищу на этапе валидации и поддерживает репутационные меры против отказа в обслуживании. Эта симуляция проверяет допустимость и оплату комиссии; для прогноза бизнес-исполнения нужна отдельная симуляция полного вызова.
6. Бандлер вызывает `handleOps`. EntryPoint выполняет разрешённое развёртывание, проверку аккаунта и пэймастера, контроль предоплаты и необязательную агрегацию до исполнения. Ошибка валидации не позволяет исполнить соответствующую операцию. Целевой вызов всё равно может откатиться после успешного допуска и израсходовать газ. Атомарный откат вызовов в одном пакете аккаунта или допустимость частичного успеха определяет код исполнения аккаунта.
7. Сверьте квитанции и состояние. Сопоставьте квитанцию UserOperation, базовую пакетную транзакцию, события EntryPoint, развёртывание аккаунта, целевые события, фактический газ, списание токена, возврат и конечные балансы. Затем отслеживайте линии nonce, изменения владельца и восстановления, отзыв сеансовых ключей, модули, обновления реализации, альтернативы бандлера и пэймастера, реорганизации, миграцию или повторное делегирование EIP-7702.

<a id="example"></a>

## Четыре расчётных примера

- **Упрощённый лимит газа.** Операция предусматривает `120,000` газа на исполнение, `90,000` на валидацию аккаунта, `45,000` на валидацию пэймастера, `40,000` на предварительную валидацию и `30,000` на действие пэймастера после операции: `120,000 + 90,000 + 45,000 + 40,000 + 30,000 = 325,000 gas`. При `maxFeePerGas = 30 gwei` упрощённый предел равен `325,000 × 30 gwei = 0.009750 ETH`. Если фактически оплачиваемое потребление составляет `210,000 gas` по `22 gwei`, стоимость равна `0.004620 ETH`. Правила версии EntryPoint, штрафы за неиспользованный газ, плата за данные L1 и ценообразование роллапа могут добавлять или переклассифицировать суммы, поэтому это бюджетный регистр, а не универсальная формула предоплаты.
- **Параллельная линия nonce.** При `192-bit key` и `64-bit sequence` ключ `7` и последовательность `42` кодируют `nonce = (7 << 64) | 42 = 129127208515966861354 = 0x7000000000000002a`. После успешного включения эта линия ожидает последовательность `43`; повтор `42` завершится неудачей. Другой ключ может иметь независимую последовательность с учётом логики аккаунта и правил бандлера.
- **Ёмкость пэймастера.** Пэймастер имеет депозит `0.50 ETH`, а каждой принятой операции нужна максимальная гарантия `0.03 ETH`. Он может покрыть `floor(0.50 / 0.03) = 16` таких операций, зарезервировав `0.48 ETH` и оставив `0.02 ETH`. Для семнадцатой операции нужен больший депозит или меньшая гарантия. Стейк пэймастера не заменяет депозит для комиссий.
- **Откат исполнения после допуска.** Операция резервирует до `0.0060 ETH`; валидация проходит, но целевое исполнение откатывается после расхода `180,000 gas × 25 gwei = 0.0045 ETH`. Изменения целевого состояния откатываются, однако аккаунт или пэймастер всё равно должен `0.0045 ETH`; неиспользованные `0.0015 ETH` регулируются применимыми правилами расчёта и штрафов. Успешная симуляция бандлера не обещает бизнес-успеха, включения или финальности.

<a id="risks"></a>

## Риски и меры контроля

- Неверная сеть, адрес EntryPoint, выпуск или хеш развёрнутого кода могут сделать операцию недействительной или направить её неверно.
- Подпись без привязки к сети или домену EntryPoint может допустить повторное воспроизведение.
- Фабрика, контрфактический адрес, данные инициализации или salt развёртывания могут быть подменены либо рассчитаны ошибочно.
- Делегирование EIP-7702 может направить EOA на вредоносный или уязвимый код с широкими полномочиями над аккаунтом.
- Опережающая или повторная инициализация может захватить либо повредить аккаунт.
- Обновление прокси или повторное делегирование EIP-7702 может конфликтовать с существующей разметкой хранилища.
- Скомпрометированный администратор обновления или модулей может заменить поведение аккаунта.
- Ошибки проверки владельца, мультиподписи, ключа доступа или ERC-1271 могут разрешить кражу либо заблокировать средства.
- Пороги, задержки, хранители и пути отмены восстановления могут отказать или быть захвачены.
- Сеансовые ключи могут превысить задуманный охват цели, токена, суммы, срока или функции.
- Линии nonce могут пересекаться, образовывать разрывы, воспроизводиться или блокировать зависимые операции.
- Отказ агрегатора или дефекты агрегации подписей могут заблокировать в остальном действительные операции.
- Бандлеры могут цензурировать, отключаться, применять разные локальные политики или отклонять правила альтернативного mempool.
- Публичный поток UserOperation может раскрыть намерение для опережения, корреляции и MEV.
- Валидация может пройти до изменения состояния, делающего операцию недействительной при формировании пакета.
- Политика пэймастера может отказать в обслуживании, его депозит может исчерпаться, а `postOp` — завершиться ошибкой.
- Комиссия за газ в токенах может включать валютный риск, риск разрешения, спред и наценку сервиса.
- Недооценка газа может вызвать откат; завышенные лимиты увеличивают резервирование или штрафной риск.
- Семантика пакета аккаунта может разрешить частичный успех, когда пользователь ожидает атомарный откат.
- Ошибки целевого протокола, враждебные интерфейсы, реорганизации сети и слабая финальность остаются вне абстракции аккаунта.

<a id="misconceptions"></a>

## Распространённые заблуждения

- «Абстракция аккаунта устраняет закрытые ключи». Она меняет программируемую политику учётных данных; какие-либо данные всё равно должны авторизовать действия.
- «Пэймастер делает газ бесплатным». Нативный газ всё равно оплачивается, и затраты в конечном счёте несёт пользователь, спонсор или сервис.
- «Симуляция бандлера гарантирует успех». Симуляция допуска не гарантирует исполнение, включение или финальность.
- «ERC-1271, ERC-4337 и EIP-7702 — один интерфейс». Они решают разные задачи подписи, потока транзакций и делегирования.
- «Любые сеть, кошелёк и EntryPoint совместимы и безопаснее». Поддержку, версии, развёртывания, код, модули и контроль нужно проверять отдельно.

<a id="related"></a>

## Связанные темы

- [Риски владельца и восстановления смарт-аккаунта](/ru/crypto/smart-account-owner-recovery-risk/)
- [Кошелёк с сеансовым ключом](/ru/crypto/session-key-wallet/)
- [Симуляция транзакции](/ru/crypto/transaction-simulation/)

<a id="sources"></a>

## Источники

- [ERC-4337: Account Abstraction Using Alt Mempool](https://eips.ethereum.org/EIPS/eip-4337)
- [ERC-7562: Account Abstraction Validation Scope Rules](https://eips.ethereum.org/EIPS/eip-7562)
- [ERC-7769: JSON-RPC API for ERC-4337](https://eips.ethereum.org/EIPS/eip-7769)
- [ERC-1271: Standard Signature Validation Method for Contracts](https://eips.ethereum.org/EIPS/eip-1271)
- [EIP-7702: Set Code for EOAs](https://eips.ethereum.org/EIPS/eip-7702)
- [The EntryPoint Contract](https://docs.erc4337.io/smart-accounts/entrypoint-explainer.html)
- [Simulation Requirements](https://docs.erc4337.io/bundlers/simulation-requirements.html)
- [Releases - eth-infinitism/account-abstraction](https://github.com/eth-infinitism/account-abstraction/releases)

Source: https://wiki.fcontext.com/ru/crypto/account-abstraction/index.mdx
