Как сделать так, чтобы абстракция учетных записей позволила инфраструктуре обслуживать миллиарды пользователей?

Автор: Альберт Хе, главный научный сотрудник BlockPI, компилятор: MarsBit, MK

Будь то бычий рынок или медвежий рынок, экосистема Ethereum постоянно строится и самооптимизируется. Среди них абстракция учетных записей (AA) стала очень важным достижением в последние годы и проникла в различные компоненты экосистемы Ethereum, включая приложения, инфраструктуру, пользователей и разработчиков.

Мы можем предвидеть, что широкое внедрение AA в мире может снизить входные барьеры для вариантов использования блокчейна, тем самым перенеся пользовательский опыт web2 в индустрию web3. **

Чтобы воспользоваться возможностью формирования многомиллиардного рынка AA, BlockPI планирует выделить ресурсы для интеграции AA в свои инфраструктурные услуги. Интегрируя AA, мы стремимся предоставить пользователям AA более удобные и эффективные способы взаимодействия со своими учетными записями контрактных кошельков в блокчейне, а также позиционировать BlockPI как лидера отрасли.

В этом посте я углублюсь в наше понимание AA и поделюсь мыслями с точки зрения поставщика инфраструктурных услуг.

EOA и кошелек смарт-контрактов

**Концепция AA связана с ограничениями учетных записей EOA. **Учетные записи EOA (внешние учетные записи) — это типичные учетные записи пользователей в Ethereum, представленные открытым ключом (адресом блокчейна), доступным через закрытый ключ. Это основной компонент экосистемы Ethereum, позволяющий пользователям взаимодействовать со смарт-контрактами и выполнять транзакции в сети. Однако использование EOA может быть сложным для людей, и некоторые неудобства могут повлиять на работу пользователей.

**Первое неудобство EOA связано с использованием газа. ** Каждая транзакция будет стоить пользователю большую сумму ETH в качестве комиссии за газ (простая комиссия за перевод ETH в размере 25 Gwei за газ составляет 0,5 доллара США и больше за взаимодействие по контракту или более высокую цену за газ). Это делает комиссию за транзакцию очень высокой для небольших транзакций, особенно в пиковые периоды перегрузки сети. Кроме того, для оплаты газа можно использовать только ETH, а это означает, что пользователи должны иметь ETH в своих кошельках, что является серьезным препятствием для входа для многих пользователей.

**Второе неудобство EOA заключается в том, что условные транзакции не могут быть выполнены, если некоторая логика не реализована с использованием других смарт-контрактов. **Например, если пользователь хочет установить синхронизированную циклическую передачу, он должен передать ETH стороннему смарт-контракту с помощью этой функции для достижения этой функции.

**Третье неудобство EOA — алгоритм шифрования подписи. ** Сеть Ethereum использует специальный алгоритм цифровой подписи, называемый secp 256 k 1, для обеспечения подлинности и безопасности транзакций. Это жестко запрограммировано в системе, и пользователь не может использовать другой алгоритм.

Поэтому, отталкиваясь от этих проблем, люди стали пытаться найти решения. Кошельки со смарт-контрактами, такие как MetaMask и Argent, являются результатом этих усилий, устраняющих многие ограничения EOA за счет использования смарт-контрактов Ethereum для улучшения функциональности учетной записи пользователя. Однако такое решение по-прежнему имеет некоторые недостатки, в основном требующие от пользователей оплаты комиссии Gas за транзакции и популярность кошельков со смарт-контрактами.

**Исходя из этих проблем, Ethereum начал пытаться ввести новую концепцию, а именно абстракцию учетной записи. Цель абстракции учетной записи — решить эти проблемы на уровне протокола, а не полагаться на смарт-контракты или другое промежуточное ПО. Это то, что мы теперь называем абстракцией аккаунта (АА). **

В оставшейся части этого поста я рассмотрю концепцию абстракции учетной записи и то, как мы можем использовать ее для оптимизации инфраструктуры BlockPI.

** В дополнение к трем неудобствам, связанным с EOA, упомянутым выше, связывающая связь между открытым ключом и закрытым ключом также является проблемой. **Закрытый ключ — единственный способ получить доступ к EOA, в случае утери закрытый ключ невозможно восстановить. Это означает, что если закрытый ключ будет потерян, все активы, связанные с ним, будут безвозвратно восстановлены.

**Кроме того, EOA также сталкивается с ограничениями при выполнении линейных задач в одной транзакции. **Например, если пользователь хочет одобрить, обменять и отклонить токены одним действием, ему необходимо выполнить три отдельные транзакции, что неэффективно и занимает много времени.

Хорошая новость заключается в том, что все вышеперечисленные проблемы можно решить с помощью смарт-контрактных кошельков. Кошелек смарт-контракта — это особый тип смарт-контракта, который реализует AA. Он предназначен для использования в качестве кошелька пользователя в сети Ethereum и обеспечивает более адаптивный и персонализированный способ управления своими средствами. Пока логика смарт-контракта Ethereum может быть реализована, кошелек смарт-контракта может обеспечивать необходимые функции.

В частности, транзакции кошелька смарт-контракта могут быть объединены в транзакцию внутри сети, чтобы разделить стоимость газа.Если третья сторона готова платить, стоимость газа может даже не взиматься. Операция может облегчить выполнение последовательных задач в своем кошельке смарт-контракта. Кошелек смарт-контракта может поддерживать любой алгоритм шифрования подписи, устанавливать коды восстановления и т. д.

Несмотря на все разговоры о преимуществах смарт-контрактных кошельков, сообщество Ethereum фактически работало над контрактными кошельками с самого начала. Хотя было предложено много EIP для изучения абстрагирования учетной записи, до 2021 года не было установлено единого стандарта. Ниже приведены некоторые из наиболее репрезентативных предложений.

ЭИП-86

Первоначально создан в 2017 году Виталиком Бутериным. Реализован ряд изменений в службах «абстрактной» проверки подписи и проверки одноразового номера, что позволяет пользователям создавать «контракты учетных записей», которые выполняют любые необходимые проверки подписи/одноразового номера.

ЭИП-2938

Создан в 2020 году. Название этого EIP — «Абстракция учетной записи». Этот EIP подробно описывает концепцию AA. Он вводит новый тип транзакции, транзакцию AA. Эта транзакция будет инициализирована адресом EntryPoint и вызовет контракт кошелька AA. Таким образом, он обеспечивает единую спецификацию и вводит AA в консенсус Ethereum. В частности, он добавляет к консенсусу Ethereum два новых кода операции, три глобальные переменные и другую структуру полезной нагрузки.

ЭИП-3074

Создан в 2020 году. В этом EIP представлены две инструкции EVM: AUTH и AUTHCALL. AUTH устанавливает переменную контекста, называемую авторизованной, на основе подписи ECDSA. AUTHCALL отправляет вызов от имени авторизованной учетной записи. Это позволяет смарт-контракту отправлять транзакции от имени EOA. Но это не идеальное решение для АА. EIP-3074 накладывает определенные ограничения на передачу собственной стоимости во время спонсорских транзакций. Если вы потеряете доступ к EOA, вы не сможете восстановить свои активы, а в случае кражи все активы необходимо будет перенести на новую учетную запись.

Ни одна из вышеперечисленных идей не была официально принята в протоколе Ethereum по основным причинам, таким как необходимость внесения изменений на уровне консенсуса или отсутствие всеобъемлющего характера. Поэтому сообщество Ethereum продолжило изучать, как внедрить AA в протокол Ethereum без изменения консенсуса, и, наконец, создало EIP 4337.

ERC — 4337

EIP-4337 был первоначально предложен в сентябре 2021 года и авторизован как ERC-4337 в марте 2023 года. Среди ее авторов Виталик Бутерин, Йоав Вайс, Кристоф Газсо, Намра Патель, Дрор Тирош, Шахаф Наксон и Тьяден Хесс.

EIP-4337 — это предложение, меняющее правила игры, которое вводит AA без внесения каких-либо изменений в основной протокол Ethereum. EIP-4337 соответствует стандарту ERC-4337, который разработчики могут использовать для реализации своих собственных кошельков смарт-контрактов, и включает в себя некоторую дополнительную инфраструктуру, в том числе «Bundlers» и пулы памяти UserOperation. Делая это, он по существу повторяет функциональность мемпула транзакций в более продвинутой системе. Вместо отправки транзакций пользователи отправляют объекты UserOperation, которые затем могут быть упакованы в одну транзакцию и включены в цепочку Ethereum.

Ниже приводится более конкретное техническое объяснение ERC-4337 из официальной документации, а также некоторые комментарии для лучшего понимания.

Определение и ключевые роли ERC-4337

UserOperation — структура, описывающая транзакции, отправленные от имени пользователя. Чтобы избежать путаницы, он не называется «транзакция». Он отправляется в Bundler для упаковки с другими UserOperations. Затем пакет отправляется создателю блока как одна транзакция.

Отправитель — контрактная учетная запись, которая отправляет новую операцию UserOperation. Кошелек смарт-контракта должен реализовывать интерфейс IAccount стандарта ERC-4337.

EntryPoint — одноэлементный контракт, реализующий пакет UserOperations. Белые списки бандлеров/клиентов поддерживают EntryPoints. Этот контракт одобрен и проверен командой Infinitism и отвечает за обработку всех пользовательских операций и подключение других контрактов, включая Wallet Factory, Aggregator, Paymaster. Он будет иметь один и тот же адрес в большинстве цепочек, совместимых с EVM.

Bundler — узел (построитель блоков), который объединяет несколько пользовательских операций из мемпула и создает транзакции EntryPoint.handleOps(). Все валидаторы на уровне протокола не обязательно должны быть бандлерами. Служба Bundler может работать независимо от построителя блоков и использует RPC для отправки связанных пользовательских операций.

Агрегатор — вспомогательный контракт, которому учетные записи доверяют проверку агрегированных подписей. Поддерживаемые агрегаторы белого списка Bundlers/Clients. Агрегаторы должны реализовать интерфейс ERC-4337 IAggregator.

Paymaster — контракт, который может оплатить комиссию за газ UserOperation для отправителя, если в контракт EntryPoint внесено достаточное количество ETH. Paymaster реализует эффективную абстракцию газа. Paymaster должен реализовать интерфейс Paymaster стандарта ERC-4337. У Paymaster может быть своя логика для заключения сделки с Sender. Например, Sender платит Paymaster в долларах США, а Paymaster спонсирует свои пользовательские операции с помощью ETH. Фактически, любой токен ERC 20 или даже токены в других цепочках могут поддерживаться, если Paymaster согласен и это технически возможно.

Wallet Factory — контракт, который можно вызвать для создания смарт-контрактных кошельков для пользователей ERC-4337. Развертывание фабрики кошельков не требует разрешения. Как сетевой компонент, он открыт для публичного аудита и прозрачного контроля. Широко используемый Wallet Factory должен быть полностью проверен профессионалами.

На приведенной ниже диаграмме показано, как контракт EntryPoint взаимодействует с другими участниками.

Как сделать так, чтобы абстракция учетных записей расширяла возможности инфраструктуры и обслуживала миллиарды пользователей?

Сборщики вызывают функцию handleOps контракта EntryPoint, которая принимает UserOperation в качестве входных данных.

handleOps проверяет UserOperation в цепочке, проверяет, подписана ли она указанным адресом кошелька смарт-контракта и достаточно ли в кошельке газа для компенсации Bundler.

Если проверка прошла успешно, handleOps выполнит функцию кошелька смарт-контракта в соответствии с подписью функции и входными параметрами, определенными в данных вызова UserOperation.

С другой стороны, когда Bundler использует EOA для запуска функции handleOps, взимается плата за газ. Кошелек со смарт-контрактом может оплачивать комиссию за газ Bundlers из собственного баланса счета или запрашивать оплату контракта Paymaster от его имени. Пользовательские операции, у которых недостаточно газа, не могут пройти процесс проверки в целевом кошельке смарт-контракта и, таким образом, завершатся ошибкой до выполнения. Даже если газа достаточно, UserOperations может дать сбой при выполнении, например, из-за ошибок времени выполнения. Независимо от того, будет ли выполнение успешным или нет, контракт EntryPoint будет платить комиссию за газ Bundler, который запускает функцию handleOps.

(Источник: Официальная документация:

После вступления в силу ERC-4337 у пользователей теперь есть два способа инициировать транзакции в блокчейне. Один из них — оригинальный способ, когда EOA инициирует транзакцию. Другой — использовать стандарт ERC-4337 для запуска UserOperation через Bundler, а затем Bundler упакует его с другими UserOperations и инициирует в цепочке. Следующая блок-схема иллюстрирует разницу между обычной транзакцией отправки EOA и отправкой UserOperation контрактного кошелька ERC-4337.

Как сделать так, чтобы абстракция учетных записей расширяла возможности инфраструктуры и обслуживала миллиарды пользователей?

Дорога асфальтирована, но пассажиров мало

ERC-4337 предоставляет пользователям и разработчикам мощную основу для использования и создания AA на платформе Ethereum. Хотя эта структура является важным шагом вперед, все еще необходимо рассмотреть и решить ряд проблем и неопределенностей.

** Принятие АА находится в зачаточном состоянии. **Согласно аналитической панели Dune ERC-4337 (абстракция учетной записи ERC-4337 от @niftytable), только 65 тыс.+ пользовательских операций выполняются в цепочке, 90% из которых выполняются Polygon. Поэтому количество UserOperations, выполняемых в это время, все еще очень мало, большая часть из которых — тесты разработчиков и лишь малая часть приписывается пользователям. Мы отмечаем, что продукты с интегрированным AA все еще находятся на ранних стадиях. При этом видно, что прибыль Бандлера отрицательная (-700 в пересчете на MATIC). Это связано с тем, что некоторые сборщики на Polygon неправильно рассчитывают газ предварительной проверки. Этот алгоритм проверки еще нуждается в оптимизации.

** Кроме этого, есть несколько перегибов, которые необходимо проработать. Одна из таких проблем заключается в том, как Bundlers обрабатывают сбои транзакций. **После того, как Bundler объединяет несколько UserOperations вместе, Bundler сначала моделирует транзакцию, чтобы проверить, будет ли она отменена, а затем вычисляет, превышает ли комиссия за газ, возвращаемая отправителем или казначеем, комиссию за газ, уплаченную транзакцией. Если это выгодно, Bundler отправляет эту партию UserOperations вместе как транзакцию конструктору блоков. Тем не менее, транзакция все равно может завершиться неудачей, в результате чего сборщик уплатит комиссию за газ, но не получит обратно газ от EntryPoint. Например, пользователь может отправлять действия разным сборщикам. Бандлеры готовы выполнять любые операции в сети, если они прибыльны и их симуляция успешна. Это означает, что если UserOperation отправляется разными Bundlers одновременно. Только одна транзакция будет успешной, только один Bundler получит комиссию за газ от EntryPoint, все остальные Bundlers потеряют газ из-за сбоя в сети. Хотя можно утверждать, что пользователи не должны этого делать, такое поведение будет считаться злонамеренной атакой, и что Bundler может заблокировать адрес отправителя и отклонить любые будущие запросы с этого адреса, это неразумный подход, поскольку пользователи могут было подано непреднамеренно. Такие проблемы необходимо должным образом решать в коде, возможно, путем разработки незавершенной общедоступной сети мемпула. Кроме того, из-за внезапных колебаний газа сборщики могут столкнуться с убытками, даже если транзакции были успешно отправлены и смоделированы как прибыльные.

**Еще одна вещь — это максимальное извлекаемое значение (MEV), которое можно извлечь из AA. ** В контексте Ethereum MEV обычно относится к стоимости, которую майнеры или другие обработчики транзакций могут извлечь, манипулируя порядком транзакций в блоке или включая свои собственные транзакции в блок. Кто-нибудь заметил, что логика MEV может быть применена и к AA, поскольку Bundlers могут свободно заказывать UserOperations? Однако это условно, достаточно пользовательских операций, которые должны быть объединены вместе, чтобы сборщики могли извлечь MEV. Сейчас весь рынок АА пока находится в зачаточном состоянии, поэтому Bundler MEV тоже можно считать в зачаточном состоянии. В целом индустрия **AA может развиваться в двух направлениях: одно похоже на основную сеть Ethereum с участием таких участников, как Flashbots, Ultra Sound и BloXroute, а другое заключается в формировании консенсуса Bundler для обеспечения справедливой сортировки. Последний подход полностью исключил бы возможность MEV при AA. **

будущее развитие

публичный мемпул

Хотя экосистема AA уже функционирует, предстоит еще много работы по развитию. Глядя на всю экосистему AA, самый большой пробел в настоящее время — это публичный мемпул. Команда Etherspot, разработчики клиента Skandha Bundler, в настоящее время разрабатывают p2p-сеть с общедоступным мемпулом. Ожидается, что p2p-сеть публичного мемпула будет доступна в августе этого года.

Алгоритм упаковки

Попутно Ethereum Foundation профинансировал несколько групп разработчиков AA, состоящих из преданных своему делу и трудолюбивых разработчиков. На сегодняшний день разработано и доступно несколько версий клиента Bundler. Некоторые из них высокоразвиты с точки зрения зрелости продукта. Это Candide (Voltaire Bundler, написанный на Python), Pimlico (Alto Bundler, написанный на Type), Etherspot (Skandha Bundler, написанный на Type), Stackup (Stackup-Bundler, написанный на Go) и многие другие.

Теперь давайте более подробно рассмотрим алгоритм упаковки. В настоящее время из-за небольшого количества пользовательских операций сборщики могут использовать простую и понятную логику упаковки, такую как фиксированные интервалы времени или количество пользовательских операций в каждом пакете. Однако по мере увеличения количества пользовательских операций, особенно после введения общедоступного мемпула, стратегия выбора и упаковки пользовательских операций становится более сложной. Причина проста: без протокола консенсуса, такого как блокчейн, Bundlers образуют темный лес, каждый из которых расставляет приоритеты в работе в соответствии со своими интересами и конкурирует друг с другом. Частные мемпулы, соответствующие общедоступным мемпулам, скорее всего, будут первыми. Потому что, когда невыгодно упаковывать UserOperations из общедоступного мемпула, может оказаться выгодным упаковать UserOperations вместе в приватный мемпул. Таким образом, Bundler имеет конкурентное преимущество, когда дело доходит до упаковки.

Кроме того, по мере постепенного принятия общедоступного мемпула пользовательские операции в нем будут иметь разные характеристики, такие как разные ожидания прибыли от газа и сложность выполнения в цепочке. Сборщики будут проводить моделирование вне сети, чтобы оценить прибыльность различных комбинаций пользовательских операций, чтобы разработать свои уникальные стратегии объединения. Упаковка большего количества UserOperations потенциально может принести большую прибыль, но также увеличивает риск сбоев проверки. Даже если проверка пройдена, риск сбоя исполнения в цепочке все равно существует. Менее упакованные UserOperations делают обратное. Бандлерам необходимо установить свои собственные параметры газа транзакций, которые повлияют на приоритетность строителей блоков для выполнения транзакций. При разных рыночных ценах на газ и условиях волатильности газа у Бандлеров могут быть разные стратегии упаковки. В то же время эти проверки и расчеты политик должны потреблять локальные аппаратные вычислительные ресурсы и ресурсы узлов блокчейна. Сборщики также должны убедиться, что пользователи имеют хороший опыт и что пользователи не сталкиваются с чрезмерными задержками после отправки UserOperation.

Хотя решения этих проблем остаются неопределенными, мы можем быть уверены, что развитие индустрии AA и совместные усилия разработчиков в конечном итоге найдут решения. Как строитель инфраструктуры, BlockPI надеется решить проблемы в развитии индустрии AA, будь то в качестве разработчика или предоставить дружественную инфраструктуру AA для других разработчиков.

Инфраструктура должна адаптироваться

AA абстрагирует различные роли в поведении транзакций в цепочке, включая отправителей, сборщиков, плательщиков газа, контрактных кошельков и подписантов, что позволяет пользователям иметь более высокую степень свободы при использовании блокчейна. Кроме того, службы внутри AA можно развертывать отдельно.

** Чтобы обеспечить широкомасштабное внедрение AA, поставщики инфраструктуры должны сначала предоставить по крайней мере две основные услуги, а именно услугу Bundler и услугу Paymaster. **

В службе Bundler поставщику инфраструктуры может потребоваться разработать частный мемпул с Bundlers, чтобы обеспечить хорошее взаимодействие с пользователем. В частности, поставщикам инфраструктуры необходимо интегрировать различные клиенты Bundler, чтобы обеспечить надежность услуг Bundler. Эти клиенты Bundler разработаны на разных языках программирования, но все они предоставляют стандартный набор методов JSON RPC, указанный основной командой ERC-4337. В настоящее время доступно не так много методов, но в будущем будет добавлено больше методов. Поставщики инфраструктурных услуг должны обеспечивать постоянную и полную поддержку этих API.

Кроме того, важно оптимизировать и адаптировать отношения между Bundler API и RPC клиента исходного узла. Мы знаем, что текущий клиент узла плохо оптимизирован для реагирования и адаптивности AA. Для работы некоторых методов Bundler API требуется индекс данных AA. Например, поиск UserOperation по хешу требует индексации всех UserOperations. В противном случае аппаратное потребление этого единственного запроса будет очень высоким, а возврат запроса займет много времени.

Кроме того, поставщикам инфраструктуры также необходимо интегрировать различные сервисы Paymaster, чтобы предоставить клиентам возможность работы без газа и предоставить им различные варианты обслуживания. Это требует хорошей коммуникации и интеграции со сторонними поставщиками услуг Paymaster.В то же время, в соответствии с потребностями рынка, также могут быть разработаны более удобные интеграционные решения на основе существующих услуг Paymaster. Другие сервисы, такие как агрегированные подписи, фабрики кошельков и т. д., также являются возможными направлениями для будущего развития и интеграции.

В настоящее время BlockPI фактически пытается достичь всех вышеперечисленных целей. Мало того, мы общаемся почти со всеми клиентами Bundler и поставщиками услуг Paymaster в сообществе и сделали интеграцию службы AA в сеть BlockPI нашим главным приоритетом. Мы также ведем подробные обсуждения с разработчиками кошелька AA, чтобы понять потребности пользователей. Поэтому мы искренне приветствуем сотрудничество и обмены со всеми бандлерами, казначеями и кошельками по мере продвижения вперед. Наша общая цель — создавать и развивать экосистему АА вместе с другими, способствуя ее росту и развитию в меру своих возможностей. Работая вместе, мы надеемся внести значимый вклад в индустрию АА в целом и поддержать ее дальнейшее развитие. Потому что, в конце концов, наша конечная миссия — стать пионером в отрасли и способствовать развитию экосистемы AA, чтобы пользователи web2 могли беспрепятственно пользоваться своим опытом работы с блокчейном.

Подведем итог

С точки зрения АА мы находимся в новом историческом моменте. Хотя у нас на бульваре асфальтированные дороги, но гонщиков пока мало. В настоящее время применение AA все еще находится в зачаточном состоянии.ERC-4337 предоставляет пользователям и разработчикам мощную основу для использования и создания AA на платформе Ethereum.Однако остается еще много проблем и неопределенностей, которые необходимо решить.

** Поставщику инфраструктуры AA необходимо предоставить своим пользователям услуги Bundler и Paymaster, а также интегрировать различных клиентов Bundler и поставщиков услуг Paymaster, чтобы обеспечить надежность услуги. **Чтобы оптимизировать время отклика между API и клиентами узла, может потребоваться индексация данных AA, чтобы уменьшить потребление оборудования для одного запроса. Чтобы обеспечить лучший пользовательский опыт, поставщики инфраструктуры также должны предоставить пользователям больше вариантов обслуживания.

** В будущем, по мере роста экосистемы AA и появления общедоступных мемпулов, стратегия выбора и упаковки пользовательских операций станет более сложной. **Каждый бандлер расставляет приоритеты в своей работе, исходя из собственных интересов, и конкурирует с другими бандлерами. Бандлерам необходимо установить свои собственные параметры газа транзакций, которые влияют на приоритетность строителей блоков для выполнения транзакций. При разных рыночных ценах на газ и условиях волатильности газа у Бандлеров могут быть разные стратегии упаковки.

Хотя решения этих проблем неясны, мы можем быть уверены, что развитие индустрии AA и совместные усилия разработчиков в конечном итоге найдут решения. Как строитель инфраструктуры, BlockPI надеется решить проблемы в развитии индустрии AA, либо в качестве разработчика, либо предоставляя дружественную инфраструктуру AA для других разработчиков. Наша миссия — способствовать развитию экосистемы AA, чтобы пользователи Web2 могли беспрепятственно пользоваться своим блокчейном.

Посмотреть Оригинал
  • Награда
  • комментарий
  • Поделиться
комментарий
Нет комментариев