Автор: Джаррод Уоттс

Перевод: Фрэнк, Foresight News

Недавно Виталик Бутерин предложил EIP-7702, который может стать одним из самых значительных изменений в истории Ethereum. В этой статье будет представлен принцип работы этого нового предложения и все, что вам нужно знать, чтобы его реализовать.

Прежде всего, новое предложение EIP-7702 удивительно короткое, что оставило некоторых людей в замешательстве относительно того, как оно на самом деле работает. Чтобы понять 7702, сначала нам нужно понять три других упомянутых в нем предложения:

  • EIP-4337
  • EIP-3074
  • EIP-5003

Давайте начнем с общей цели всех этих предложений, "абстрагирование учетной записи" - EOAs ("Внешние управляемые учетные записи") на Ethereum плохи, они рискованы и имеют очень ограниченную функциональность. Абстрагирование учетной записи позволяет пользователям использовать смарт-контракты в качестве учетных записей для добавления большей функциональности и безопасности для решения этой проблемы.

Исследование предложения EIP-7702: Конечное решение Виталика для вызова проблемы абстракции учетной записи? image 0

EIP-4337

EIP-4337 был запущен на основной сети в марте 2023 года, позволяя писать смарт-контракты как учетные записи, чтобы они могли проверять и выполнять транзакции, улучшая многие пользовательские интерфейсы (UX).

С момента выпуска EIP-4337 широко принят, в основном под руководством Polygon, и Base также видел увеличенную активность за последние несколько месяцев.

Исследование предложения EIP-7702: Конечное решение Виталика для вызова проблемы абстракции учетной записи? image 1

Последнее новшество, связанное с EIP-4337, поступило из экосистемы Coinbase и Coinbase Smart Wallet, основанного на биометрической технологии и предлагающего отличный пользовательский опыт. Я сделал еще одну небольшую демонстрацию на ETH Global Sydney на прошлых выходных, чтобы продемонстрировать это.

Итак, какие проблемы существуют с EIP-4337? Почему сегодня другое предложение об абстрагировании учетной записи? Потому что EOAs до сих пор остаются самым широко используемым типом учетной записи.

Кроме того, большинство учетных записей смарт-контрактов EIP-4337 контролируются одним подписантом EOA. Вот пример кода:

Исследование предложения EIP-7702: Конечное решение Виталика для вызова проблемы абстракции учетной записи? image 2

Из-за невозможности "преобразовать" EOA пользователя в учетную запись смарт-контракта существует этот странный промежуточный шаг - в основном потому, что веб-приложения Web3 не имеют встроенной поддержки для подключения к учетным записям смарт-контрактов, поэтому большинство людей все еще используют EOAs через расширения браузера, такие как MetaMask.

EIP-3074

Это приводит нас к нашему следующему предложению: EIP-3074.

Фактически, это предложение было сделано до EIP-4337, но оно еще не было объединено в основную сеть. EIP-3074 нацелен на предоставление EOAs большей мощности, позволяя им делегировать управление своим EOA смарт-контрактам.

В предложении описаны следующие моменты, добавляя две новые операции:

  • AUTH: EOAs могут вызывать AUTH для авторизации данного смарт-контракта для действий от их имени;
  • AUTHCALL: Авторизованный смарт-контракт может использовать AUTHCALL для выполнения транзакций от имени EOA;

Исследование предложения EIP-7702: Конечное решение Виталика для вызова проблемы абстракции учетной записи? image 3

Это достигает многих тех же случаев использования, что и EIP-4337, не требуя от каждого пользователя развертывать новый смарт-контракт. Основное различие заключается в том, что транзакции исходят от EOA пользователя, а не от нового контракта без истории учетной записи пользователя, ETH, NFT, токенов и т. д.

Исследование предложения EIP-7702: Конечное решение Виталика для вызова проблемы абстракции учетной записи? image 4

Обычная реакция на EIP-3074 - "Что, если кто-то развернет зловредный контракт и пользователи делегируют ему?" В конце концов, делегирование к зловредному контракту может привести к выкачиванию всех криптовалютных активов пользователя из его кошелька.

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

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

Исследование предложения EIP-7702: Конечное решение Виталика для вызова проблемы абстракции учетной записи? image 5

Одним из ключевых моментов делегирования в EIP-3074 является то, что делегирование не является постоянным: "одна отдельная транзакция от EOA увеличит счетчик nonce, что сделает недействительными все оставшиеся авторизации".

После того, как пользователь совершит новую транзакцию, делегация больше не будет действительной.

Исследование предложения EIP-7702: Конечное решение Виталика для вызова проблемы абстракции учетной записи? image 6

EIP-5003

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

Это приводит нас к нашему следующему предложению: EIP-5003. EIP-5003 добавляет еще один опкод "AUTHUSURP," развертывая код на адресе авторизации EIP-3074.

Разница между EIP-3074 и EIP-5003 заключается в следующем:

  • EIP-3074 - временная делегация умным контрактам, отзываемая;
  • EIP-5003 - постоянная миграция с EOA и "конвертация" с EOA в учетную запись умного контракта;

Одной из основных проблем EIP-3074 + EIP-5003 является то, что она не очень совместима с текущей схемой абстракции учетных записей через EIP-4337, поэтому некоторые участники сообщества Ethereum опасаются, что мы создадим "два отдельных экосистемы кода" с этими двумя типами абстракций учетных записей.

EIP-7702

Это приводит нас к предложению Виталика Бутерина сегодня: EIP-7702 - он предлагает модифицировать EIP-3074, чтобы сделать его более кратким и совместимым с EIP-4337, чтобы мы не оказались с двумя отдельными экосистемами абстракции учетных записей, и рассматривает EIP-5003 как следующий шаг для постоянной миграции.

EIP-7702 вводит новый тип транзакции, который принимает поля contract_code и signature. Когда транзакция начинает выполнение, она устанавливает код контракта учетной записи подписанта в contract_code. По завершении транзакции он сбрасывает код в пустое состояние.

Подобно EIP-3074, он реализует временную делегацию от EOA к умным контрактам. Однако EIP-7702 не вводит новые опкоды (что потребовало бы хардфорк), а определяет функции для вызова:

  • AUTH -> вызывает "verify" для проверки
  • AUTHCALL -> вызывает "execute" для выполнения

Исследование предложения EIP-7702: Конечное решение Виталика для вызова проблемы абстракции учетной записи? image 7

Конкретно, он:

  • Проверяет, пуст ли код вашего учетного контракта;
  • Если он пуст, устанавливает его в предоставленный код контракта;
  • Выполняет транзакцию на основе того, как умный контракт обрабатывает транзакции;
  • Восстанавливает код учетного контракта в пустое состояние;

"Код контракта" - это буквально код умного контракта, хранящийся в "коде контракта". Поскольку EOA сам по себе не является контрактом, это поле обычно пусто. Однако умная часть EIP-7702 заключается в том, что она временно заполняет некоторый код умного контракта в это поле во время выполнения транзакции.

Это способ предоставить новое поведение (в виде кода) вашему EOA для выполнения этой конкретной транзакции, с последующим шагом сделать его постоянным изменением поведения, просто выбрав "не сбрасывать код в пустое состояние после завершения транзакции".

<s

Одним из лучших аспектов этого предложения является его высокая совместимость со всеми абстракциями учетных записей, созданными для EIP-4337 до сих пор, </s

"Код контракта, который пользователи должны подписать, на самом деле может быть существующим кодом кошелька EIP-4337".

Когда эти изменения вступят в силу, существующий EOA пользователей сможет выполнять любой код умного контракта. Через дополнительные EIPs EOAs также могут быть постоянно обновлены для выполнения определенного кода.

Со временем это может фундаментально изменить весь процесс работы

ay все мы взаимодействуем с веб-приложениями третьего поколения.