Перейти к содержанию

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

Разберитесь в абстракции аккаунта Ethereum через смарт-аккаунты ERC-4337, версии EntryPoint, UserOperation, бандлеры, пэймастеры, линии nonce, валидацию, исполнение, делегирование EIP-7702, комиссии и риск восстановления.

Обновлено

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

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

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

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

Поток 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.

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

  • Упрощённый лимит газа. Операция предусматривает 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 регулируются применимыми правилами расчёта и штрафов. Успешная симуляция бандлера не обещает бизнес-успеха, включения или финальности.

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

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

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

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

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

Источники

Навигация

Поиск по вики...