Автор: Шиджунджун

Предисловие

Эта статья разделена на два основных модуля:

В первой половине, начиная с первого предложения АА в 2015 году, мы будем систематически разбирать основное содержание предложений EIP. Мы надеемся изучить историю исторических предложений АА и всесторонне оценить преимущества и недостатки каждого плана.

Во второй половине мы сосредоточимся на сравнении отзывов о спаде рынка, с которым столкнулся EIP4337 после его предложения, а затем проведем углубленный анализ EIP7702, который вскоре будет включен в следующую версию обновления Ethereum. предложение объединено, оно полностью изменит форму заявки в цепочке.

EIP-7702 имеет эпохальные изменения, пожалуйста, послушайте подробное объяснение г-на Шиши.

1. Абстрактный фон аккаунта

1.1 Значение абстракции аккаунта

Виталик, основатель Ethereum, еще раз обновил дорожную карту развития ETH в конце 2023 года, но настройки абстракции учетной записи не были изменены. Сегодняшняя основная модель также перешла на следующий этап после EIP-4337, VoluntaryEOA Conversion (добровольное преобразование учетной записи EOA).

https://x.com/VitalikButerin/status/1741190491578810445

Прошло больше года с момента запуска EIP4337 (на WalletCon в Денвере 1 марта 2023 года было официально объявлено, что основной контракт ERC-4337, разработанный и реализованный разработчиками Ethereum Foundation, прошел аудит OpenZeppelin и считается официальный запуск узла истории).

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

1.2 Текущее рыночное состояние абстракции аккаунта

Без лишних слов, давайте просто посмотрим на данные.

После полутора лет разработки EIP4337 имеет только 12 миллионов адресов в коллекции учетных записей основной сети. Самое удивительное, что в основной сети Ethereum всего 6764 активных адреса. Возможно, что-то не так со статистическим измерением. , но, по крайней мере, существует огромная разница между количеством адресов в EOA и CA. Вы должны знать, что количество независимых адресов в сети Ethereum достигло 270 миллионов (источник данных: https://etherscan.io/chart/). адрес).

Можно сказать, что EIP4337 не имеет существенного развития в основной сети.

(Источник данных диаграммы: https://dune.com/niftytable/account-abstraction)

Однако это не умаляет существенной ценности AA, поскольку с самого начала разработки EIP4337 было задумано, что он не сможет преуспеть перед лицом серьезных проблем прямой совместимости в основной сети, поэтому с развитием различных Цепочки уровней L2. Число адресов EIP4337, универсально встроенных в собственный AA, резко возросло на уровне L2. Ежемесячные активные пользователи базовых и полигональных цепочек в июле составили 1 миллион и 3 миллиона соответственно, что весьма впечатляет.

Таким образом, дело не в том, что конструкция EIP4337 неправильная. У нее много преимуществ. Мы систематически подведем итоги. Текущая ситуация связана с различиями между основной сетью и L2. Им необходимо использовать свои собственные подходящие решения. .

2. Что такое абстракция учетной записи?

Абстракция учетных записей звучит запутанно, но на самом деле она по сути решает проблему разделения прав собственности.

В архитектуре EVM существует два типа учетных записей (т. е. виртуальная машина Ethereum): внешняя учетная запись (EOA) и контрактная учетная запись (контрактная учетная запись). Права собственности и подписи внешней учетной записи фактически принадлежат одному и тому же лицу. единица. Лицо, владеющее закрытым ключом, не только является «владельцем» учетной записи, но также имеет право «подписывать и передавать все активы».

Это определяется структурой транзакций учетной записи Ethereum.

Как видно из структуры на рисунке ниже, в стандартных транзакциях Ethereum нет стороны «От кого». Итак, если я выполняю перевод средств, с какого конкретного адреса я буду использовать средства? Фактически адрес отправителя декодируется через его параметр VRS (т. е. подпись пользователя).

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

Основной эффект EIP4337 заключается в добавлении поля «Адрес отправителя» в поле транзакции, тем самым отделяя закрытый ключ от действующего адреса.

Так почему же разделение прав собственности так важно?

Потому что дизайн внешней учетной записи (EOA) вызовет больше проблем:

  1. Закрытые ключи сложно защитить: потеря пользователей своих личных ключей (потеря, хакерская атака, криптографический взлом) означает потерю всех своих активов.

  2. Мало алгоритмов подписи: собственный протокол может использовать только алгоритмы подписи ECDSA и проверки подписи для проверки транзакций.

  3. Высокий авторитет подписи: встроенной мультиподписи не существует (множественная подпись может взаимодействовать только через смарт-контракты), и любая операция может быть выполнена с помощью одной подписи.

  4. Комиссия за транзакцию может быть оплачена только через ETH, пакетные транзакции не поддерживаются.

  5. Утечка конфиденциальности транзакций: транзакции «один на один» позволяют легко анализировать личную информацию владельца счета.

Ограничения привлекательности затрудняют использование Ethereum обычными пользователями:

Во-первых, чтобы использовать любое приложение на Ethereum, пользователи должны иметь эфир (и нести риск колебаний цен на эфир).

Во-вторых, пользователям приходится иметь дело со сложной логикой затрат. Концепции цены газа, лимита газа и блокировки транзакций (порядок Nonce) слишком сложны для пользователей.

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

Таким образом, способ исправить ситуацию — реализовать абстракцию учетной записи и разделить права собственности (Владелец) и права подписи (подписавшая сторона), чтобы вышеуказанные проблемы можно было решить одну за другой.

На самом деле исторических планов много, и они в конечном итоге сойдутся в двух маршрутах.

3. Просмотрите историю предложений АА.

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

3.1 Первый путь — изменить адрес EOA на адрес CA.

Еще 15 ноября 2015 года, в связи с EIP-101, Виталик предложил новую структуру, использующую контракты в качестве счетов. Измените адрес, чтобы иметь только код и место для хранения, измените комиссию за обработку для поддержки оплаты по ERC20, измените собственный токен на аналогичный ERC20 через предварительно скомпилированный контракт, чтобы сохранить баланс (может иметь такие функции, как удержание авторизации), рационализировать поля транзакции содержат только to, startgas, data и code.

Теперь кажется, что это просто изменение в стиле «Большого скачка», которое значительно изменит базовый дизайн, так что каждый адрес учетной записи будет иметь свою собственную логику «кода» (фактически, это именно то, чего сейчас пытается достичь EIP-7702). ).

Другие функции также могут быть получены, например,

  1. Разрешите транзакциям использовать больше алгоритмов шифрования, а метод проверки подписи можно указать внутренним кодом каждого адреса.

  2. Он устойчив к квантовым атакам, поскольку код имеет характеристики обновления.

  3. Пусть Ethereum имеет те же функциональные характеристики, что и контракт ERC20, а основным эффектом является разрешение на удержание, поэтому нет необходимости терять собственную валюту.

  4. Улучшите пространство для настройки учетной записи, совместимое с восстановлением через социальные сети, поддержкой sbt, поиском ключей и т. д.

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

Позже появилась серия EIP, пытавшихся улучшить эту логику.

EIP-859: Абстракция учетной записи основной сети--30 января 2018 г.

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

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

EIP-7702: Установите код учетной записи EOA 07.05.2024.

Это также основной EIP механизма, обсуждаемого далее в этой статье. EIP-7702 был опубликован Виталиком в качестве альтернативы EIP-3074 (07.05.2024). Поэтому от EIP-3074 отказались, а EIP-7702 было решено включить в предстоящий хард-форк ETH Prague/Electra (Pectra). Подробности мы остановимся ниже.

3.2 Второй путь — позволить адресу EOA управлять адресом CA.

EIP-3074: добавьте коды операций AUTH и AUTHCALL — 15 октября 2020 г.

Добавьте в EVM два новых OpCodesAUTH и AUTHCALL, что позволит EOA вызывать другие контракты через эти два контракта авторизации кода операции вместо идентификатора EOA.

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

EIP-4337: Использование пула памяти транзакций для реализации абстракции учетной записи-29 сентября 2021 г.

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

eip4337 предложил новый объект транзакции UserOperation. Пользователь отправляет этот объект в пул памяти, а сборщики упаковывают и доставляют контракт пакетами из измерения майнера для выполнения транзакции. уровень контракта для исполнения.

EIP-5189: Управление абстрактными счетами через индоссантов — 29 июня 2022 г.

Это можно рассматривать как оптимизацию логики EIP4337. Перед лицом вредоносного Bundler он устанавливает механизм одобрения финансовых санкций для предотвращения блокирующих DoS-атак.

3.3 Другие предложения по поддержке АА

EIP-2718: Упаковка конвертов для новых типов транзакций--13 июня 2020 г.

Это окончательное предложение. Оно определяет новый тип транзакции как конверт для новых типов транзакций в будущем.

Конечным результатом является то, что при введении нового типа транзакции используется определенная кодировка, чтобы отличить тип транзакции, поэтому требуется только обратная совместимость, но не прямая совместимость. Наиболее распространенным примером является EIP1559, который дифференцирует комиссии за транзакции и использует коды новых типов транзакций, не затрагивая исходный устаревший тип транзакции.

EIP-3607: сделать адреса EOA недоступными для развертывания по контракту — 10 июня 2021 г.

Это дополнительное решение на пути AA для предотвращения конфликтов между адресами развертывания контракта и адресами EOA. Он будет контролировать метод генерации контракта, чтобы система не позволяла развернуть код по адресу, который уже является адресом EOA. На самом деле этот риск очень мал. В конце концов, длина адреса Ethereum составляет 160 бит. Хотя существует метод использования закрытого ключа для коллизии с закрытым ключом указанного адреса контракта, это все равно займет год, исходя из полного. вычислительная мощность Биткойна.

3.4 Как понять процесс разработки абстракции аккаунта?

Во-первых, вам необходимо понять ценность перехода на CA.

По сути, это настоящий эффект EIP-4337, он может его достичь.

Однако основной недостаток EIP-4337 заключается в том, что он нарушает принципы человеческой мотивации.

Кажется, так лучше, но он попал в бесконечный цикл развития рынка. Многие децентрализованные приложения несовместимы, поэтому пользователи не желают использовать адреса центров сертификации, и даже использование центров сертификации приводит к более высоким транзакционным издержкам (обычные сценарии передачи также предусматривают комиссию за транзакцию). double), а также слишком сильно зависит от совместимости самого децентрализованного приложения.

Поэтому он до сих пор не популяризирован в сети Ethereum.

Стоимость является наиболее важным критерием для пользователей, и затраты необходимо снижать.

Но чтобы по-настоящему сократить GAS, сам Ethereum должен выполнить обновление софт-форка, изменить расчет GAS или изменить потребление GAS в коде операции и других модулях. Однако, поскольку требуется софт-форк, почему бы непосредственно не рассмотреть EIP-7702?

4. Комплексный анализ EIP-7702.

4.1 Что такое EIP-7702

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

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

4.2 Структура данных

Он определяет новый тип транзакции 0x04. TransactionPayload этого типа транзакции является результатом сериализации кодирования RLP следующего содержимого.

  • рлп([

    Chain_id, //ID цепочки, используемый для предотвращения атак повторного воспроизведения.

    nonce, // Счетчик транзакций для обеспечения уникальности транзакции.

    max_priority_fee_per_gas, // комиссия за транзакцию 1559

    max_fee_per_gas, // комиссия за транзакцию 1559

    gas_limit,

    назначения, //Адрес назначения транзакции

    ценить,

    данные,

    access_list, //Список доступа, используемый для оптимизации газа в EIP-2929.

    список_авторизации,

    Signature_y_parity, // 3 параметра подписи, используемые для проверки подписи транзакции.

    подпись_р,

    подпись_с

    ])

Важно то, что объект авторизации_list добавляется для хранения кода, который подписывающая сторона хочет выполнить в своем EOA. Когда пользователь подписывает транзакцию, он также подписывает код контракта, который должен быть выполнен. Он существует в виде двумерного списка. указывая, что информация о нескольких операциях может храниться в пакетах, выполнять пакетные операции.

  • authorization_list = [[chain_id, адрес, nonce, y_parity, r, s], ...]

 

4.3 Жизненный цикл транзакции

4.3.1 Этап проверки

В начале выполнения транзакции для каждого кортежа [chain_id, адрес, nonce, y_parity, r, s] списка авторизации:

  1. Используйте ecrecover для восстановления адреса подписывающего лица из подписей r и s (обратите внимание, что это механизм самого Ethereum, поэтому этот EIP не меняет алгоритм подписи). авторитет = ecrecover(keccak(MAGIC || rlp([chain_id, адрес, nonce]))), y_parity, r, s] (Аналогично предыдущей расшифровке подписи для получения адреса отправителя, здесь получается локальная подпись адрес для этого списка)

  2. Проверьте идентификатор цепочки (воспроизведение цепочки с защитой от форков).

  3. Убедитесь, что код лица, подписавшего полномочия, пуст или был делегирован (проверьте, является ли транзакция допустимой транзакцией 7702, и механизм делегирования будет использоваться для выполнения транзакции позже).

  4. Проверьте одноразовый номер лица, подписавшего полномочия (чтобы предотвратить повторение подписи органа).

  5. Установите код подписывающего лица на адрес 0xef0100 || (используется для обхода политики предотвращения конфликтов EIP3607).

  6. Увеличьте значение nonce подписывающего лица (чтобы предотвратить частичное воспроизведение подписи).

  7. Добавьте учетную запись подписывающего лица в список посещенных адресов (перенесите горячие адреса, чтобы снизить плату за газ для хранения запросов)

4.3.2 Фаза выполнения операции

Где находится код контракта и инструкции по эксплуатации, которые необходимо выполнить?

«Новая» версия меняет только поведение в отношении развертывания кода.

Вместо установки кода учетной записи Contract_code он извлекает адрес кода из списка авторизации и устанавливает этот код в качестве кода учетной записи.

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

Это означает, что код контракта пользователя фактически хранится по определенному адресу в цепочке, а не включается напрямую в транзакцию.

Инструкции по эксплуатации и соответствующие параметры хранятся в поле данных загрузки транзакции.

4.4 Какова ценность EIP-7702?

Будут изменения во всей ссылке кошелька Web3, и пользовательский опыт также кардинально изменится, поскольку обычные транзакции, инициированные EOA, также могут выполнять различную логику, аналогичную контрактам, например пакетные переводы. В сценариях CeFi это повлияет на идентификацию транзакций и комиссию за снятие средств.

Благодаря его появлению были сломаны многие прежние стереотипы, такие как:

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

  2. Нарушает инвариант, согласно которому значение nonce EOA увеличивается на 1 после начала выполнения транзакции (возможно, одновременно увеличивая несколько единиц).

  3. Логика защиты при сравнении tx.origin и msg.sender нарушена, и многие прошлые контракты находятся под угрозой.

  4. Это нарушает статус-кво, согласно которому EOA сама не может выдавать события. Возможно, потребуется уделить внимание идентификации и мониторингу некоторых событий в сети.

  5. Это нарушает статус-кво, согласно которому адреса EOA должны успешно принимать ERC20, 721, 1155 и другие активы (это может потерпеть неудачу из-за механизма обратного вызова).

4.5 Сравнение EIP-7702 и EIP-4337

1. Преимущества ЭИП-7702

  • Газ ниже, потому что нет необходимости проходить через модуль точки входа, что сокращает операции внутри цепочки.

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

  • По сравнению с Eip4337 здесь тоже будет выполнение делегирования кода и тоже будет два метода:

Полное делегирование

  • Полное делегирование означает делегирование всех разрешений на операцию определенному адресу. Например, пользователи могут делегировать права управления всеми токенами ERC-20 адресу смарт-контракта, чтобы этот смарт-контракт мог выполнять все связанные операции от имени пользователя.

Защищенное делегирование

  • Под защищенным делегированием подразумевается добавление некоторых ограничений и мер защиты в процессе делегирования для обеспечения безопасности и управляемости операции делегирования.

  • Например, пользователи могут делегировать смарт-контракту управление только некоторыми токенами ERC-20 или установить некоторые ограничения (например, максимальные ежедневные расходы в размере 1% от общего баланса).

2. Недостатки ЭИП-7702

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

  1. Степень свободы чрезвычайно высока, и ее трудно проверить. Пользователям потребуются более надежные кошельки для обеспечения безопасности.

  2. Исходная структура изменилась слишком сильно. Хотя она отличается разными типами транзакций, многие инфраструктуры, особенно неизменяемые контракты в цепочке, не могут быть адаптированы напрямую.

  3. Возможности контракта предоставляются для адресов EOA, но соответствующее пространство хранения не может быть сохранено.

  4. Стоимость отдельной транзакции немного выше, поскольку часть Calldata будет значительно увеличена. Предполагаемая общая стоимость вызова составит 16 (gas) * 15 (bytes) = 240 (gas) стоимости calldata плюс стоимость EIP-. 3860 2 * 15 = 30 плюс примерная стоимость выполнения 150. Поэтому просто подготовка аккаунта, даже если вы ничего не делаете, увеличит газ на 500.

  5. «Если получатель подписывает код, не получая функции, отправитель может столкнуться с DoS при попытке отправить актив. См. случай». На самом деле проблема в том, что EOA A подписал что-то, чего не должно быть - воспроизводимый файл с неправильно настроенной реализацией (без получения()).

  6. Логика вывода средств в сети может быть противоречивой. Например, при передаче токенов ERC-20, если у учетной записи получателя есть код, контракт токена вызовет onERC20Received для учетной записи получателя. Если onERC20Received отменяет или возвращает неправильное значение, передача токена будет отменена.

  7. Кроме того, если EOA может отправлять события, возникнут ли какие-либо проблемы? Некоторая инфраструктура может потребовать внимания.

Это лишь некоторые недостатки, обобщенные Шишидзюном на основе текущего содержания предложения EIP7702 и соответствующих обсуждений на официальном форуме. В конце концов, его необходимо полностью проанализировать на основе окончательного кода реализации.

Ссылка следующая:

  • https://eips.ethereum.org/EIPS/eip-7702

    https://ethereum-magicians.org/t/eip-set-eoa-account-code-for-one-transaction/19923

    https://github.com/ethereum/EIPs/pull/8527

5. Полное текстовое резюме

Эта статья кажется огромной по объему, но на самом деле ее текстовое содержание составляет всего около 6 тысяч слов. Многие предыдущие интерпретации EIP, задействованные в ней, можно расширить с помощью ссылок в статье, поэтому я не буду к ней возвращаться.

В настоящее время абстракция учетной записи действительно может быть помещена только в шестой модуль, который должен все исправить, то есть он наконец реализуется. Теперь, когда прогресс EIP7702 значительно ускорился, это принесет больше проблем с безопасностью системы. Можно ожидать, что в конце концов Он это осознает. В конце концов, могут произойти разрушительные события, такие как слияние Эфириума и модификация алгоритма консенсуса, а как насчет новых типов транзакций?

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

Сам пользователь по-прежнему имеет адрес EOA и управляет и использует логику CA только тогда, когда это необходимо, поэтому стоимость хранения невелика. Нет необходимости преобразовывать удостоверение ЦС в цепочке перед выполнением операций, а это означает, что пользователям не нужно регистрироваться.

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

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