Bundler (бандлер): узел для обработки UserOperation в ERC-4337

Bundler (бандлер) — это узел в экосистеме Account Abstraction (AA), который собирает UserOperation из специализированного мемпула, объединяет их в пакет и отправляет в EntryPoint-контракт в виде одной обычной L1-транзакции. В модели ERC-4337 именно бандлер «переводит» мир UserOperation в мир стандартных транзакций Ethereum.

Если упрощать, бандлер — это «мини-блок-билдер» для AA-транзакций: он решает, какие UserOperation взять в пакет, как оценить их комиссию и когда отправить bundle в сеть.

Bundler (бандлер): узел для обработки UserOperation в ERC-4337

Зачем в ERC-4337 нужен бандлер

В классической модели Ethereum:

  • пользователь с EOA-аккаунтом отправляет L1-транзакцию напрямую в узлы;
  • валидаторы включают её в блок, опираясь на цену газа.

В AA-модели:

  • пользовательский кошелёк формирует UserOperation (UserOp), а не обычную транзакцию;
  • UserOp попадает в отдельный мемпул для AA;
  • протоколу нужен участник, который:
    • соберёт набор UserOp,
    • проверит, что за них заплатят газ,
    • упакует их в вызов EntryPoint.

Эту роль и выполняет bundler. Без бандлеров UserOperation так и оставались бы «на бумаге»: именно они превращают AA-запросы в реальное исполнение на L1.

Как работает bundler: жизненный цикл UserOperation

Высокоуровневый сценарий выглядит так:

  • Формирование UserOp.

Кошелёк AA создаёт UserOperation: заполняет callData, лимиты газа, подпись, данные paymaster и другие поля стандарта ERC-4337.

  • Попадание в UserOp-мемпул.

UserOperation отправляется не в обычный mempool, а в специализированные RPC-эндпоинты бандлеров, которые поддерживают протокол ERC-4337.

  • Отбор операций бандлером.

Bundler анализирует UserOp:

  • достаточна ли комиссия, чтобы покрыть L1-газ;
  • надёжно ли ведёт себя указанный paymaster;
  • нет ли явного фрода или DoS-шаблонов.
  • Сборка bundle.

Бандлер формирует пакет из нескольких UserOp, оптимизируя:

  • потенциальный доход (commission, возмещение от paymaster’ов),
  • размер и стоимость транзакции.
  • Отправка в EntryPoint.

Bundler создаёт обычную L1-транзакцию с вызовом EntryPoint-контракта, в calldata которой передаётся массив UserOperation. Дальше уже контракт:

  • валидирует каждую UserOp,
  • вызывает аккаунты-контракты пользователей,
  • списывает gas с аккаунта или paymaster’а.

Таким образом, bundler — это мост между «виртуальным mempool’ом UserOp» и настоящим Ethereum-блокчейном.

Экономика bundler’а: откуда доход и какие расходы

Бандлер несёт реальные расходы:

  • платит комиссию газом за свою L1-транзакцию;
  • рискует, что часть UserOp окажется невалидной и придётся оплатить потраченный газ.

В обмен он получает доход:

  • комиссии от аккаунтов и paymaster’ов.

Валидация UserOp и логика EntryPoint устроены так, чтобы:

  • компенсировать gas-затраты bundler’а;
  • дать ему маржу за включение операции.
  • MEV-возможности вокруг AA-транзакций.

В перспективе бандлер может:

  • сортировать UserOp так, чтобы извлекать дополнительную ценность (арбитраж, ликвидации и др.);
  • конкурировать с другими бандлерами за наиболее выгодные операции.

Из-за этой экономической компоненты bundler — не просто «инфраструктурный релей», а полноценный участник рынка комиссий и MEV, но уже на уровне AA.

Риски и потенциальные векторы атак со стороны bundler’ов

Появление слоя бандлеров добавляет новые риски:

  • Цензура UserOperation.

Bundler может отказываться включать определённые операции или адреса:

  • по регуляторным причинам;
  • по экономическим причинам (низкая комиссия, рискованные paymaster’ы);
  • по произвольным правилам.
  • Фрод и неправильно настроенные paymaster’ы.

Если bundler неверно оценивает, сколько ему компенсируют:

  • он может потерять средства на газе;
  • или станет целью для целенаправленных атак на «burn газ за чужой счёт».
  • Концентрация рынка bundler’ов.

Если в сети закрепится небольшое число крупных бандлеров, они:

  • получат рычаги влияния на AA-трафик;
  • смогут координироваться в MEV-стратегиях.
  • Технические DoS-риски.

Массовый поток сложных UserOp может:

  • перегрузить валидирующую логику бандлера;
  • сделать работу с UserOp-мемпулом тяжёлой и уязвимой к спаму.

Для зрелых AA-систем поэтому важны и конкуренция между бандлерами, и открытые спецификации mempool’а, и хорошая защита на уровне EntryPoint-контракта.

Что важно знать пользователям и разработчикам

Если вы:

  • пользователь AA-кошелька, стоит понимать:
    • ваши операции сначала попадают к бандлерам, а уже потом — в основной слой Ethereum;
    • скорость и предсказуемость подтверждений могут зависеть от того, насколько крупные и надёжные bundler-провайдеры использует кошелёк.
  • разработчик dApp или кошелька, вам нужно учитывать:
    • как вы взаимодействуете с bundler-инфраструктурой (собственный бандлер, сторонние сервисы, несколько провайдеров);
    • как на UX влияет политика отбора UserOp (минимальная комиссия, требования к paymaster, лимиты);
    • предусмотрен ли fallback-сценарий, если конкретный bundler временно перестанет обслуживать UserOp.

Грамотная работа с bundler-слоем — это часть общей архитектуры безопасности и надёжности AA-продукта, а не только «деталь реализации».

См. также

Task Runner