Багатоланцюгове абстрагування рахунку: ключові відмінності між ERC-4337 та нативним AA

Багатоланкове абстрагування рахунку: дослідження майбутнього шифрувальної інфраструктури

Нещодавно в Брюсселі, Бельгія, відбулася конференція спільноти Ethereum (EthCC 7), яка є найбільшим щорічним заходом Ethereum в Європі, зосередженим на технологіях та спільноті. На конференції більше 350 провідних лідерів думок у сфері блокчейн-індустрії виступили з промовами, серед яких один розробник представив доповідь під назвою "Відкриття майбутнього: розкриття абстрагування рахунку на кількох ланцюгах".

Основні моменти виступу

  • Абстрагування рахунку (AA) в основному включає два ключових моменти: абстрагування підпису та абстрагування платежу. Абстрагування підпису дозволяє користувачеві вибирати будь-який вподобаний механізм верифікації, тоді як абстрагування платежу дозволяє використовувати різні варіанти оплати. Ця гнучкість забезпечує більш безпечний і кращий користувацький досвід.

  • У ERC-4337 та нативному AA функція точки входу на етапі "перевірки" є фіксованою, тоді як на етапі "виконання" фіксованою є лише точка входу в нативному AA. Обмеження на перевірку транзакцій та етапи виконання транзакцій мають свої особливості та обмеження в різних реалізаціях.

  • Впровадження ERC-4337 на EVM-сумісних ланцюгах має дві ключові відмінності: відмінності в протоколах дизайну Rollup і відмінності в способах обчислення адрес, що призводить до труднощів у помічанні деталей розробки під час реалізації ERC-4337 між L1 та L2.

Шифрування інфраструктури майбутнього? Аналіз багатоланцевого абстрагування рахунку

Абстрагування рахунку

Що таке абстрагування рахунку

абстрагування рахунку (AA)主要包括两个关键点:

  1. Абстрагування підпису: Користувачі можуть вибрати будь-який вподобаний механізм верифікації, а не обмежуватися певними алгоритмами цифрового підпису (такими як ECDSA).

  2. Абстрагування платежів: користувачі можуть використовувати різні варіанти оплати для торгівлі, такі як використання активів ERC-20 замість рідних активів для оплати або залучення третіх осіб для спонсорування угод.

Ця гнучкість забезпечує більш безпечний та покращений досвід користувача. Метою абстрагування рахунку є досягнення цих двох ключових моментів різними способами.

Вступ до ERC-4337

Наразі зовнішні акаунти (EOA) в протоколі Ethereum мають певні обмеження, такі як фіксований метод підпису та дизайн платежів. ERC-4337 вирішує ці проблеми, впроваджуючи більш гнучке управління акаунтами та обробку транзакцій.

  • структура userOp: у ERC-4337 користувач надсилає структуру userOp до Bundler. Bundler збирає кілька userOp і надсилає їх до контракту EntryPoint, викликавши функцію handleOps.

  • Контракт EntryPoint: цей контракт обробляє транзакції, як операційна система, основні функції включають:

    • Викликати функцію validate в контракті акаунта, щоб переконатися, що userOp отримав авторизацію власника акаунта.
    • Стягувати плату.
    • Викликати функцію execute в контракті акаунта для виконання цільової операції userOp.

Вступ до нативного AA

У Ethereum акаунти поділяються на EOA та контрактні акаунти. Однак у нативному абстрагуванні рахунку кожен акаунт є контрактом, і механізм обробки транзакцій безпосередньо вбудований у блокчейн-протокол.

Дизайн AA в різних блокчейн-мережах:

  • Абстракція облікового запису ERC-4337: Ethereum, Arbitrum, Optimism, Base, Linea, Scroll, Polygon PoS
  • Нативне абстрагування рахунку слідує ERC-4337: ера StarkNet і zkSync
  • Нативне абстрагування рахунку з дизайном конфіденційності: Aztec

Шифрування інфраструктури майбутнього? Аналіз абстрагування рахунку на базі мульти-ланцюга

Відмінності між ERC-4337 та рідною абстракцією рахунку (AA)

роль операційної системи

AA OS потрібно вирішити такі проблеми:

  • Хто вирішує ціну газу?
  • Хто вирішує порядок угод? Де знаходиться пам'ятковий пул?
  • Хто викликав функцію точки входу?
  • Що визначає процес обробки угод?

У ERC-4337 ці ролі виконуються спільно через Bundler та EntryPoint Contract.

У рідній AA користувач надсилає свої userOps операторам/сортировщикам офіційного сервера, а не Bundler і EntryPoint Contract.

У StarkNet Sequencer відповідає за виконання всіх цих завдань.

У zkSync основна різниця між Era та іншими реалізаціями AA в тому, що Оператору потрібно працювати разом з bootloader (системним контрактом). Bootloader відкриває новий блок, визначає його параметри (включаючи параметри блоку та інші параметри Gas) і отримує транзакції від Оператора для перевірки.

інтерфейс контракту

Оскільки існує три етапи, інтерфейс контракту акаунту є подібним в різних реалізаціях, ці функції точок входу можуть бути викликані лише AA OS:

  • ERC-4337: перевірка операцій користувача
  • zkSync: перевірка транзакцій, оплата транзакцій, виконання транзакцій
  • StarkNet:виконати、валидація、валидація_оголошення、валидація_розгортання

В ERC-4337 та рідному AA функція точки входу на стадії "перевірки" є фіксованою, тоді як на стадії "виконання" лише точка входу в рідному AA є фіксованою.

обмеження етапів перевірки

Оскільки перевірка транзакцій не має обмежень за витратами (по суті, перевірка транзакцій є викликом функції перегляду), зловмисник може здійснити атаку DoS на пул пам'яті, внаслідок чого буде зламано бандлери (EIP-4337) або оператори/сортировщики (рідна AA).

EIP-4337 визначає заборонені операційні коди та як обмежити доступ до зберігання. zkSync Era послаблює використання деяких OpCode:

  • Логіка контракту може отримувати доступ лише до свого власного сховища. Якщо адреса контракту акаунта є адресою A, він може отримувати доступ до:

    • Сховище, що належить адресі A
    • Сховище, що належить будь-якій іншій адресі A
    • Сховище, що належить будь-якій іншій адресі keccak256(A || X): це означає безпосереднє використання адреси як ключа в мапінгу (наприклад, мапінг (акаунт => значення)), що еквівалентно доступу до слота keccak256(A || X). Наприклад, баланс активів у контракті ERC-20.
  • Логіка контракту не може отримати доступ до глобальних змінних, таких як номер блоку. StarkNet також не дозволяє виклики зовнішніх контрактів.

обмеження виконання етапів

У zkSync виконання системних викликів вимагає підтвердження наявності системних прапорців. Наприклад, єдиний спосіб збільшити nonce - це взаємодіяти з NonceHolder, а для розгортання контракту потрібно взаємодіяти з ContractDeployer. Системні прапорці забезпечують свідоме взаємодію розробників акаунтів із системними контрактами.

У ERC-4337 та StarkNet етап виконання не має спеціальних обмежень.

випадкове число

  • У ERC-4337 дизайн випадкового числа точки входу розрізняє 192-бітне значення ключа та 64-бітне випадкове значення.
  • У системному контракті NonceHolder в zkSync керується nonce, що забезпечує суворе збільшення, тобто випадкове число збільшується на 1.
  • У StarkNet nonce також суворо збільшується, але немає абстрактного nonce, яким керує конкретний контракт.

Використовуйте першу транзакцію для розгортання

  • ERC-4337 містить поле initcode в структурі userOp для розгортання відправника (акаунт контракту) в його першому userOp.
  • У StarkNet та zkSync користувачам потрібно надіслати першу транзакцію оператору/сортеру для розгортання контракту акаунта.

спеціальний дизайн у zkSync

Якщо ви безпосередньо переведете ETH з EOA Ethereum на zkSync, не потрібно розгортати індивідуальний контракт рахунку, ви отримаєте за замовчуванням акаунт з тією ж адресою. Цей акаунт може працювати так само, як EOA Ethereum, і також контролюється відповідним приватним ключем EOA Ethereum.

Цей тип акаунту версії None, а не version1. Ви не можете викликати функції DefaultAccount, оскільки в просторі ядра не було розгорнуто жодного коду.

Шифрування інфраструктури майбутнього? Аналіз абстрагування рахунку на багатьох ланцюгах

Різниця між 4337 L1 та 4337 L2

Існує два ключових відмінності в реалізації ERC-4337 на EVM-сумісних ланцюгах: різниця в протоколі та різниця в адресі.

різниця в протоколах

У дизайні Rollup L2 потрібно завантажувати дані на L1 для безпеки та розрахунків. У контексті ERC-4337 витрати, пов'язані з цим процесом завантаження, такі як плата за безпеку L1 та плата за blob, повинні бути включені до попередньої перевірки Gas. Визначення відповідних витрат на завантаження в попередній перевірці Gas є серйозним викликом.

різниця адреси

У функції create zkSync ERA спосіб кодування адрес відрізняється від Ethereum та OP агрегування. Крім того, StarkNet використовує унікальну хеш-функцію для обчислення адрес. У контексті ERC-4337 на EVM-сумісних ланцюгах ми зазвичай припускаємо, що обчислення адрес на різних ланцюгах є однаковими. Проте існує важливий деталь, яка може призвести до різниці в адресах контрактів акаунтів між реалізаціями ERC-4337 в Ethereum та L2.

Ключове питання полягає в додаванні нових кодувальних операцій під час хард-форку. Наприклад, якщо L2 ланцюг не підтримує Шанхайський хард-форк і при компіляції не вказано версію EVM, введення push0 призведе до зміни байт-коду, навіть якщо код Solidity залишається незмінним.

Шифрування інфраструктури майбутнього? Розбір багатоланцюгового абстрагування рахунку

Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 2
  • Поділіться
Прокоментувати
0/400
OnChainArchaeologistvip
· 07-09 19:30
Багато любити метушитися цими
Переглянути оригіналвідповісти на0
PriceOracleFairyvip
· 07-09 19:30
мех, aa - це просто розумна математика eth... але ця абстракція підпису виглядає досить смачно, чесно кажучи
Переглянути оригіналвідповісти на0
  • Закріпити