Найти тему
Eccosys - IT компания

Account Abstraction - что же это, и зачем нужно в крипто индустрии?

Оглавление

ERC-4337 (Account Abstraction) - это стандарт Ethereum, который позволяет абстрагировать учетную запись в протоколе без изменений на уровне консенсуса.

Этот стандарт был предложен
Виталиком Бутериным и другими разработчиками в 2021 году. В марте 2023 года он был внедрен в основную сеть Ethereum.

Так как мы часто сталкиваемся с задачами, требующими использования этой технологии, мы решили собрать основные знания о ней в одной статье. Эта статья поможет инженерам понять, что такое Account Abstraction, для чего он нужен и какие дальнейшие исследования необходимы для овладения навыками работы с Account Abstraction в полной мере.

Что если совместить смарт-контракт и крипто-кошелек?

В Ethereum существуют два вида учетных записей:

EOA (Externally-owned account). Управляется лицом, имеющим приватный ключ.
Счет контракта. Смарт-контракт, который размещен в блокчейне.

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

Зачем же нужен это ERC-4337?

Ответ прост: для создания новых кошельков, которые объединяют преимущества смарт-контрактов и учетных записей EOA.

Сегодня большинство кошельков, таких как
Metamask, Defexa CryptoWallet, TrustWallet, являются типичными представителями EOA, основанных на приватном ключе. Эта модель требует подписи всех транзакций с использованием приватного ключа, что затрудняет использование кошелька пользователем и делает его уязвимым для потери доступа при потере приватного ключа.

С другой стороны, существуют альтернативные кошельки на основе смарт-контрактов, такие как Gnosis Wallet. Смарт-контракт позволяет реализовать любую бизнес-логику на кошельке, например, мульти-подпись. Однако, пользователю такого кошелька все равно нужен EOA-аккаунт для вызова функций смарт-контракта и оплаты газа.

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

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

Как это работает?

Alchemy подготовила серию статей, посвященных абстракции аккаунта. Эти статьи не только объясняют новый стандарт ERC-4337, но и шаг за шагом объясняют, почему были выбраны те или иные подходы. Они представляют собой ценный ресурс для тех, кто хочет глубже понять эту тему, особенно для разработчиков. Эти статьи являются важным дополнением к уже существующим статьям на эту тему, включая работы Виталика Бутерина.

Читаем тут:

You Could Have Invented Account Abstraction: Part 1
Account Abstraction Part 2: Sponsoring Transactions Using Paymasters
Account Abstraction Part 3: Wallet Creation
Account Abstraction Part 4: Aggregate Signatures

Концепция работы Bundler'а

Работа Bundler'а
Работа Bundler'а

На данной схеме происходит следующее:

  1. Пользователи подготавливают свои псевдо-транзакции (в терминах стандарта UserOperations).
  2. Далее псевдо-транзакции отправляются в альтернативный mempool.
  3. После этого Bundler достает UserOperations из альтернативного mempool'а.
  4. Bundler производит упаковку UserOperations в обычные транзакции.
  5. Bundler добавляет транзакции в Ethereum block.

Упрощенная схема работы ERC-4337

Допустим, пользователь просит Bundler выполнить транзакцию на смарт-контракте кошелька от его имени и за его счет. При этом газ будет оплачиваться Bundler'ом.

Можно придумать различные способы, как Bundler будет получать средства для оплаты газа. Например, он может делать это безвозмездно или предоставлять кредит пользователю с ожиданием, что пользователь вернет ему оплату за газ в будущем, либо средства для оплаты газа могут быть автоматически списаны с кошелька пользователя.

Упрощенная схема работы ERC-4337
Упрощенная схема работы ERC-4337

Из схемы видно следующее:

  1. Пользователи отправляют свои операции UserOperations в альтернативный mempool, откуда они поступают к Bundler.
  2. Bundler обрабатывает операции UserOperations и поочередно проверяет возможность их выполнения через вызов функции validateOp() на смарт-контракте кошелька. Это необходимо для предотвращения неэффективного использования газа в случае, если транзакция недействительна.
  3. Bundler передает операции UserOperations доверенному смарт-контракту EntryPoint. Этот контракт повторно проверяет транзакции и выполняет вызовы для каждого кошелька пользователя.

Немного более сложная схема работы ERC-4337

Немного более сложная схема работы ERC-4337
Немного более сложная схема работы ERC-4337
  1. Пользователи отправляют свои операции UserOperations в альтернативный mempool, откуда они поступают к Bundler.
  2. Bundler отправляет операции UserOperations в контракт Aggregator для создания комбинированной подписи. Иначе говоря, операции группируются, и такая группа получает одну единственную подпись. Это позволяет дешевле выполнять транзакции группой, а не по отдельности. В процессе агрегации операции UserOperations проверяются на валидность через вызов функции validateOp() соответствующего контракта кошелька.
  3. Bundler передает агрегированные операции UserOperations доверенному контракту EntryPoint. Этот контракт снова проверяет транзакции и выполняет вызовы для каждого кошелька пользователя.
  4. Однако, если контракт кошелька еще не был создан, перед выполнением транзакции пользователю будет создан кошелек через вызов контракта Factory.
  5. Если в операции UserOperation указан доверенный контракт Paymaster, то комиссия за газ будет списана с него для данной операции. Оплата за газ будет списана только в том случае, если контракт Paymaster разрешит. Для этого контракт EntryPoint проверяет контракт Paymaster с помощью функции validate() для каждой операции UserOperation.

Bundler

Есть два популярных Bundler:

Контракты

Для ERC-4337 были написаны контракты. Смотрим тут.

Контракт фабрики кошелька FactorySimpleAccount.sol

Базовый контракт для реализации Paymaster

Контракт EntryPoint.sol.

Контракт простого кошелька SimpleAccount.sol.

Важно! Аудитом контрактов провела компания OpenZeppelin. Результаты аудита тут.

Так что в итоге? Какая применимость у Account Abstraction?

Стандарт ERC-4337 предоставляет новые возможности для крипто-кошельков. Вот основные и актуальные примеры их использования.

1.
Multisig. Совместное использование кошелька группой пользователей. Ранее доступно только для кошельков на основе смарт-контрактов, но теперь также поддерживается для кошельков на основе EOA.

2.
Social recovery. Этот сценарий определяет возможность восстановления доступа к кошельку. Если один из владельцев кошелька потерял доступ, другие владельцы могут восстановить его доступ. Также можно предусмотреть другие способы восстановления доступа.

3.
Different signature schemes. Стандарт позволяет использовать различные алгоритмы проверки цифровой подписи, такие как BLS или квантово-устойчивые алгоритмы в будущем.

4.
Batching multiple operation. Возможность выполнения нескольких операций на кошельке в рамках одной транзакции. Например, при обмене токена на Uniswap, можно вызвать функции approve() и transferFrom() в одной транзакции.

5.
Gas abstraction. Это позволяет устанавливать адрес, с которого будет списываться оплата за газ. Это означает, что различные DApp могут оплачивать газ от имени пользователя или пользователь может оплачивать газ со своего второго кошелька. Также возможны другие варианты, например, оплата газа в токене ERC-20 или обмен одного токена на другой внутри контракта кошелька.

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