Автор: Киви Яо, исследователь OKX Ventures
Абстракция аккаунта (AA) в последнее время стала набирать популярность в криптопространстве, поскольку она полностью меняет установленные правила управления аккаунтами в Ethereum. Это решение устраняет ряд трудностей и может уменьшить порог входа для тех, кто далек от мира криптовалют. Среди его преимуществ — отделение источников транзакций от подписей и предоставление пользователям большего контроля в обеспечении безопасности аккаунта.
Хотите узнать больше? Мы расскажем все об абстракции аккаунта и EIP-4337.
Что такое абстракция аккаунта?
Прежде чем перейти к изучению АА, важно сначала разобраться в типах аккаунтов на Ethereum. К ним относятся аккаунты с внешним владельцем (EOA) и контрактные аккаунты (CA). EOA контролируются приватными ключами и сид-фразами, в то время как контрактные аккаунты управляются смарт-контрактами. Абстракция аккаунта означает процесс отделения источников транзакций от подписей и перехода от EOA к CA. Это дает смарт-контрактам контроль над EOA и позволяет создавать кошельки смарт-контрактов, что повышает удобство для владельцев аккаунтов и делает управление аккаунтами более гибким.
Чем полезна АА?
AA активно поддерживается сообществом Ethereum, поскольку она упрощает весь процесс управления аккаунтами. Среди ее преимуществ большая гибкость ончейн-активности и больше возможностей обеспечения безопасности. Благодаря этим улучшениям, AA существенно улучшает общий опыт взаимодействия с экосистемой Ethereum, так как устраняет многочисленные неудобства и проблемы.
История Ethereum и АА
Прежде чем перейти к истории АА, давайте разберемся с различными предложениями по улучшению Ethereum (EIP), которые играют важную роль в появлении АА.
EIP-2938 предполагает наделение контрактных аккаунтов «верхнего уровня» возможностью платить комиссии и выполнять транзакции. В EIP-3074 представлены два новых кода операций (OpCodes) — AUTH и AUTHCALL — позволяющие EOA делегировать свои действия контракту. В результате у разработчиков появляется более гибкая среда для создания объектов транзакций и механизмов верификации.
EIP-4337 создает мемпул пользовательских операций (user ops). Он представляет собой новую операционную логику, которая заменяет текущий мемпул транзакций и позволяет применять AA.
Хотя AA впервые упоминалась как часть предложений EIP-2938 и EIP-3074 еще в 2020 году, эти изменения в конечном итоге были отложены. Это было связано с необходимостью масштабных изменений в протоколе Ethereum. С появлением EIP-4337 абстракция аккаунта станет возможной без необходимости изменения протокола.
Сравнение с другими решениями абстракции аккаунта
Хотя предложение EIP-4337 может показаться сложным новичкам в Ethereum, предыдущее решение AA — EIP-3074 — предполагало введение двух новых кодов операций. Поскольку это требовало обширных изменений на уровне консенсуса в Ethereum, предложение было приостановлено.
Подробный анализ EIP-4337
Источник: OKX Ventures
Поскольку EIP-4337 является последним предложением по добавлению AA, важно понять его суть и разницу между EIP-4337 и его предшественниками. Вот несколько ключевых терминов:
UserOperation — это объект, с помощью которого пользователь осуществляет отправку транзакции
EntryPoint (точка входа) — это контракт, который выполняет пакетные транзакции пользовательских операций
Упаковщик — это нода, которая обрабатывает пользовательские операции в одной транзакции и добавляет транзакции точки входа в блок, пока они еще действительны
Контракты кошелька — это аккаунты смарт-контрактов, принадлежащие пользователям
Фабрика кошельков — это смарт-контракт, который может создавать новые кошельки смарт-контрактов по запросу
Агрегаторы — это вспомогательные контракты, которым аккаунты доверяют проверку агрегированных подписей. Затем упаковщики вносят в белый список поддерживаемые агрегаторы.
Казначеи — это контракты, отвечающие за размещение пользовательской логики в блокчейне. Это включает в себя обеспечение гибкости оплаты газа в любой валюте и в любой сети.
EIP-4337 упрощает процесс AA за счет внедрения упаковщиков, контракта точки входа, казначея, фабрики кошельков, агрегатора подписей и пользовательских операций.
Когда пользователь хочет отправить транзакцию, он создает пользовательскую операцию. В ней содержится вся информация, необходимая для отправки транзакции, но нет подписи.
Пользовательские операции затем отправляются в упаковщик. Он представляет собой смарт-контракт, который группирует пользовательские операции в одну транзакцию. Затем упаковщик отправляет объединенную транзакцию в контракт точки входа, который идентифицирует и проверяет пользовательские операции, связанные с кошельками смарт-контрактов.
Наконец, после проверки кошельки смарт-контрактов, связанные с пользовательскими операциями, запускают функцию ExecuteUserOp, которая выполняет транзакции.
Понимание потока транзакций
Вот пример, как будет происходить транзакция в рамках нового предложения с поддержкой AA.
Начало транзакции
Аккаунт выражает свое намерение, создавая пользовательскую операцию. Пользовательская операция может получить доступ к данным, связанным с адресом отправителя, включая «maxFeePerGas» и «maxPriorityFee». Что касается доступа к полю «подпись», то каждый случай доступа регулируется аккаунтом, а не существующим протоколом. Каждая пользовательская операция затем отправляется в выделенный мемпул для пользовательских операций.
Отправка транзакций
Пользовательские операции затем обрабатываются валидаторами, которые объединяют их в отдельный мемпул. После этого упаковщик добавляет пользовательские операции в блок. В это время транзакции точки входа по-прежнему считаются действительными. Даже если упаковщик не является создателем блоков, он может этого добиться, взаимодействуя с инфраструктурой построения блоков. Некоторые примеры такой инфраструктуры включают mev-boost, разделение инициатора и упаковщика (proposer-builder separation) и экспериментальные RPC API eth._sendRawTransactionConditional.
Идентификация транзакций
Затем пользовательские операции передаются в контракт точки входа, который выполняет пакеты пользовательских операций. Чтобы принять пользовательские операции, упаковщик должен использовать функцию validateUserOp для проверки подписей. После успешного завершения упаковщики вносят поддерживаемый контракт точки входа в белый список.
Выполнение транзакций
Наконец, транзакция завершается кошельком смарт-контрактов, который выполняет функцию ExecuteUserOp. Упаковщики упаковывают набор этих объектов пользовательских операций в транзакцию и инициируют вызов функции в смарт-контракте handleOps EntryPoint. Затем эта транзакция включается в блок.
Сравнение криптокошельков EOA, MPC и AA
Хотите узнать больше о различиях между типами криптокошельков? Вот полезная таблица, в которой собраны сходства и различия.
Кошелек ЕОА | Кошелек MPC | Кошелек АА | |
---|---|---|---|
Тип аккаунта | EOA | EOA | CA |
Стоимость создания | Низкая | Низкая | Высокая |
Плата за газ | Низкая | Низкая | Высокая |
Способ оплаты газа | Одновалютный | Одновалютный | Мультивалютный, позволяет использовать сторонние токены |
Пакетные транзакции | Нет | Нет | Доступно |
Метод подписи | ECDSA | ECDSA | Различные методы подписи |
Управление закрытыми ключами | Обязательно | Обязательно | Не требуется |
Восстановление кошелька | Нет | Нет | Доступно |
Требование аудита | Базовый аудит безопасности | Политика офчейн-авторизации подписи, необходимо учитывать прозрачность | Требуется аудит ончейн-контрактов и пула спроса |
Безопасность | Нет стандарта, низкий уровень безопасности | Возможное автономное восстановление на доверенных устройствах | Безопасность на уровне сети достигнута после EIP-4337 |
Совместимость с экосистемой | Сильная | Слабая | Умеренная |
Устранение критического компонента отказа | Невозможно | Возможно | Возможно |
Чем EIP-3074 АА отличается от EIP-4337 АА?
Предложение EIP-3074 было приостановлено, поскольку это был ключевой EIP и требовались изменения на уровне консенсуса. Чтобы аккаунты EOA могли использовать контракт, необходимо было ввести два новых кода операций. У версии абстракции аккаунта в предложении EIP-3074 имеются свои преимущества и недостатки.
Преимущества
Самым большим фактором в пользу AA в рамках EIP-3074 является то, что она позволяет делегировать контроль над аккаунтом с внешним владельцем контракту. Это дает разработчикам гибкую среду для разработки новых схем транзакций для EOA, таких как пакетная торговля, упаковка и гибкая оплата газа.
Еще одним преимуществом является то, что решение AA в EIP-3074 предполагает использование контрактов активатора, которые принимают оплату не только в ETH, но и других токенах. Эти посредники, не требующие доверия, выполняют транзакции между спонсорами и спонсируемыми.
Кроме того, решение AA в EIP-3074 позволяет любому аккаунту EOA функционировать как кошелек смарт-контрактов без развертывания контракта.
Недостатки
Одна из главных причин, по которой EIP-3074 не пользуется популярностью среди сообщества Ethereum, заключается в том, что он предполагает изменения на уровне консенсуса. Это может иметь катастрофические последствия, поскольку для решения любых проблем, возникающих из-за изменений уровня консенсуса, может потребоваться хардфорк.
Поскольку EIP-3074 дает EOA характеристики CA, он по-прежнему использует фиксированную подпись ECDSA в механизме подписи. Это предотвращает использование произвольных подписей.
Внедрение EIP-5003
Хотя реализация EIP-3074 была приостановлена, это не означает, что от предложения отказались полностью. В EIP-5003 представлен код операции AUTHUSURP, который развертывает код по авторизованным адресам EIP-3074.
EIP-5003 работает вместе с EIP-3607 для отзыва полномочий исходного ключа подписи для EOA. Например, EOA «один» уполномочил адрес «два» действовать от его имени в соответствии с EIP-3074. Благодаря коду операции AUTHUSURP второй адрес может устанавливать свои коды EOA, что позволяет существующему EOA обновиться до CA и дает ему возможность перейти от подписей ECDSA к более эффективному и безопасному методу подписи.
Заключение
Ethereum продолжает внедрять инновации в стремлении массового распространения криптовалют. И мы видим, что решение абстракции аккаунта в EIP-4337 решает множество текущих проблем. У АА имеются такие преимущества, как более широкие возможности безопасности и гибкость оплаты газа, которые значительно снизят барьер входа при взаимодействии с экосистемой Ethereum.
Следите за новостями и узнайте, как OKX интегрирует EIP-4337 в свой мультичейн-кошелек.
© OKX, 2024. Эту статью можно воспроизводить или распространять как полностью, так и в цитатах объемом не более 100 слов при условии некоммерческого использования. При любом воспроизведении или распространении полного ее содержания нужно четко указать: «Разрешение на использование получено от владельца авторских прав (© 2024) на эту статью — OKX». Цитаты необходимо приводить со ссылкой на название статьи и авторство, например: «Название статьи, [имя автора], © OKX, 2024». Использование статьи в производных и других работах не допускается.