[{"data":1,"prerenderedAt":19},["ShallowReactive",2],{"blog-content-ru-bundler-and-useroperation-explained":3},{"slug":4,"title":5,"excerpt":6,"description":7,"bodyHtml":8,"faqItems":9},"bundler-and-useroperation-explained","Бандлеры и UserOperation: как работают транзакции ERC-4337","Понятный и технически точный разбор процесса ERC-4337 — UserOperation, альтернативный мемпул, бандлеры, контракт EntryPoint и пейместеры — и как они сочетаются друг с другом.","Как на самом деле работает ERC-4337: UserOperation, альтернативный мемпул, бандлеры, контракт EntryPoint и место пейместеров в процессе транзакции.","\u003Ch2>Краткое напоминание об ERC-4337\u003C\u002Fh2>\n\u003Cp>ERC-4337 — это стандарт Ethereum для \u003Cem>абстракции аккаунтов\u003C\u002Fem> — способ дать смарт-контрактным аккаунтам ту же первоклассную способность инициировать и оплачивать действия, которая всегда была у управляемых извне аккаунтов (EOA), без каких-либо изменений базового протокола. Вместо изменения уровня консенсуса ERC-4337 вводит параллельную систему объектов более высокого уровня и офчейн-инфраструктуры, которая в итоге рассчитывается через обычные транзакции Ethereum. Если сначала вам нужна версия с нуля, наше объяснение \u003Ca href=\"\u002Fblog\u002Fwhat-is-account-abstraction\">что такое абстракция аккаунтов\u003C\u002Fa> охватывает мотивацию, а \u003Ca href=\"\u002Fblog\u002Fwhat-is-erc-4337\">что такое ERC-4337\u003C\u002Fa> описывает весь стандарт. Эта статья приближается к механике: объектам, которые движутся через систему, и участникам, которые их обрабатывают. Обратите внимание, что ERC-4337 — это стандарт EVM: он применяется к Ethereum и EVM-совместимым сетям, но не к сетям вне EVM, таким как Solana или TON.\u003C\u002Fp>\n\u003Ch2>Что такое UserOperation на самом деле\u003C\u002Fh2>\n\u003Cp>Центральный объект в ERC-4337 — \u003Cem>UserOperation\u003C\u002Fem>. Внешне он похож на транзакцию, но его лучше понимать как подписанное заявление о намерении: «вот что мой аккаунт хочет сделать, и вот параметры для проверки и оплаты этого». UserOperation несёт такие поля, как аккаунт-отправитель, nonce, calldata для выполнения, лимиты газа, параметры комиссии, необязательное поле \u003Ccode>paymasterAndData\u003C\u002Fcode> и подпись.\u003C\u002Fp>\n\u003Cp>Ключевое отличие от обычной транзакции — в том, \u003Cem>кто\u003C\u002Fem> и \u003Cem>что\u003C\u002Fem> её подписывает. Обычная транзакция Ethereum должна быть подписана приватным ключом EOA по фиксированной схеме ECDSA, и этот же аккаунт платит газ. UserOperation проверяется собственной логикой смарт-контрактного аккаунта отправителя — которая может реализовывать любую схему подписи, правило нескольких ключей или политику авторизации, определённую аккаунтом, — и она вовсе не обязана платить за себя нативным газом. В этой гибкости и весь смысл: аккаунт, а не протокол, решает, как выглядит допустимое действие.\u003C\u002Fp>\n\u003Ch2>Альтернативный мемпул, где они живут\u003C\u002Fh2>\n\u003Cp>UserOperation не попадают в обычный мемпул транзакций Ethereum, потому что они ещё не транзакции. Вместо этого они транслируются в отдельный \u003Cem>альтернативный мемпул\u003C\u002Fem> (часто называемый alt-мемпул) — одноранговую сеть, посвящённую объектам ERC-4337. Кошельки и dApp отправляют UserOperation сюда, а инфраструктура, которая их потребляет, слушает эту сеть, а не мемпул базового уровня. Такое разделение держит трафик абстракции аккаунтов вне критичного для консенсуса пути до того момента, пока он не будет упакован в настоящую транзакцию.\u003C\u002Fp>\n\u003Ch2>Роль бандлера\u003C\u002Fh2>\n\u003Cp>\u003Cem>Бандлер\u003C\u002Fem> — это офчейн-участник, превращающий намерения в ончейн-реальность. Его работа состоит из четырёх частей. Во-первых, он собирает UserOperation из альтернативного мемпула. Во-вторых, он симулирует и проверяет каждую из них — запуская логику проверки аккаунта в симулированном контексте, чтобы подтвердить, что подпись действительна, nonce верен, а аккаунт (или его пейместер) может покрыть стоимость, — соблюдая при этом правила, не позволяющие операциям потреблять ресурсы, за которые они не могут заплатить. В-третьих, он упаковывает одну или несколько действительных UserOperation в одну обычную транзакцию Ethereum. В-четвёртых, он отправляет эту транзакцию в сеть со своего собственного EOA, авансируя газ базового уровня и рассчитывая на возмещение ончейн.\u003C\u002Fp>\n\u003Cp>Поскольку бандлер авансирует газ и зарабатывает комиссии за включение, он ведёт себя во многом как специализированный сборщик блоков для трафика абстракции аккаунтов. Его защищает именно шаг симуляции и проверки: он не станет включать в пакет операцию, которая не смогла бы ему возместить затраты.\u003C\u002Fp>\n\u003Ch2>Контракт EntryPoint\u003C\u002Fh2>\n\u003Cp>Всё сходится в едином каноническом смарт-контракте под названием \u003Cem>EntryPoint\u003C\u002Fem>. Транзакция бандлера — это вызов EntryPoint с массивом UserOperation. Затем EntryPoint выполняет строгий двухфазный цикл. В \u003Cem>фазе проверки\u003C\u002Fem> для каждой операции он вызывает функцию проверки аккаунта-отправителя (и пейместера, если он указан), чтобы перепроверить подпись, nonce и договорённость об оплате ончейн. Только после того как все операции в пакете проверены, он переходит к \u003Cem>фазе выполнения\u003C\u002Fem>, где направляет calldata каждой операции её аккаунту, чтобы фактически выполнить перевод, своп или другое действие.\u003C\u002Fp>\n\u003Cp>Это разделение важно: проверка и выполнение разделены так, чтобы гарантии оплаты пакета устанавливались до запуска любой работы, изменяющей состояние, и чтобы EntryPoint мог точно учитывать газ сразу по многим операциям.\u003C\u002Fp>\n\u003Ch2>Где место пейместера\u003C\u002Fh2>\n\u003Cp>\u003Cem>Пейместер\u003C\u002Fem> — это необязательный контракт, который соглашается оплатить UserOperation от имени аккаунта. Когда UserOperation включает данные пейместера, EntryPoint во время фазы проверки спрашивает этот пейместер, будет ли он спонсировать операцию и на каких условиях. Пейместер может согласиться безусловно (настоящее спонсирование без газа) или согласиться в обмен на ценность — что наиболее полезно, списывая с пользователя оплату в \u003Cem>токене ERC-20\u003C\u002Fem> вместо нативного газа. Для более подробного разбора этого компонента см. \u003Ca href=\"\u002Fblog\u002Fwhat-is-a-paymaster\">что такое пейместер\u003C\u002Fa>. Пейместер — это точка в процессе, которая отделяет «чем платит пользователь» от «в чём получает оплату сеть».\u003C\u002Fp>\n\u003Ch2>Как обрабатываются газ и сбои\u003C\u002Fh2>\n\u003Cp>Газ в ERC-4337 многослоен. Бандлер платит реальный ETH за внешнюю транзакцию; EntryPoint измеряет газ проверки и выполнения каждой UserOperation относительно объявленных ею лимитов; а тот, кто отвечает по счёту — аккаунт или его пейместер — должен был застейкать или внести достаточно, чтобы покрыть счёт, который EntryPoint рассчитывает в конце. Сбои сдерживаются благодаря дизайну «сначала проверка». Если операция даёт сбой во время ончейн-проверки, она просто исключается и не может попасть в сеть, а офчейн-симуляция бандлера призвана выявить это до отправки. Если операция проходит проверку, но её выполнение откатывается, эффекты выполнения откатываются, тогда как уже потраченный газ всё равно учитывается и оплачивается — так что бандлер не остаётся без вознаграждения за честную работу. Именно поэтому бандлеры так тщательно симулируют: их защита от грифинга — это отказ включать что-либо, что не возместит им затрат.\u003C\u002Fp>\n\u003Ch2>Как это использует WATS\u003C\u002Fh2>\n\u003Cp>В EVM-сетях WATS опирается ровно на один элемент этого процесса: \u003Cem>пейместер\u003C\u002Fem> ERC-4337. Когда вы делаете перевод, своп или стейкинг в WATS \u003Ca href=\"\u002Fhot-wallet\">Hot Wallet\u003C\u002Fa>, именно пейместер позволяет взимать вашу комиссию в ATS, а не в нативном газе сети — вам никогда не нужно держать ETH, BNB или любой другой газовый токен, чтобы совершать транзакции. Поскольку ATS — это OFT на LayerZero, единый баланс ATS покрывает комиссии в EVM, Solana и TON (в сетях вне EVM роль пейместера играет эквивалентный плательщик комиссии), а собранный ATS сжигается со 100 000 000 к нижней границе в 30 000 000. WATS остаётся полностью некастодиальным — вы держите собственные ключи — и это первый и единственный кошелёк, сочетающий комиссии в одном токене ERC-4337 + OFT, взимаемые вместо нативного газа, с таким сжиганием. См. \u003Ca href=\"\u002Fats-fee\">как работает модель комиссии ATS\u003C\u002Fa>, чтобы увидеть полную картину.\u003C\u002Fp>",[10,13,16],{"q":11,"a":12},"В чём разница между UserOperation и обычной транзакцией Ethereum?","Обычная транзакция подписывается управляемым извне аккаунтом по фиксированной схеме ECDSA и платит собственный газ в нативном токене сети. UserOperation — это объект намерения более высокого уровня, проверяемый собственной логикой смарт-контрактного аккаунта отправителя, которая может использовать пользовательские правила, и она не обязана платить за себя нативным газом — комиссию может покрыть пейместер. UserOperation также проходят через отдельный альтернативный мемпул, а не через стандартный мемпул транзакций.",{"q":14,"a":15},"Что на самом деле делает бандлер ERC-4337?","Бандлер собирает UserOperation из альтернативного мемпула, симулирует и проверяет каждую, чтобы подтвердить подписи, nonce и возможность покрыть оплату, затем упаковывает действительные в одну обычную транзакцию Ethereum, вызывающую контракт EntryPoint. Он отправляет эту транзакцию со своего собственного аккаунта, авансируя газ базового уровня и рассчитывая на возмещение ончейн. Тщательная симуляция и защищает бандлер от включения операций, которые не вернут ему затраты.",{"q":17,"a":18},"Позволяет ли ERC-4337 платить комиссию за газ в токене, отличном от ETH?","Да, когда используется пейместер. Пейместер — это необязательный контракт, который может спонсировать UserOperation и вместо взимания нативного газа принимать оплату в токене ERC-20, оплачивая фактическую сетевую комиссию отдельно. Именно так кошелёк может позволить вам совершать транзакции без владения нативным газовым токеном сети. ERC-4337 и его пейместеры существуют только в EVM; сети вне EVM, такие как Solana и TON, достигают похожего результата с помощью эквивалентного плательщика комиссии или релеера.",1784634300472]