Багатоланкове абстрагування рахунку: дослідження майбутнього шифрувальної інфраструктури
Нещодавно в Брюсселі, Бельгія, відбулася конференція спільноти Ethereum (EthCC 7), яка є найбільшим щорічним заходом Ethereum в Європі, зосередженим на технологіях та спільноті. На конференції більше 350 провідних лідерів думок у сфері блокчейн-індустрії виступили з промовами, серед яких один розробник представив доповідь під назвою "Відкриття майбутнього: розкриття абстрагування рахунку на кількох ланцюгах".
Основні моменти виступу
Абстрагування рахунку (AA) в основному включає два ключових моменти: абстрагування підпису та абстрагування платежу. Абстрагування підпису дозволяє користувачеві вибирати будь-який вподобаний механізм верифікації, тоді як абстрагування платежу дозволяє використовувати різні варіанти оплати. Ця гнучкість забезпечує більш безпечний і кращий користувацький досвід.
У ERC-4337 та нативному AA функція точки входу на етапі "перевірки" є фіксованою, тоді як на етапі "виконання" фіксованою є лише точка входу в нативному AA. Обмеження на перевірку транзакцій та етапи виконання транзакцій мають свої особливості та обмеження в різних реалізаціях.
Впровадження ERC-4337 на EVM-сумісних ланцюгах має дві ключові відмінності: відмінності в протоколах дизайну Rollup і відмінності в способах обчислення адрес, що призводить до труднощів у помічанні деталей розробки під час реалізації ERC-4337 між L1 та L2.
Абстрагування рахунку
Що таке абстрагування рахунку
абстрагування рахунку (AA)主要包括两个关键点:
Абстрагування підпису: Користувачі можуть вибрати будь-який вподобаний механізм верифікації, а не обмежуватися певними алгоритмами цифрового підпису (такими як ECDSA).
Абстрагування платежів: користувачі можуть використовувати різні варіанти оплати для торгівлі, такі як використання активів 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 та контрактні акаунти. Однак у нативному абстрагуванні рахунку кожен акаунт є контрактом, і механізм обробки транзакцій безпосередньо вбудований у блокчейн-протокол.
Нативне абстрагування рахунку слідує 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: перевірка транзакцій, оплата транзакцій, виконання транзакцій
В 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, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
17 лайків
Нагородити
17
2
Поділіться
Прокоментувати
0/400
OnChainArchaeologist
· 07-09 19:30
Багато любити метушитися цими
Переглянути оригіналвідповісти на0
PriceOracleFairy
· 07-09 19:30
мех, aa - це просто розумна математика eth... але ця абстракція підпису виглядає досить смачно, чесно кажучи
Багатоланцюгове абстрагування рахунку: ключові відмінності між ERC-4337 та нативним AA
Багатоланкове абстрагування рахунку: дослідження майбутнього шифрувальної інфраструктури
Нещодавно в Брюсселі, Бельгія, відбулася конференція спільноти Ethereum (EthCC 7), яка є найбільшим щорічним заходом Ethereum в Європі, зосередженим на технологіях та спільноті. На конференції більше 350 провідних лідерів думок у сфері блокчейн-індустрії виступили з промовами, серед яких один розробник представив доповідь під назвою "Відкриття майбутнього: розкриття абстрагування рахунку на кількох ланцюгах".
Основні моменти виступу
Абстрагування рахунку (AA) в основному включає два ключових моменти: абстрагування підпису та абстрагування платежу. Абстрагування підпису дозволяє користувачеві вибирати будь-який вподобаний механізм верифікації, тоді як абстрагування платежу дозволяє використовувати різні варіанти оплати. Ця гнучкість забезпечує більш безпечний і кращий користувацький досвід.
У ERC-4337 та нативному AA функція точки входу на етапі "перевірки" є фіксованою, тоді як на етапі "виконання" фіксованою є лише точка входу в нативному AA. Обмеження на перевірку транзакцій та етапи виконання транзакцій мають свої особливості та обмеження в різних реалізаціях.
Впровадження ERC-4337 на EVM-сумісних ланцюгах має дві ключові відмінності: відмінності в протоколах дизайну Rollup і відмінності в способах обчислення адрес, що призводить до труднощів у помічанні деталей розробки під час реалізації ERC-4337 між L1 та L2.
Абстрагування рахунку
Що таке абстрагування рахунку
абстрагування рахунку (AA)主要包括两个关键点:
Абстрагування підпису: Користувачі можуть вибрати будь-який вподобаний механізм верифікації, а не обмежуватися певними алгоритмами цифрового підпису (такими як ECDSA).
Абстрагування платежів: користувачі можуть використовувати різні варіанти оплати для торгівлі, такі як використання активів ERC-20 замість рідних активів для оплати або залучення третіх осіб для спонсорування угод.
Ця гнучкість забезпечує більш безпечний та покращений досвід користувача. Метою абстрагування рахунку є досягнення цих двох ключових моментів різними способами.
Вступ до ERC-4337
Наразі зовнішні акаунти (EOA) в протоколі Ethereum мають певні обмеження, такі як фіксований метод підпису та дизайн платежів. ERC-4337 вирішує ці проблеми, впроваджуючи більш гнучке управління акаунтами та обробку транзакцій.
структура userOp: у ERC-4337 користувач надсилає структуру userOp до Bundler. Bundler збирає кілька userOp і надсилає їх до контракту EntryPoint, викликавши функцію handleOps.
Контракт EntryPoint: цей контракт обробляє транзакції, як операційна система, основні функції включають:
Вступ до нативного AA
У Ethereum акаунти поділяються на EOA та контрактні акаунти. Однак у нативному абстрагуванні рахунку кожен акаунт є контрактом, і механізм обробки транзакцій безпосередньо вбудований у блокчейн-протокол.
Дизайн AA в різних блокчейн-мережах:
Відмінності між 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 та рідному AA функція точки входу на стадії "перевірки" є фіксованою, тоді як на стадії "виконання" лише точка входу в рідному AA є фіксованою.
обмеження етапів перевірки
Оскільки перевірка транзакцій не має обмежень за витратами (по суті, перевірка транзакцій є викликом функції перегляду), зловмисник може здійснити атаку DoS на пул пам'яті, внаслідок чого буде зламано бандлери (EIP-4337) або оператори/сортировщики (рідна AA).
EIP-4337 визначає заборонені операційні коди та як обмежити доступ до зберігання. zkSync Era послаблює використання деяких OpCode:
Логіка контракту може отримувати доступ лише до свого власного сховища. Якщо адреса контракту акаунта є адресою A, він може отримувати доступ до:
Логіка контракту не може отримати доступ до глобальних змінних, таких як номер блоку. StarkNet також не дозволяє виклики зовнішніх контрактів.
обмеження виконання етапів
У zkSync виконання системних викликів вимагає підтвердження наявності системних прапорців. Наприклад, єдиний спосіб збільшити nonce - це взаємодіяти з NonceHolder, а для розгортання контракту потрібно взаємодіяти з ContractDeployer. Системні прапорці забезпечують свідоме взаємодію розробників акаунтів із системними контрактами.
У ERC-4337 та StarkNet етап виконання не має спеціальних обмежень.
випадкове число
Використовуйте першу транзакцію для розгортання
спеціальний дизайн у 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 залишається незмінним.