Розкриття майбутнього: аналіз абстрагування рахунку на багатьох ланцюгах
З 8 по 11 липня в Брюсселі відбулася конференція спільноти Ethereum, найбільша щорічна подія Ethereum в Європі, яка зосереджена на технологіях і спільноті.
На цій конференції понад 350 лідерів думок з першої лінії блокчейн-індустрії виступили з промовами, серед яких була і промова під назвою "Відкриття майбутнього: аналіз абстрагування рахунку з кількох ланцюгів".
Основні моменти виступу:
абстрагування рахунку(AA) має два ключові моменти: абстрагування підпису та абстрагування платежу. Абстрагування підпису дозволяє користувачам обирати будь-який механізм верифікації, тоді як абстрагування платежу підтримує різні варіанти оплати транзакцій. Ця гнучкість підвищує безпеку та користувацький досвід.
Вхідні функції на етапі "перевірки" ERC-4337 та нативного AA є фіксованими, тоді як на етапі "виконання" лише вхідна точка нативного AA є фіксованою. Обмеження на перевірку транзакцій та етапи виконання транзакцій мають свої особливості в різних реалізаціях.
При реалізації ERC-4337 на EVM-сумісному ланцюзі два ключові відмінності полягають у різницях в протоколах дизайну Rollup і способах обчислення адрес, що призводить до деяких тонких деталей розробки під час реалізації ERC-4337 між L1 та L2.
Ось повний текст виступу:
Привіт усім, сьогодні я представлю концепцію ERC-4337 та нативного AA, обговорю їх відмінності та зосереджуся на основних відмінностях стандарту 4337 для L1 та L2.
Абстрагування рахунку
1. Визначення абстрагування рахунку
абстрагування рахунку(AA)主要包括两个关键点:签名抽象和支付抽象。
Абстрагування підпису: Користувач може вибрати будь-який бажаний механізм верифікації, не обмежуючись певними алгоритмами цифрового підпису (такими як ECDSA).
Абстрагування платежів: користувачі можуть використовувати різноманітні варіанти оплати, такі як використання активів ERC-20 замість рідних активів для оплати або можливість спонсорувати угоду третьою стороною.
Ця гнучкість забезпечує більш безпечний та оптимальний досвід користувача. Мета абстрагування рахунку полягає в досягненні цих двох ключових моментів різними способами.
2. Вступ до ERC-4337
Наразі в протоколі Ethereum існують деякі обмеження зовнішніх володіючих акаунтів (EOA), такі як фіксований метод підпису та дизайн платежів. ERC-4337 вирішує ці проблеми, введучи більш гнучке управління акаунтами та обробку транзакцій.
структура userOp: у ERC-4337 користувач надсилає структуру userOp до Bundler. Bundler збирає кілька userOp і надсилає їх до EntryPoint контракту, викликавши функцію handleOps.
Контракт EntryPoint: цей контракт обробляє транзакції, як операційна система, основні функції включають:
Викликати функцію validate в контракті акаунта, щоб забезпечити авторизацію власника акаунта для userOp.
Стягнення зборів.
Викликати функцію execute в контракті акаунту для виконання цільової операції userOp.
3. Вступ до нативного AA
У мережі Ethereum акаунти поділяються на EOA та контрактні акаунти. Однак у нативному AA кожен акаунт є контрактом, а механізм обробки транзакцій безпосередньо вбудований у протокол блокчейну.
Первинне абстрагування рахунку відповідає ERC-4337: ера StarkNet & zkSync
Нативне абстрагування рахунку з дизайном конфіденційності: Aztec
Відмінності між ERC-4337 та нативним AA
1. Роль операційної системи
AA OS потрібно вирішити такі проблеми:
Визначник цін на газ
Визначник порядку транзакцій та місце в пулі пам'яті
тригери функцій вхідної точки
фактори, що визначають процес обробки交易
У ERC-4337 ці ролі виконуються спільно через Bundler та EntryPoint Contract.
У рідному AA користувач надсилає свої userOps оператору/сортувальнику офіційного сервера, а не Bundler та EntryPoint Contract.
У StarkNet Sequencer відповідає за виконання всіх цих завдань.
У zkSync основна різниця між Era та іншими реалізаціями AA полягає в тому, що Оператору потрібно працювати в тандемі з завантажувачем (системним контрактом). Завантажувач відкриває нові блоки, визначає їх параметри (включаючи параметри блоку та інші параметри Gas) та отримує транзакції від Оператора для перевірки.
2. Інтерфейс контракту
Оскільки існує три етапи, інтерфейс облікового контракту є подібним у різних реалізаціях, ці функції точок входу можуть бути викликані лише AA OS:
ERC-4337: перевірка дій користувача
zkSync: перевірка транзакцій, платіж за транзакцією, виконання транзакцій
В ERC-4337 та нативному AA функція точки входу на етапі "перевірки" є фіксованою, тоді як на етапі "виконання" лише точка входу в нативному AA є фіксованою.
3. Обмеження етапів перевірки
Оскільки перевірка транзакцій не має обмежень за витратами (по суті, перевірка транзакцій є викликом функції перегляду), зловмисник може здійснити DoS-атаку на пул пам'яті, що призведе до збою бандлера (EIP-4337) або операторів/сортерів (рідна AA).
EIP-4337 визначає, які операційні коди заборонені, а також як обмежити доступ до пам'яті. zkSync Era послабила використання деяких OpCode:
Логіка контракту може отримати доступ тільки до своїх власних слотів зберігання. Якщо адреса контракту акаунта - адреса A, він може отримати доступ до:
сховище, що належить адресі A
сховище, що належить будь-якій іншій адресі A
Сховище слота keccak256 (A || X), що належить будь-якій іншій адресі: це означає, що адреса використовується безпосередньо як ключ у відображенні (наприклад, mapping (address => value)), що еквівалентно доступу до слота keccak256 (A || X). Наприклад, баланс активів у контракті ERC-20.
Логіка контракту не може отримувати доступ до глобальних змінних, таких як номер блоку. StarkNet також не дозволяє виклики зовнішніх контрактів.
4. Обмеження виконання кроків
У zkSync виконання системних викликів вимагає підтвердження наявності системних прапорців. Наприклад, єдиний спосіб збільшити nonce - це взаємодіяти з NonceHolder, а для розгортання контракту необхідно взаємодіяти з ContractDeployer. Системні прапорці забезпечують свідомість розробників акаунтів у їхній взаємодії з системними контрактами.
У виконанні етапу немає спеціальних обмежень в ERC-4337 та StarkNet.
5. Випадкове число
У ERC-4337 дизайн випадкового числа точки входу відрізняє 192-бітове значення ключа та 64-бітове випадкове значення.
У системному контракті NonceHolder в zkSync управляється nonce, що забезпечує строгий інкремент, тобто випадкове число збільшується на 1.
У StarkNet nonce також строго збільшується, але немає абстрактного nonce, яким управляє конкретний контракт.
6. Використання першої транзакції для розгортання
ERC-4337 містить поле initcode в структурі userOp для розгортання відправника (контракту акаунту) у своєму першому userOp.
У StarkNet та zkSync користувачі повинні надіслати першу транзакцію оператору/сортировнику для розгортання контракту акаунту.
7. спеціальний дизайн у zkSync
Якщо ви безпосередньо переведете ETH з EOA Ethereum на zkSync, не розгортаючи спеціальний контракт рахунку, ви отримаєте за замовчуванням акаунт з такою ж адресою. Цей акаунт може працювати так само, як EOA Ethereum, і також контролюється відповідним приватним ключем EOA Ethereum.
Цей тип акаунту є версією None, а не version1. Ви не можете викликати функції DefaultAccount, оскільки він не має жодного коду, розгорнутого в ядерному просторі.
Різниця між L1 4337 та L2 4337
Існує дві ключові відмінності в реалізації ERC-4337 на EVM-сумісних блокчейнах: відмінності в протоколі та відмінності в адресах.
1. Різниця в угодах
У дизайні Rollup L2 необхідно завантажити дані до L1 для забезпечення безпеки та розрахунків. У контексті ERC-4337 витрати, пов'язані з цим процесом завантаження, такі як плата за безпеку L1 та плата за blob, повинні бути включені до попередньої перевірки Gas. Визначення відповідних витрат на завантаження в попередній перевірці Gas є значним викликом.
2. Різниця адрес
У функції create zkSync ERA спосіб кодування адрес відрізняється від Ethereum та OP-агрегатів. Крім того, StarkNet використовує унікальну хеш-функцію для обчислення адрес. У контексті ERC-4337 на EVM-сумісних ланцюгах ми зазвичай припускаємо, що обчислення адрес на кожному ланцюгу є однаковим. Однак є один важко помітний нюанс, який може призвести до різниці в адресах контрактів акаунтів між реалізаціями ERC-4337 в Ethereum та L2.
Ключове питання полягає в додаванні нових операційних кодів у жорсткому розгалуженні. Наприклад, якщо L2-ланцюг не підтримує жорстке розгалуження Шанхая, і версія EVM не вказана під час компіляції, введення push0 призведе до зміни байт-коду, навіть якщо код Solidity залишиться незмінним.
Висновок
Вищезазначене містить деяку інформацію про абстрагування рахунку. Якщо у вас є будь-які запитання, будь ласка, зв'яжіться зі мною в Twitter.
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
Аналіз технології багатоланцюгового абстрагування рахунку: порівняння ERC-4337 та нативного AA
Розкриття майбутнього: аналіз абстрагування рахунку на багатьох ланцюгах
З 8 по 11 липня в Брюсселі відбулася конференція спільноти Ethereum, найбільша щорічна подія Ethereum в Європі, яка зосереджена на технологіях і спільноті.
На цій конференції понад 350 лідерів думок з першої лінії блокчейн-індустрії виступили з промовами, серед яких була і промова під назвою "Відкриття майбутнього: аналіз абстрагування рахунку з кількох ланцюгів".
Основні моменти виступу:
абстрагування рахунку(AA) має два ключові моменти: абстрагування підпису та абстрагування платежу. Абстрагування підпису дозволяє користувачам обирати будь-який механізм верифікації, тоді як абстрагування платежу підтримує різні варіанти оплати транзакцій. Ця гнучкість підвищує безпеку та користувацький досвід.
Вхідні функції на етапі "перевірки" ERC-4337 та нативного AA є фіксованими, тоді як на етапі "виконання" лише вхідна точка нативного AA є фіксованою. Обмеження на перевірку транзакцій та етапи виконання транзакцій мають свої особливості в різних реалізаціях.
При реалізації ERC-4337 на EVM-сумісному ланцюзі два ключові відмінності полягають у різницях в протоколах дизайну Rollup і способах обчислення адрес, що призводить до деяких тонких деталей розробки під час реалізації ERC-4337 між L1 та L2.
Ось повний текст виступу:
Привіт усім, сьогодні я представлю концепцію ERC-4337 та нативного AA, обговорю їх відмінності та зосереджуся на основних відмінностях стандарту 4337 для L1 та L2.
Абстрагування рахунку
1. Визначення абстрагування рахунку
абстрагування рахунку(AA)主要包括两个关键点:签名抽象和支付抽象。
Ця гнучкість забезпечує більш безпечний та оптимальний досвід користувача. Мета абстрагування рахунку полягає в досягненні цих двох ключових моментів різними способами.
2. Вступ до ERC-4337
Наразі в протоколі Ethereum існують деякі обмеження зовнішніх володіючих акаунтів (EOA), такі як фіксований метод підпису та дизайн платежів. ERC-4337 вирішує ці проблеми, введучи більш гнучке управління акаунтами та обробку транзакцій.
3. Вступ до нативного AA
У мережі Ethereum акаунти поділяються на EOA та контрактні акаунти. Однак у нативному AA кожен акаунт є контрактом, а механізм обробки транзакцій безпосередньо вбудований у протокол блокчейну.
Дизайн AA в різних блокчейн-мережах:
Відмінності між ERC-4337 та нативним AA
1. Роль операційної системи
AA OS потрібно вирішити такі проблеми:
У ERC-4337 ці ролі виконуються спільно через Bundler та EntryPoint Contract.
У рідному AA користувач надсилає свої userOps оператору/сортувальнику офіційного сервера, а не Bundler та EntryPoint Contract.
У StarkNet Sequencer відповідає за виконання всіх цих завдань.
У zkSync основна різниця між Era та іншими реалізаціями AA полягає в тому, що Оператору потрібно працювати в тандемі з завантажувачем (системним контрактом). Завантажувач відкриває нові блоки, визначає їх параметри (включаючи параметри блоку та інші параметри Gas) та отримує транзакції від Оператора для перевірки.
2. Інтерфейс контракту
Оскільки існує три етапи, інтерфейс облікового контракту є подібним у різних реалізаціях, ці функції точок входу можуть бути викликані лише AA OS:
В ERC-4337 та нативному AA функція точки входу на етапі "перевірки" є фіксованою, тоді як на етапі "виконання" лише точка входу в нативному AA є фіксованою.
3. Обмеження етапів перевірки
Оскільки перевірка транзакцій не має обмежень за витратами (по суті, перевірка транзакцій є викликом функції перегляду), зловмисник може здійснити DoS-атаку на пул пам'яті, що призведе до збою бандлера (EIP-4337) або операторів/сортерів (рідна AA).
EIP-4337 визначає, які операційні коди заборонені, а також як обмежити доступ до пам'яті. zkSync Era послабила використання деяких OpCode:
Логіка контракту може отримати доступ тільки до своїх власних слотів зберігання. Якщо адреса контракту акаунта - адреса A, він може отримати доступ до:
Логіка контракту не може отримувати доступ до глобальних змінних, таких як номер блоку. StarkNet також не дозволяє виклики зовнішніх контрактів.
4. Обмеження виконання кроків
У zkSync виконання системних викликів вимагає підтвердження наявності системних прапорців. Наприклад, єдиний спосіб збільшити nonce - це взаємодіяти з NonceHolder, а для розгортання контракту необхідно взаємодіяти з ContractDeployer. Системні прапорці забезпечують свідомість розробників акаунтів у їхній взаємодії з системними контрактами.
У виконанні етапу немає спеціальних обмежень в ERC-4337 та StarkNet.
5. Випадкове число
6. Використання першої транзакції для розгортання
7. спеціальний дизайн у zkSync
Якщо ви безпосередньо переведете ETH з EOA Ethereum на zkSync, не розгортаючи спеціальний контракт рахунку, ви отримаєте за замовчуванням акаунт з такою ж адресою. Цей акаунт може працювати так само, як EOA Ethereum, і також контролюється відповідним приватним ключем EOA Ethereum.
Цей тип акаунту є версією None, а не version1. Ви не можете викликати функції DefaultAccount, оскільки він не має жодного коду, розгорнутого в ядерному просторі.
Різниця між L1 4337 та L2 4337
Існує дві ключові відмінності в реалізації ERC-4337 на EVM-сумісних блокчейнах: відмінності в протоколі та відмінності в адресах.
1. Різниця в угодах
У дизайні Rollup L2 необхідно завантажити дані до L1 для забезпечення безпеки та розрахунків. У контексті ERC-4337 витрати, пов'язані з цим процесом завантаження, такі як плата за безпеку L1 та плата за blob, повинні бути включені до попередньої перевірки Gas. Визначення відповідних витрат на завантаження в попередній перевірці Gas є значним викликом.
2. Різниця адрес
У функції create zkSync ERA спосіб кодування адрес відрізняється від Ethereum та OP-агрегатів. Крім того, StarkNet використовує унікальну хеш-функцію для обчислення адрес. У контексті ERC-4337 на EVM-сумісних ланцюгах ми зазвичай припускаємо, що обчислення адрес на кожному ланцюгу є однаковим. Однак є один важко помітний нюанс, який може призвести до різниці в адресах контрактів акаунтів між реалізаціями ERC-4337 в Ethereum та L2.
Ключове питання полягає в додаванні нових операційних кодів у жорсткому розгалуженні. Наприклад, якщо L2-ланцюг не підтримує жорстке розгалуження Шанхая, і версія EVM не вказана під час компіляції, введення push0 призведе до зміни байт-коду, навіть якщо код Solidity залишиться незмінним.
Висновок
Вищезазначене містить деяку інформацію про абстрагування рахунку. Якщо у вас є будь-які запитання, будь ласка, зв'яжіться зі мною в Twitter.