Часть III · Глава 37 из 43 · Prague · Electra

EIP-7702: даём вашему EOA суперспособности на месте

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

Обновлено 23 июн. 2026 г. · 12 мин
Предполагается
  • EOA против контрактов
  • абстракция аккаунта (4337)

EIP-4337 дал Ethereum смарт-аккаунты — программируемую валидацию, батчинг, спонсируемый газ — но с оговоркой: смарт-аккаунт — это контракт на новом адресе. Чтобы им воспользоваться, приходится мигрировать: переносить средства, заново выстраивать идентичность и отказываться от адреса (и ключа), по которому вас все знают. Сотни миллионов обычных EOA, которыми на практике пользуется почти каждый, остались за бортом. EIP-7702 (вошёл в Pectra, 2025) исправляет это, позволяя EOA временно стать смарт-аккаунтом, сохранив свой адрес и ключ. Идея — всего одна маленькая мысль; давайте выведем её.

1 шаг Мигрировать или остаться жёстким

Проблема: 4337 оставляет ваш EOA позади

Смарт-аккаунт 4337 — это контракт, развёрнутый на собственном адресе. Поэтому, чтобы получить его возможности, вы переезжаете: отправляете активы на новый аккаунт, переключаете все интеграции и живёте за другим адресом. Ваш EOA Externally-owned account — обычный аккаунт, порождённый закрытым ключом. Он может инициировать транзакции, но его правила фиксированы: одна подпись ECDSA, газ только в ETH, одно действие. , со всей своей историей и ключом, который все узнают, остаётся позади — и по-прежнему жёстким.

ваш EOA · 0xYouсредства · история · ключ ✗ жёстко, без смарт-сил мигрировать? смарт-аккаунт0xNew — новый адрес возможности 4337 требуют новый адрес — ваш EOA остаётся прежним, жёстким
Чтобы воспользоваться возможностями 4337, вы мигрируете на новый контрактный аккаунт по новому адресу. Ваш существующий EOA — средства, история, ключ — остаётся позади, всё ещё не умея батчиться или быть спонсированным.

Эта миграция — трение, которого почти никто не хочет. И заметьте единственное различие между вашим EOA и смарт-аккаунтом: у смарт-аккаунта есть код, а у EOA — нет. Так что вопрос напрашивается сам.

→ Шаг 2: указываем EOA на контракт.

2 шаг Делегируем код

Подписываем делегирование; код становится указателем

Добавляем новый тип транзакции, 0x04, который несёт список авторизаций: подписанные тройки (chainId, delegate_address, nonce). Собственный ключ EOA подписывает одну из них — «установить мой код как делегирование этому контракту» — и когда она применяется, поле кода аккаунта устанавливается в крошечный указатель делегирования (delegation designator) 23-байтовое значение 0xef0100 ++ address, которое EIP-7702 записывает в поле кода EOA. Это не байткод контракта — это указатель, говорящий EVM выполнять код этого контракта в контексте данного аккаунта. : 0xef0100 ++ delegate_address. Важно, что это перенаправление, а не копия — EOA не хранит байткод контракта, только 23-байтовый указатель на него.

подписанная авторизация(chainId, delegate, nonce) EOA 0xYou code: (empty) code: 0xef0100 → delegate контракт-делегат подписать делегирование → код EOA становится указателем, не копией
Транзакция типа 0x04 несёт подписанную авторизацию. Её применение устанавливает код EOA в 0xef0100 ++ delegate — небольшой указатель на контракт, а не копию его байткода.

→ Шаг 3: выполняем код, на который он указывает.

3 шаг Выполняем от имени EOA

Выполняем код делегата — в собственном контексте EOA

Вот и развязка. Всякий раз, когда аккаунт вызывается (или выступает отправителем транзакции), EVM видит designator 0xef0100, следует по нему, загружает код контракта-делегата и выполняет его — но в контексте EOA: хранилище EOA, баланс EOA, адрес EOA. Внутри этого кода address(this) — это и есть 0xВы. Как будто ваш аккаунт одолжил поведение контракта, оставаясь при этом полностью собой.

вызов EOA 0xYoucode: → delegatestorage · баланс загружает делегированный код выполняется КАК 0xYou — его storage, баланс, адрес вызов загружает код делегата и исполняет его в контексте самого EOA
Вызов EOA следует по указателю, загружает код делегата и выполняет его как 0xВы — используя собственное хранилище, баланс и адрес EOA. Аккаунт ведёт себя как смарт-аккаунт, не сходя с места.

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

→ Шаг 4: суперспособности — и оговорка.

4 шаг Суперспособности на месте

Что вы получаете — на адресе, который у вас уже есть

Ваш существующий аккаунт теперь может делать то же, что и смарт-аккаунт, не отказываясь от вашего ключа: батчить approve и swap в один атомарный вызов; быть спонсируемым, когда релеер отправляет транзакцию типа 0x04 и платит за газ (даже за самую первую транзакцию вашего аккаунта); использовать сессионные ключи и ограниченные разрешения; и подключаться напрямую к экосистеме 4337, делегируя реализации аккаунта в стиле 4337.

0xYouтот же адрес batch approve+swapsponsored gassession keys ваш адрес обретает смарт-возможности — ключ по-прежнему работает
Батчинг, спонсируемый газ, сессионные ключи — всё на адресе, который у вас уже есть, через делегирование его контракту. И ваш ключ по-прежнему работает как раньше.
04 Глубже Куда двигаться дальше