Автор оригинала: Джаррод Уоттс
Оригинальная компиляция: Фрэнк, 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.