ERC-4337 или же Account Abstraction
Криптовалюта движется невероятно большими шагами в каждый дом и то что вчера было недоступно и сложно для рядового пользователя, через несколько лет будет обычным средством для оплаты.
Что такое Account Abstraction и зачем он нужен?
Текущие проблемы в Web3 являются существенным недостатком децентрализованного мира. К примеру, для новых пользователей процесс знакомства с блокчейном, сид фразой, кошельками может оказаться довольно сложным, а также полностью отбить желание “войти” в крипто индустрию. А это лишь один из первых шагов.
За примером не надо далеко ходить. Вы вспомните как вы выводили токены в каждую сеть для того же LayerZero. Вам нужно было раскидывать стейблы и запариваться сначала о нативках, а потом ещё и стейблах для прокрута. Представьте картину где вы выводите просто 20 USDT на аккаунт и используете их для оплаты комиссий в ЛЮБОЙ СЕТИ! Вам не надо выводить по 40 раз на аккаунт тот же matic или eth и тратиться на комисси для вывод.
Так давайте разберёмся как это всё чудо работает?
Начнём с того что в Ethereum существует два типа счетов:
1) Счета, принадлежащие внешнему владельцу (Externally owned accounts, EOA)
2) Контрактные счета (Contract accounts, CA)
Вероятно, вы уже знакомы с EOA. Любой ваш Ethereum кошелек MetaMask, RabbyWallet или же ArgentX, являются EOA счетами и состоят из двух ключей: открытого и закрытого(приватного). С помощью приватного ключа владелец EOA кошелька может управлять своим аккаунтом.
Вывод: код определяет, что делают контрактные учетные записи, а пользователи контролируют то, что делают EOA. Это важно, потому что смарт-контракты могут делать все, что можно написать в коде, тогда как EOA могут только подписывать транзакции
На даны момент хороший пример CA wallet это CyberWallet или же Sequence.
Как Web3 работает сегодня?
Довольно утомительно. Каждый раз, для записи новой информации в блокчейн, нужно подписать транзакцию из своего EOA. Возможно, если вы уже имеете опыт это кажется лёгким, но для новых пользователей процесс запуска с нуля и взаимодействия с веб-приложением зачастую может отбить желание разбираться дальше.
Вот что должен сделать новый пользователь, чтобы выполнить свое первое действие в децентрализованном приложении (и это только начало пути):
Как это работает?
Вы просто отправляете транзакцию через ваш аккаунт в блокчейн на условно контракт ZkSync и подписываете транзакцию своим приватным ключом. То есть вы взаимодействуете с контрактом напрямую через интерфейс кошелька.
Это как прокси между аккаунтом пользователя и EOA. У нас есть абстрактный аккаун, не обязательно EOA, который построенный по каким-то правилам и может отправить (не обязательно но обычно всегда через релееры) транзакцию в сеть, которая будет отправлена на Acount Abstraction Contract и в последствии на смарт контракт.
Давайте рассмотрим пример с начислением токенов или клеймом условных ZRO
1) Если мы используем EOА, то мы делаем транзакцию в сети на смарт контракт, подтверждаем владение аккаунтом подписав транзакцию приватным ключом и токены приходят на нас кошелек, то есть на наш аккаунт.
2)Во втором же случае для других контрактов отправителем транзакции в блокчейн будет являтся Acont Abstratcion Contract и именно на него придут все токены, а пользовательский (user's account) не будет учавствовать в этой системе никак. Он нужен только для того чтобы доказать что у пользователя есть доступ к AA.
Как отличить EOA от CA в блокчейне?
Любой EOA состоит только из 2 основных элементов:
1) Nonce: число, обозначающее количество отправленных транзакций или созданных контрактов.
2) Баланс: количество средств на счету
Storage Hash и Code Hash: являются пустыми в хэше транзакции
В тоже время как CA счет состоит из 4 элементов:
1) Nonce: число транзакций почти всегда будет являются пустым так как напрямую с CA аккаунта нельзя сделать транзакцию, но можно сделать внутренний кол на другие контракты.
3) Storage Hash: хэш, кодирующий содержимое хранилища аккаунта.
4) Code Hash: хэш кода аккаунта в EVM.
Текущие минусы EOA
Скорее всего, вы уже знакомы со словом DRAIN и с ситуацией, когда кто-то из ваших знакомых терял доступ к EOA, случайно поделившись своим приватным ключом или потеряв к нему доступ через неакуртно использованный софт. Примеры:
- QuadrigaCX и потеря миллионов долларов в связи со смертью человека, у которого был пароль. Кстати, там много “теорий заговора” и других интересных моментов, Netflix сняли крутой фильм про это;
- Мужчина потерял доступ к своим BTC на $321 млн;
- Парень заблокировал телефон с потенциально $6 млн.
Вывод: уровень ответственности с традиционными EOAs опасно высок, ведь ваш закрытый ключ это полный контроль над вашими средствами. А его не так уж и сложно потерять, и невозможно восстановить
Есть даже поговорка на этот счет: "не ваши ключи, не ваша криптовалюта",
тем более в современную эру софтов с закрытым кодом и ловушек с подменой смарт контрактов в открытом коде
Что даст нам EIP-4337?
Идея абстракции учетной записи Ethereum состоит в том, чтобы объединить сильные стороны двух типов учетных записей и сделать их одним целым. Проще говоря, абстракция учетной записи означает, что обычные пользователи переключаются с EOAs на CAs по мере необходимости. А кошелек Ethereum превращается в абстрактный смарт-контракт. Это полностью избавляет пользователей от необходимости использовать EOA для выполнения транзакций.
Вариантов использования ERC-4337 может быть очень много - всё что можно прописать в коде.
- Нет закрытого ключа. Больше никаких 12 слов, и никакого страха их потерять. Вы можете написать в коде любую произвольную логику, позволяющую восстановить средства в кошельке. Возможно восстановление доступа при помощи сторонних сервисов, при помощи заранее назначенных пользователей и т.д. Почти полная аналогия с банковским мобильным приложением.
- Защита кошельков без seed-фразы. Пользователи могут включить двухфакторную аутентификацию и биометрические данные (сканирование отпечатков пальцев или лица) для защиты своих кошельков.
- Автоматические, запланированные платежи / лимиты расходов на указанный период.
- Транзакции без уплаты gas. Децентрализованные приложения могут покрывать расходы своих клиентов, чтобы привлечь дополнительных пользователей.
- Сессия. Использование ключей сессий для игр на блокчейне без необходимости постоянного подтверждения транзакций.
- С абстракцией учетные записи могут быть запрограммированы на требование нескольких подписей перед выполнением транзакции, что фактически делает каждую учетную запись multi-sig кошельком по умолчанию. Это позволяет пользователям легко реализовывать функциональность мультиподписи без использования отдельного контракта.
- Возможность пакетной обработки транзакций. Например, утверждение передачи токена и передача токена в одной и той же операции.
Какие риски обновления AA?
Несмотря на повышенную гибкость, которую даёт AA, также важно отметить увеличивающееся количество векторов, подлежащие должной защите.
Некоторые другие потенциальные проблемы с абстракцией учетной записи включают в себя более высокую плату за газ — кошельки со смарт-контрактами могут требовать большой вычислительной мощности для выполнения. Кошельки смарт-контрактов должны быть развернуты отдельно для каждого блокчейна, текущие попытки реализовать поддержку нескольких блокчейнов пока не сильно успешны.
Вывод
Преимущества абстрактных учётных записей всё же превышают опасения по поводу безопасности. Но в любом случае всё зависит от индивидуального восприятия риска. Как всегда, нужно будет сделать свой ресерч (DYOR).
Несмотря на то, что АА обсуждается с первых дней существования Ethereum, сейчас мы видим реалистичные предложения по его реализации. AA это несомненно именно то, как должны выглядеть кошельки следующего поколения, также это огромный шаг к большему уровню принятия крипты.
Нас ждут интересные нововведения, и варианты использования. Это станет одним из сильнейших нарративов в индустрии, также нужно будет обратить на компании, которые предложат лучший продукт.
Сейчас над внедрением AA работают уже многие кошельки, включая сам MetaMask, а также Argent, Safe, Ambire Wallet, Braavos, lens wallet, Sequence, Patch, Wallet Soul Wallet и многие другие.