Автор оригинала: Джаррод Уоттс

Оригинальная компиляция: Фрэнк, Foresight News.

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

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

  • ЭИП-4337

  • ЭИП-3074

  • ЭИП-5003

Начнем с общей цели всех этих предложений — «абстракции учетной записи» — EOA («обычные» учетные записи) в Ethereum ужасны, они рискованны и имеют очень ограниченную функциональность, в то время как абстракция учетной записи позволяет пользователям использовать смарт-контракты в качестве учетной записи для добавления. больше функций и безопасности для решения этой проблемы.

ЭИП-4337

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

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

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

Так что же не так с EIP-4337? Почему сегодня предлагается еще одно абстрактное предложение по счету? Потому что EOA остается наиболее широко используемым типом учетной записи.

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

Поскольку не существует способа «конвертировать» EOA пользователя в учетную запись смарт-контракта, существует странное промежуточное решение — в основном из-за отсутствия встроенной поддержки подключения учетных записей смарт-контрактов в приложениях Web3, большинство людей сегодня все еще используют плагин. -в кошельках, таких как MetaMask, используйте EOA.

ЭИП-3074

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

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

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

  • AUTH: EOA может вызвать AUTH, чтобы разрешить данному смарт-контракту выполнять операции от имени своего EOA;

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

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

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

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

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

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

ЭИП-5003

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

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

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

  • EIP-3074 — это временное делегирование смарт-контракта, которое можно отозвать;

  • EIP-5003 — это постоянная миграция из EOA и «конверсия» из EOA в учетную запись смарт-контракта;

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

ЭИП-7702

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

EIP-7702 предлагает новый тип транзакции, который принимает поля Contract_code и Signature, который устанавливает код контракта учетной записи подписывающей стороны на Contract_code при запуске транзакции. В конце сделки тикер сбрасывается до пустого состояния.

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

  • AUTH -> вызов «verify» (проверка)

  • AUTHCALL -> вызвать «выполнить»

В частности, это:

  • Проверьте, пуст ли код контракта вашего аккаунта;

  • Если оно пусто, ему присваивается предоставленный код контракта;

  • Выполнить транзакцию в соответствии с тем, как предоставленный смарт-контракт обрабатывает транзакцию;

  • Восстановите настройку кода контракта учетной записи на пустое значение;

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

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

Одна из лучших особенностей этого предложения заключается в том, что оно полностью совместимо со всей работой по абстракции учетных записей, созданной на сегодняшний день для EIP-4337: «код контракта, который пользователи должны подписать, на самом деле может быть существующим кодом кошелька EIP-4337».

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

Со временем это может произвести революцию в том, как мы все взаимодействуем с приложениями Web3.