Приложение, аккаунт и ключ — три разные вещи
Wallet app показывает баланс, строит transaction и предлагает её подписать. Account — объект в конкретной сети, которому принадлежат активы и состояние. Key или другой credential доказывает право выполнить действие. В привычном externally owned account, EOA, эти уровни легко спутать: тот, кто получил private key, фактически получил полный контроль.
Contract account живёт по коду. Он может считать одну подпись достаточной, требовать две из трёх, разрешать маленькие платежи session key или заменять основной credential после recovery delay. Account Abstraction создаёт инфраструктуру, при которой такой аккаунт может инициировать пользовательское действие без ручной цепочки вспомогательных EOA-транзакций.
| Свойство | Обычный EOA | Smart account |
|---|---|---|
| Проверка доступа | Фиксированная подпись ECDSA private key | Логика wallet contract: ключи, пороги, условия |
| Recovery | Новый ключ не восстанавливает старый адрес | Возможен, если код заранее определил recovery role и процесс |
| Пакет действий | Обычно несколько отдельных transactions | Contract может выполнить несколько calls как одну операцию |
| Оплата gas | Отправитель держит native asset | Возможен paymaster или иной fee flow, если его поддерживает система |
| Лимиты | Нет встроенного дневного лимита аккаунта | Можно реализовать spending limits, allowlists и session permissions |
- Свойство
- Проверка доступа
- Обычный EOA
- Фиксированная подпись ECDSA private key
- Smart account
- Логика wallet contract: ключи, пороги, условия
- Свойство
- Recovery
- Обычный EOA
- Новый ключ не восстанавливает старый адрес
- Smart account
- Возможен, если код заранее определил recovery role и процесс
- Свойство
- Пакет действий
- Обычный EOA
- Обычно несколько отдельных transactions
- Smart account
- Contract может выполнить несколько calls как одну операцию
- Свойство
- Оплата gas
- Обычный EOA
- Отправитель держит native asset
- Smart account
- Возможен paymaster или иной fee flow, если его поддерживает система
- Свойство
- Лимиты
- Обычный EOA
- Нет встроенного дневного лимита аккаунта
- Smart account
- Можно реализовать spending limits, allowlists и session permissions
ERC-4337 добавляет параллельный путь от намерения до транзакции
В ERC-4337 wallet формирует не обычную Ethereum transaction, а UserOperation. В ней есть sender, calldata, nonce, ограничения gas, signature и optional paymaster data. Объект отправляется в отдельный mempool, где bundler проверяет его и собирает несколько operations в одну transaction к общему EntryPoint contract.
Кто отвечает за каждую стадию
- Формирует UserOperation
Интерфейс кодирует желаемые calls и получает authorization по правилам конкретного account.
- Симулирует validation и собирает bundle
Bundler отбрасывает operation, которая не проходит account validation или не покрывает fee по правилам EntryPoint.
- Проверяет и запускает исполнение
Contract вызывает validateUserOp у smart account, учитывает paymaster и после успешной проверки исполняет calldata.
- Обычная transaction закрепляет bundle
On-chain receipt содержит события EntryPoint и account; один outer hash может включать несколько UserOperations.

Из-за этой архитектуры explorer может показывать два идентификатора: transaction hash bundle и UserOperation hash. Первый доказывает включение outer transaction, второй помогает найти конкретную operation внутри EntryPoint flow. Поддержка должна уточнять, какой идентификатор нужен, а не называть оба просто hash перевода.
Paymaster меняет плательщика, но не отменяет стоимость gas
Paymaster contract может согласиться оплатить gas за UserOperation. Приложение способно субсидировать onboarding, принимать reimbursement в ERC-20 или оплачивать только разрешённые действия. EntryPoint проверяет, есть ли у paymaster достаточный deposit и принимает ли он конкретную operation.
Надпись gasless означает, что пользователь не платит native asset напрямую в этом flow. Расход несёт sponsor, включается в другую комиссию или покрывается по условиям продукта. Paymaster вправе отказать из-за лимита, политики, времени или calldata, поэтому это dependency, а не бесплатное свойство адреса.
EIP-7702 даёт EOA исполнять делегированный код
EIP-7702 вводит set-code transaction с authorization list. Владелец EOA подписывает delegation к адресу implementation, и его аккаунт может выполнять код этого delegate. Это позволяет получить batching, sponsorship и programmable permissions без обязательного перевода активов на новый contract-account address.
ERC-4337 и EIP-7702 не являются синонимами. Первый описывает UserOperation, bundlers и EntryPoint без изменения consensus rules. Второй добавляет protocol transaction type для делегирования EOA. Современный wallet flow может сочетать их: ERC-4337 specification содержит поддержку EIP-7702 authorization для delegated accounts.
Recovery и session keys существуют только там, где их написал разработчик
| Функция | Что может дать | Что обязательно выяснить |
|---|---|---|
| Social recovery | Замена основного credential через guardians | Кто guardians, какой threshold и delay, можно ли отменить захват |
| Несколько устройств | Разные keys с разными ролями | Какие действия доступны каждому key и как его revoke |
| Session key | Ограниченные действия без каждой ручной подписи | Contracts, methods, amounts, chain и expiry разрешения |
| Batch execution | Approve и action в одной operation | Весь список calls и поведение при partial failure |
| Spending limit | Ограничение суммы или периода | Какая единица, oracle и обходные paths участвуют в расчёте |
| Upgrade | Исправление кода без смены адреса | Кто upgrade authority, есть ли delay и можно ли выбрать immutable version |
- Функция
- Social recovery
- Что может дать
- Замена основного credential через guardians
- Что обязательно выяснить
- Кто guardians, какой threshold и delay, можно ли отменить захват
- Функция
- Несколько устройств
- Что может дать
- Разные keys с разными ролями
- Что обязательно выяснить
- Какие действия доступны каждому key и как его revoke
- Функция
- Session key
- Что может дать
- Ограниченные действия без каждой ручной подписи
- Что обязательно выяснить
- Contracts, methods, amounts, chain и expiry разрешения
- Функция
- Batch execution
- Что может дать
- Approve и action в одной operation
- Что обязательно выяснить
- Весь список calls и поведение при partial failure
- Функция
- Spending limit
- Что может дать
- Ограничение суммы или периода
- Что обязательно выяснить
- Какая единица, oracle и обходные paths участвуют в расчёте
- Функция
- Upgrade
- Что может дать
- Исправление кода без смены адреса
- Что обязательно выяснить
- Кто upgrade authority, есть ли delay и можно ли выбрать immutable version
Фраза «без seed-фразы» описывает onboarding, а не полную модель восстановления. За biometric prompt может стоять device key, cloud backup, guardian service или централизованный recovery provider. Пользователю нужен ответ, что произойдёт при потере телефона, блокировке аккаунта провайдера и недоступности backend.
Один private key заменяется системой из contracts и сервисов
Новые точки, которые влияют на доступ
- wallet implementation и корректность validation logic;
- factory, которая разворачивает account по ожидаемому адресу;
- EntryPoint version и совместимость account;
- bundler availability и его правила mempool;
- paymaster deposit и policy, если пользователь не держит native gas;
- guardians, modules, session keys и upgrade authority;
- frontend и RPC, которые должны правильно показать весь bundle calls.
Это не обязательно хуже EOA. Programmable limits способны уменьшить ущерб от одного украденного key, а recovery — спасти от потери устройства. Но безопасность перемещается: теперь нужно доверять не одному секрету, а корректности policy и возможности восстановить её без злоумышленника.
Экран подписи должен раскрывать authorization, а не только красивое действие
Экран подписи для UserOperation должен показать assets, recipients, approvals, delegate address и limits на понятном уровне, но подпись относится к точному encoded payload. Симуляция помогает предсказать execution, однако не доказывает, что upgradeable contract останется тем же после подписи или что внешний интерфейс правильно описал экономический смысл.
Особенно внимательно относитесь к установке module, добавлению guardian, созданию session key и EIP-7702 delegation. Обычный transfer тратит определённую сумму сейчас; изменение account policy способно разрешить будущие действия без повторения того же окна.
Одинаковый адрес в двух сетях не гарантирует одинаковый smart account
Contract-account code и storage существуют отдельно в каждой chain. Factory может вычислить одинаковый counterfactual address, но account ещё не обязан быть deployed везде. Даже при совпадающем адресе modules, owners, EntryPoint и balance нужно проверять для конкретного chain ID.
Перед отправкой актива убедитесь, что destination network поддерживается wallet product и recovery flow. Возможность увидеть тот же hex address не доказывает, что пользователь сможет управлять account в этой сети. Эта граница особенно важна при выводе с биржи или bridge transfer.
Как проверить smart wallet до перевода основной суммы
- Определите account type: отдельный contract account, ERC-4337 flow, EIP-7702 delegation или custodial ledger.
- Найдите официальные contract addresses, EntryPoint version и deployment networks.
- Запишите owners, guardians, threshold, delay, active modules и session permissions.
- Уточните, кто оплачивает gas и что произойдёт при отказе paymaster или bundler.
- Проверьте export и recovery без передачи seed, private key или one-time codes поддержке.
- Сделайте небольшую operation, затем отдельно проверьте receipt, events и способ revoke временного доступа.
Smart account полезен не количеством функций, а понятной policy. Хороший интерфейс позволяет ответить, кто может действовать, что именно разрешено, когда право истекает и как его отменить. Если ответы скрыты за словом smart, пользователь получил более сложный аккаунт, но не обязательно более безопасный.
Источники
Мы используем прямые ссылки и фиксируем дату проверки. Полный текст чужих материалов не перепечатывается.
- Ethereum.org — Account Abstraction Ethereum Foundation · Проверено 14 августа 2026 г. в 22:44 GMT+5
- Ethereum.org — типы Ethereum accounts Ethereum Foundation · Проверено 14 августа 2026 г. в 22:44 GMT+5
- ERC-4337 — Account Abstraction через EntryPoint Ethereum Improvement Proposals · Проверено 14 августа 2026 г. в 22:44 GMT+5
- EIP-7702 — Set Code for EOAs Ethereum Improvement Proposals · Проверено 14 августа 2026 г. в 22:44 GMT+5
