Предисловие
Эта статья разделена на два основных модуля:
В первой половине, начиная с первого предложения АА в 2015 году, мы будем систематически разбирать основное содержание предложений EIP. Мы надеемся изучить историю исторических предложений АА и всесторонне оценить преимущества и недостатки каждого плана.
Во второй половине мы сосредоточимся на сравнении отзывов о спаде рынка, возникших после предложения EIP 4337, а затем проведем углубленный анализ EIP 7702, который будет включен в следующую версию обновления Ethereum, как только это предложение будет принято. объединившись, это полностью изменит форму заявки в цепочке.
EIP-7702 имеет эпохальные изменения, пожалуйста, послушайте подробное объяснение г-на Шиши.
1. Абстрактный фон аккаунта
1.1 Абстрактное значение счета
Позиционирование Виталик, основатель Ethereum, снова обновил дорожную карту развития ETH в конце 2023 года, но настройки абстракции учетной записи не были изменены. Сегодняшняя основная модель также перешла на следующий этап после EIP-4337, VoluntaryEOA Conversion (добровольное преобразование учетных записей EOA).
https://x.com/VitalikButerin/status/1741190491578810445
Прошло больше года с момента запуска EIP 4337 (на WalletCon в Денвере 1 марта 2023 года было официально объявлено, что основной контракт ERC-4337, разработанный и реализованный разработчиками Ethereum Foundation, прошел аудит OpenZeppelin и считается быть официально запущен исторический узел).
Он всегда был широко признан пользователями, но не получил широкого распространения. В такой противоречивой рыночной среде прогресс EIP-7702 значительно продвинулся вперед, и было даже подтверждено, что он будет включен в следующее обновление.
1.2 Текущее рыночное состояние абстракции аккаунта
Без лишних слов, давайте просто посмотрим на данные.
После полутора лет разработки EIP 4337 имеет только 1200 W-адресов в коллекции учетных записей основной цепочки. Самое удивительное, что в основной сети Ethereum всего 6764 активных адреса. Возможно, статистические размеры проблемы. , но, по крайней мере, оно сильно отличается от количества адресов EOA и CA. Вы должны знать, что количество независимых адресов в сети Ethereum достигло 270 миллионов (источник данных: https://etherscan.io/chart/address). ).
Можно сказать, что основная сеть EIP 4337 не получила существенного развития.
Источник данных: https://dune.com/niftytable/account-abstraction)
Однако это не умаляет существенной ценности AA, поскольку с самого начала разработки EIP 4337 было задумано, что он не сможет преуспеть перед лицом серьезных проблем прямой совместимости в основной сети, поэтому наряду с различными L2 Layer Chains Обычно встроенные в собственный AA, количество адресов EIP 4337 резко возросло на L2. Среди них ежемесячные активные пользователи базовых и полигональных цепочек в июле составляли 100 Вт и 300 Вт соответственно, что весьма впечатляет.
Таким образом, дело не в том, что конструкция EIP 4337 неправильная. У нее много преимуществ. Мы кратко подведем итоги. Текущая ситуация связана с различиями между основной сетью и сетью L2. решения.
2. Что такое абстракция учетной записи?
Абстракция учетных записей звучит запутанно, но на самом деле она по сути решает проблему разделения прав собственности.
В архитектуре EVM существует два типа учетных записей (т. е. виртуальная машина Ethereum): внешняя учетная запись (EOA) и контрактная учетная запись (контрактная учетная запись). Права собственности и подписи внешней учетной записи фактически принадлежат одному и тому же лицу. единица. Лицо, владеющее закрытым ключом, не только является «владельцем» учетной записи, но также имеет право «подписать и передать все активы».
Это определяется структурой транзакций учетной записи Ethereum.
Как видно из структуры на рисунке ниже, в стандартных транзакциях Ethereum нет стороны «От кого». Итак, если я выполняю перевод средств, с какого конкретного адреса я буду использовать средства? Фактически адрес отправителя декодируется через его параметр VRS (т. е. подпись пользователя).
Это включает в себя такие концепции, как асимметричное шифрование, такое как ECDSA, и односторонние пороговые функции. Короче говоря, криптография используется для обеспечения безопасности. Конечно, это также вызвало текущую дилемму адреса EOA, связанную с слиянием прав собственности.
Основной эффект EIP 4337 заключается в добавлении поля адреса отправителя в поле транзакции, тем самым отделяя закрытый ключ от действующего адреса.
Так почему же разделение прав собственности так важно?
Потому что дизайн внешней учетной записи (EOA) вызовет больше проблем:
Закрытые ключи сложно защитить: потеря пользователями своих личных ключей (потеря, хакерская атака, криптографический взлом) означает потерю всех своих активов.
Мало алгоритмов подписи: собственный протокол может использовать только алгоритмы подписи ECDSA и проверки подписи для проверки транзакций.
Высокий авторитет подписи: встроенной мультиподписи не существует (множественная подпись может взаимодействовать только через смарт-контракты), и любая операция может быть выполнена с помощью одной подписи.
Комиссия за транзакцию может быть оплачена только через ETH, пакетные транзакции не поддерживаются.
Утечка конфиденциальности транзакций: транзакции «один на один» позволяют легко анализировать личную информацию владельца счета.
Ограничения привлекательности затрудняют использование Ethereum обычными пользователями:
Во-первых, чтобы использовать любое приложение на Ethereum, пользователи должны иметь эфир (и нести риск колебаний цен на эфир).
Во-вторых, пользователям приходится иметь дело со сложной логикой затрат. Концепции цены газа, лимита газа и блокировки транзакций (порядок Nonce) слишком сложны для пользователей.
Наконец, хотя многие кошельки и приложения с блокчейном пытаются улучшить взаимодействие с пользователем за счет оптимизации продукта, их фактический эффект минимален.
Таким образом, способ исправить ситуацию — реализовать абстракцию учетной записи и разделить права собственности (Владелец) и права подписи (подписавшая сторона), чтобы вышеуказанные проблемы можно было решить одну за другой. На самом деле исторических планов много, и они в конечном итоге сойдутся в двух маршрутах.
3. Просмотрите историю предложений АА.
Кажется, существует много предложений EIP по решению этой проблемы, но в конечном итоге есть две основные идеи. Таким образом, проблемы, рассмотренные в каждом EIP, который не был принят в прошлом, также слились в решении текущего решения.
3.1 Первый путь — изменить адрес EOA на адрес CA.
Еще 15 ноября 2015 года, в связи с EIP-101, Виталик предложил новую структуру, использующую контракты в качестве счетов. Измените адрес, чтобы иметь только код и место для хранения, измените комиссию за обработку для поддержки оплаты по ERC 20, измените собственный токен на аналогичный ERC 20 с помощью предварительно скомпилированных контрактов для хранения остатков (может иметь такие функции, как авторизация удержания) и оптимизируйте поля транзакций, оставив только to, startgas, data и code. Теперь кажется, что это просто изменение в стиле «Большого скачка», которое значительно изменит базовый дизайн, так что каждый адрес учетной записи будет иметь свою собственную логику «кода» (фактически, это именно то, чего сейчас пытается достичь EIP-7702). ). Другие функции также могут быть получены, например,
Разрешите транзакциям использовать больше алгоритмов шифрования, а метод проверки подписи можно будет указать внутренним кодом каждого адреса.
Он устойчив к квантовым атакам, поскольку код имеет характеристики обновления.
Пусть Ethereum имеет те же функциональные характеристики, что и контракт ERC 20, а основным эффектом является разрешение на удержание, поэтому нет необходимости терять внутреннюю валюту.
Улучшите пространство для настройки учетной записи, совместимое с восстановлением через социальные сети, поддержкой sbt, поиском ключей и т. д.
Причина отказа от дальнейшего продвижения также очень проста. Очевидно, что темпы слишком велики. Что касается текущей проблемы конфликта хэшей транзакций и рисков безопасности, она была отложена из-за недостаточного внимания. стала основной функцией последующих EIP 4337 и EIP 7702. one.
Позже появилась серия EIP, пытавшихся улучшить эту логику:
EIP-859: Абстракция учетной записи основной сети--30 января 2018 г.
Попытка решить проблему развертывания кода. Основная функция заключается в том, что, если контракт стороны транзакции не развернут, параметр кода, прикрепленный к транзакции, используется для выполнения развертывания контрактного кошелька. Во-вторых, также предлагается новый код операции PAYGAS. Помимо оплаты газа, он также становится транзакцией. Разделитель между частью проверки и частью выполнения параметров транзакции. Хотя в то время это закончилось напрасно, теперь это стало одной из основных логик EIP 7702. Каждая транзакция EIP 7702 объединяется со специальной структурой транзакции и может сопровождаться определенным кодом, так что адрес 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 два новых кода операции AUTH и AUTHCALL, что позволит EOA вызывать другие контракты через эти два контракта авторизации кода операции вместо идентификатора EOA. В сочетании с рисунком ниже, EOA может отправить подписанное сообщение (транзакцию) контракту, которому он доверяет (называемому Invoker). Этот контракт Invoker может использовать коды операций AUTH и AUTHCALL для замены этого EOA и отправки этой сделки.
EIP-4337: использовать пул памяти транзакций для реализации абстракции учетной записи-29 сентября 2021 г.
Я уже написал много статей по этому поводу, в которых глубоко анализируется его механизм. Подробнее можно прочитать:
https://research.web3 caff.com/zh/archives/3212 ,
Интерпретация плана проверки абстракции аккаунта Ethereum ERC 4337 (Часть 1)
Аннотация к аккаунту Ethereum, исследовательский отчет на 10 000 слов: демонтаж 10 связанных предложений EIP и семилетний путь, чтобы преодолеть узкое место десятков миллионов ежедневных активных пользователей.
Потратьте час на объяснение абстракции аккаунта.
Короче говоря, на разработку его вдохновил MEV, и его основная ценность заключается в том, что изменений протокола уровня консенсуса можно полностью избежать.
eip 4337 предлагает новый объект транзакции UserOperation. Пользователи отправляют этот объект в пул памяти, а сборщики упаковывают и доставляют контракты пакетами из измерения майнера для выполнения транзакций. По сути, базовые операции транзакций и учетных записей переносятся на уровень контракта. для исполнения.
EIP-5189: Управление абстрактными счетами через индоссантов — 29 июня 2022 г.
Это можно рассматривать как оптимизацию логики EIP 4337. Перед лицом вредоносного Bundler он устанавливает механизм одобрения финансовых санкций для предотвращения блокирующих DoS-атак.
3.3 Другие предложения по поддержке АА
EIP-2718: Упаковочный конверт для нового типа транзакции — 13 июня 2020 г.
Это предложение, которое было доработано. Оно определяет новый тип транзакции как конверт для новых типов транзакций в будущем. Конечным результатом является то, что при введении нового типа транзакции используется определенная кодировка, чтобы отличить тип транзакции, поэтому требуется только обратная совместимость, но не прямая совместимость. Наиболее распространенным примером является EIP 1559, который дифференцирует комиссии за транзакции и использует новые коды типов транзакций, не затрагивая исходный устаревший тип транзакции.
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 Структура данных
Он определяет новый тип транзакции 0x 04. TransactionPayload этого типа транзакции представляет собой закодированный в RLP результат сериализации следующего содержания:
Важно то, что объект авторизации_list добавляется для хранения кода, который подписывающая сторона хочет выполнить в своем EOA. Когда пользователь подписывает транзакцию, он также подписывает код контракта, который должен быть выполнен. Он существует в виде двумерного списка. указывая, что информация о нескольких операциях может храниться в пакетах, выполнять пакетные операции.
4.3 Жизненный цикл транзакции
4.3.1 Этап проверки
В начале выполнения транзакции для каждого кортежа [chain_id, адрес, nonce, y_parity, r, s] списка авторизации:
Используйте ecrecover для восстановления адреса подписывающего лица из подписей r и s (обратите внимание, что это механизм самого Ethereum, поэтому этот EIP не меняет алгоритм подписи). авторитет = ecrecover(keccak(MAGIC || rlp([chain_id, адрес, nonce]))), y_parity, r, s] (Аналогично предыдущему решению подписи для получения адреса отправителя, здесь получается локальная подпись адрес для этого списка)
Проверьте идентификатор цепочки (воспроизведение цепочки с защитой от форков).
Убедитесь, что код лица, подписывающего полномочия, пуст или был делегирован (проверьте, является ли транзакция допустимой транзакцией 7702, и механизм делегирования будет использоваться для выполнения транзакции позже).
Проверьте одноразовый номер лица, подписавшего полномочия (чтобы предотвратить повторение подписи органа).
Установите код подписывающего лица на адрес 0x ef 0100 || (используется для обхода политики предотвращения конфликтов EIP 3607).
Увеличьте значение nonce подписывающего лица (чтобы предотвратить частичное воспроизведение подписи).
Добавьте учетную запись подписывающего лица в список посещенных адресов (перенесите горячие адреса, чтобы снизить плату за газ за хранение запросов)
4.3.2 Фаза выполнения операции
Где находится код контракта и инструкции по эксплуатации, которые необходимо выполнить?
«Новая» версия меняет только поведение в отношении развертывания кода.
Вместо установки кода учетной записи в Contract_code он извлекает адрес кода из списка авторизации и устанавливает этот код в качестве кода учетной записи.
Таким образом, когда необходимо выполнить код авторизации, он загружается с адреса, указанного в поле адреса авторизации_списка, и выполняется в контексте учетной записи подписывающего лица.
Это означает, что код контракта пользователя фактически хранится по определенному адресу в цепочке, а не включается напрямую в транзакцию.
Инструкции по эксплуатации и соответствующие параметры хранятся в поле данных полезной нагрузки транзакции.
4.4 Какова ценность EIP-7702?
Будут изменения во всей ссылке кошелька Web3, а также кардинально изменится пользовательский опыт, поскольку обычные транзакции, инициированные EOA, также могут выполнять различную логику, аналогичную контрактам, например пакетную передачу. Сценарий CeFi повлияет на идентификацию транзакций и комиссию за снятие средств. Благодаря своему появлению он сломал многие предыдущие стереотипы, такие как:
Нарушает инвариант, согласно которому баланс счета может быть уменьшен только за счет транзакций, исходящих из этого счета.
Нарушает инвариант, согласно которому значение nonce EOA увеличивается на 1 после начала выполнения транзакции (оно может увеличиваться несколько раз одновременно).
Логика защиты двух сравнений tx.origin и msg.sender нарушена, и многие прошлые контракты находятся под угрозой.
Это нарушает статус-кво, согласно которому EOA сама не может выдавать события. Возможно, потребуется уделить внимание идентификации и мониторингу некоторых событий в сети.
Это нарушает статус-кво, согласно которому адреса EOA должны успешно принимать ERC 20, 721, 1155 и другие активы (это может потерпеть неудачу из-за механизма обратного вызова).
4.5 Сравнение EIP-7702 и EIP-4337
1. Преимущества ЭИП-7702
Газ ниже, потому что нет необходимости проходить через модуль точки входа, что сокращает операции внутри цепочки.
Затраты на миграцию пользователей ниже, и нет необходимости заранее развертывать внутрисетевые контракты.
По сравнению с Eip 4337, здесь также будет выполняться делегирование кода, и также будет два метода:
Полное делегирование
Полное делегирование означает делегирование всех разрешений на операцию определенному адресу. Например, пользователи могут делегировать права управления всеми токенами ERC-20 адресу смарт-контракта, чтобы этот смарт-контракт мог выполнять все связанные операции от имени пользователя.
Защищенное делегирование
Под защищенным делегированием подразумевается добавление некоторых ограничений и мер защиты в процессе делегирования для обеспечения безопасности и управляемости операции делегирования.
Например, пользователи могут делегировать смарт-контракту управление только некоторыми токенами ERC-20 или установить некоторые ограничения (например, тратить максимум 1% от общего баланса в день).
2. Недостатки ЭИП-7702
Его основной недостаток заключается в том, что это обновление софт-форка, для продвижения которого требуется консенсус каждого, и изменения огромны, что окажет большое влияние на экологию сети. Судя по первоначальной оценке Четырнадцатого короля, существует. являются следующие проблемы, но проблемы также являются рыночными возможностями:
Степень свободы чрезвычайно высока, и ее трудно проверить. Пользователям потребуются более надежные кошельки для обеспечения безопасности.
Исходная структура изменилась слишком сильно. Хотя она отличается разными типами транзакций, многие инфраструктуры, особенно неизменяемые контракты в цепочке, не могут быть адаптированы напрямую.
Возможности контракта предоставляются для адресов EOA, но соответствующее пространство хранения не может быть сохранено.
Стоимость отдельной транзакции немного выше, поскольку часть Calldata будет значительно увеличена. Предполагаемая общая стоимость вызова составит 16 (gas) * 15 (bytes) = 240 (gas) стоимости calldata плюс стоимость EIP-. 3860 2 * 15 = 30 плюс примерная стоимость выполнения 150. Поэтому просто подготовка аккаунта, даже если вы ничего не делаете, добавит 500 Газа.
«Если получатель подписывает код, не получая функции, отправитель может столкнуться с DoS при попытке отправить актив. См. случай». На самом деле проблема в том, что EOA A подписал то, что не должен был подписывать - воспроизводимый файл с неправильно настроенной реализацией (без получения()).
Логика вывода средств в сети может быть противоречивой. Например, при передаче токенов ERC-20, если у учетной записи получателя есть код, контракт токена будет вызывать учетную запись получателя onERC 20. Если onERC 20 Received отменяет или возвращает неправильное значение, передача токена будет отменена.
Кроме того, если EOA может отправлять события, возникнут ли какие-либо проблемы? Некоторая инфраструктура может потребовать внимания.
Это лишь некоторые из недостатков, которые Шиджун обобщил на основе текущего содержания предложения EIP 7702 и соответствующих обсуждений на официальном форуме. В конце концов, его необходимо полностью проанализировать на основе окончательного кода реализации. Ссылка следующая:
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, задействованные в ней, можно расширить с помощью ссылок в статье, поэтому я не буду к ней возвращаться.
В настоящее время абстракция учетной записи действительно может быть помещена только в шестой модуль, который должен все исправить, то есть реализовать в конце. Теперь, когда разработка EIP 7702 значительно ускорилась, это принесло больше проблем в систему. Как и следовало ожидать, в конце концов он это осознает. В конце концов, могут произойти разрушительные события, такие как слияние Ethereum и изменение алгоритма консенсуса, а как насчет новых типов транзакций?
Но на этот раз было слишком много подрывных действий, нарушение невозможных скрытых правил в нескольких цепочках и логика приложений большинства децентрализованных приложений. Однако основная идея заключалась в том, что стоимость для пользователей была ниже. Понятно! По сравнению с EIP 4337 транзакционные издержки почти удвоились.
Сам пользователь по-прежнему является адресом EOA и управляет и использует логику CA только тогда, когда это необходимо, поэтому стоимость хранения невелика. Нет необходимости преобразовывать удостоверение ЦС в цепочке перед выполнением операций, а это означает, что пользователям не нужно регистрироваться.
Пользователи могут легко использовать EOA для параллельного выполнения нескольких транзакций, например, для разрешения удержания и выполнения удержания в одной, что снижает стоимость транзакций для пользователей для Dapps, особенно для тех, которые требуют управления на уровне предприятия. Участники проекта, такие как биржи. , провели революционную оптимизацию. Как только пакетное агрегирование реализовано в исходной среде, базовая стоимость обмена может быть мгновенно снижена более чем вдвое, что в конечном итоге может принести пользу пользователям.
Поэтому, хотя он сильно изменился, аспект стоимости стоит изучить и адаптировать ко всем Dapps, потому что на этот раз пользователи должны быть на стороне EIP 7702.