TL;DR
Сьогодні рішення на другому рівні жертвують масштабованість заради фрагментації стану. Ми представляємо дизайн на другому рівні (L2), =nil;, який дозволяє розширення Ethereum без ущемлення переваг єдиної середовища виконання. Рішення поєднує динамічний механізм шардінгу з перевіреною доступністю до даних Ethereum, захищеною технологіями нульового знання. Основні елементи включають:
Через zkSharding =nil; отримує переваги як від монолітного, так і від модулярного дизайнів, включаючи:
Масштабованість
Уніфіковане середовище виконання
Безпека
Функціональність
На нижньому рівні стан =nil; розбивається на основний шардинг та кілька вторинних шардингів. Основна роль шардингу полягає в синхронізації та консолідації даних з вторинних шардингів. Вона використовує Ethereum як його Шардинг Шардингу як Доступність Даних та як перевірник для доказів переходу стану, подібно до типових операцій zkRollups.
Другорядні шари виконують функцію "робітників", які виконують користувацькі транзакції. Ці шари забезпечують єдину ліквідність та дані за допомогою протоколу міжшарового повідомлення, усуваючи будь-які фрагментації серед них.
Кожен шард контролюється комітетом валідаторів. Існує періодична ротація цих валідаторів по шардах. Крім того, оновлення стану шарду перевіряються на головному шарді за допомогою zkEVM.
Для ілюстрації потоку транзакцій від ініціації користувачем до підтвердження на Ethereum розгляньте наступні кроки:
Цей опис передбачає, що транзакція користувача не активує протокол міжшарового обміну повідомленнями. Однак у цьому випадку потік транзакцій залишається тим же з різницею, що транзакція користувача може спричинити створення нових транзакцій на інших фрагментах.
З усіма обліковими записами, які розподіляються серед фрагментів, це може здатися схожим на проблему фрагментації даних, яку знайдено в підході до спеціалізованих ролапів для конкретних застосувань. Однак ключова відмінність полягає в тому, як здійснюється міжшарова комунікація: вона інтегрована безпосередньо в загальний протокол, а не керується окремими зовнішніми мостами.
Щоб гарантувати безпеку кожного вторинного шарда, його валідаторський комітет зобов'язаний довести перехід свого стану на первинний, щоб переконатися, що в меншій групі валідаторів не сталося шахрайства. Кожен комітет валідаторів шардів має додаткові завдання, окрім обслуговування шардів. Валідатори відповідають за відстеження певних типів подій, а саме повідомлень між шардами, у межах «ближніх шардів». Ближні уламки визначаються на основі відстані Хеммінга в ідентифікаторах шардів.
=nil;s zkEVM - це тип-1 zkEVM, скомпільований з zkLLVM. Щоб зрозуміти відмінності між традиційнішими zkEVM та zkEVM від =nil;, нам потрібно обговорити обмеження, пов'язані з процесом визначення схем, що лежать в основі zkEVM. Схема zkEVM - це критична частина, відповідальна за доказ переходу стану, щоб його вважали вірним, зазвичай визначена з допомогою деякого спеціалізованого zkDSL або просто бібліотеки. Такий спосіб визначення схеми вносить проблеми, пов'язані з:
=nil; zkEVM ефективно вирішує всі ці виклики, бути:
zkEVM, скомпільований через zkLLVM, захищений за конструкцією, використовуючи evmone для забезпечення повної узгодженості з використовуваним виробництвом EVM Ethereum. zkLLVM (C++ або Rust) автоматично компілюється до схеми, що означає, що людська помилка вилучається з процесу визначення схеми.
Крім того, оскільки =nil; zkEVM компілюється через zkLLVM, він природно більш гнучкий (і, отже, майбутнє) ніж вручну визначені схеми, оскільки його легко налаштовувати, а генерація схеми автоматична. Також він більш аудитований, що означає, що його безпека не залежить від включення останніх EIP, доданих до Ethereum.
Оскільки основний шар і вторинні шари відрізняються у відношенні до їх призначених завдань - вторинні шари фокусуються на обробці транзакцій, тоді як основний шар фокусується на синхронізації даних - вони мають різні підходи до доступності даних (DA), яка допомагає відновлювати стан даних у надзвичайних ситуаціях. Це означає:
Ця організація встановлюється шляхом запуску на початку двох видів шард: тих, що мають окреме зовнішнє рішення DA, та тих, що його не мають. У наступних фазах можуть бути об'єднані тільки шарди тієї ж категорії DA. Це означає, що під час його створення кожен обліковий запис повинен бути відображений в певній категорії DA.
Додатково, ця структура може бути розширена, щоб включати інші типи DA.
Однією з наших основних цілей є оптимізація для композиції додатків та запобігання фрагментації ліквідності, тому, зрозуміло, що підхід zkSharding був би неповним без безпечного доступу до стану Ethereum. Це означає =nil; пропонує повну композицію та прозору інтеграцію з Ethereum через модуль Data Provider.
Постачальник даних працює незалежно від зберігання даних розділу, синхронізує свою інформацію зовнішньою базою даних та впроваджує в блок розділу відбиток пальця Ethereum останнього відстеженого стану бази даних (представлений хешем блоку Ethereum). Найбільш недавній стан цієї бази даних отримує підтвердження від модуля підтвердження, який використовує zkBridge з підтвердженням згоди Casper FFG Ethereum.
=nil; та zkSharding є підсумком продуктів, які Фонд =nil; розробив за останні 4 роки. Його мета - бути першим композиційним, масштабованим та універсальним рішенням Ethereum L2 zkRollup. Ми з нетерпінням поділимося більш докладними деталями реалізації протягом наступних кількох місяців. Обов'язково слідкуйте за нашим Twitter, щоб бути в курсі наших досягнень!
Для технічно нахилених ми розробили окремий, всебічний підручникякий досліджує деталі =nil; та zkSharding. Цей підручник є вашим входом у розуміння тонкощів цього підходу, обладнаний усіма технічними деталями та підготовчими заходами, які вам потрібні.
Зануртесь у наш технічний путівник зараз і долучайтеся до розмови проДискордіTelegramДавайте дослідимо нескінченні можливості zkSharding разом!
TL;DR
Сьогодні рішення на другому рівні жертвують масштабованість заради фрагментації стану. Ми представляємо дизайн на другому рівні (L2), =nil;, який дозволяє розширення Ethereum без ущемлення переваг єдиної середовища виконання. Рішення поєднує динамічний механізм шардінгу з перевіреною доступністю до даних Ethereum, захищеною технологіями нульового знання. Основні елементи включають:
Через zkSharding =nil; отримує переваги як від монолітного, так і від модулярного дизайнів, включаючи:
Масштабованість
Уніфіковане середовище виконання
Безпека
Функціональність
На нижньому рівні стан =nil; розбивається на основний шардинг та кілька вторинних шардингів. Основна роль шардингу полягає в синхронізації та консолідації даних з вторинних шардингів. Вона використовує Ethereum як його Шардинг Шардингу як Доступність Даних та як перевірник для доказів переходу стану, подібно до типових операцій zkRollups.
Другорядні шари виконують функцію "робітників", які виконують користувацькі транзакції. Ці шари забезпечують єдину ліквідність та дані за допомогою протоколу міжшарового повідомлення, усуваючи будь-які фрагментації серед них.
Кожен шард контролюється комітетом валідаторів. Існує періодична ротація цих валідаторів по шардах. Крім того, оновлення стану шарду перевіряються на головному шарді за допомогою zkEVM.
Для ілюстрації потоку транзакцій від ініціації користувачем до підтвердження на Ethereum розгляньте наступні кроки:
Цей опис передбачає, що транзакція користувача не активує протокол міжшарового обміну повідомленнями. Однак у цьому випадку потік транзакцій залишається тим же з різницею, що транзакція користувача може спричинити створення нових транзакцій на інших фрагментах.
З усіма обліковими записами, які розподіляються серед фрагментів, це може здатися схожим на проблему фрагментації даних, яку знайдено в підході до спеціалізованих ролапів для конкретних застосувань. Однак ключова відмінність полягає в тому, як здійснюється міжшарова комунікація: вона інтегрована безпосередньо в загальний протокол, а не керується окремими зовнішніми мостами.
Щоб гарантувати безпеку кожного вторинного шарда, його валідаторський комітет зобов'язаний довести перехід свого стану на первинний, щоб переконатися, що в меншій групі валідаторів не сталося шахрайства. Кожен комітет валідаторів шардів має додаткові завдання, окрім обслуговування шардів. Валідатори відповідають за відстеження певних типів подій, а саме повідомлень між шардами, у межах «ближніх шардів». Ближні уламки визначаються на основі відстані Хеммінга в ідентифікаторах шардів.
=nil;s zkEVM - це тип-1 zkEVM, скомпільований з zkLLVM. Щоб зрозуміти відмінності між традиційнішими zkEVM та zkEVM від =nil;, нам потрібно обговорити обмеження, пов'язані з процесом визначення схем, що лежать в основі zkEVM. Схема zkEVM - це критична частина, відповідальна за доказ переходу стану, щоб його вважали вірним, зазвичай визначена з допомогою деякого спеціалізованого zkDSL або просто бібліотеки. Такий спосіб визначення схеми вносить проблеми, пов'язані з:
=nil; zkEVM ефективно вирішує всі ці виклики, бути:
zkEVM, скомпільований через zkLLVM, захищений за конструкцією, використовуючи evmone для забезпечення повної узгодженості з використовуваним виробництвом EVM Ethereum. zkLLVM (C++ або Rust) автоматично компілюється до схеми, що означає, що людська помилка вилучається з процесу визначення схеми.
Крім того, оскільки =nil; zkEVM компілюється через zkLLVM, він природно більш гнучкий (і, отже, майбутнє) ніж вручну визначені схеми, оскільки його легко налаштовувати, а генерація схеми автоматична. Також він більш аудитований, що означає, що його безпека не залежить від включення останніх EIP, доданих до Ethereum.
Оскільки основний шар і вторинні шари відрізняються у відношенні до їх призначених завдань - вторинні шари фокусуються на обробці транзакцій, тоді як основний шар фокусується на синхронізації даних - вони мають різні підходи до доступності даних (DA), яка допомагає відновлювати стан даних у надзвичайних ситуаціях. Це означає:
Ця організація встановлюється шляхом запуску на початку двох видів шард: тих, що мають окреме зовнішнє рішення DA, та тих, що його не мають. У наступних фазах можуть бути об'єднані тільки шарди тієї ж категорії DA. Це означає, що під час його створення кожен обліковий запис повинен бути відображений в певній категорії DA.
Додатково, ця структура може бути розширена, щоб включати інші типи DA.
Однією з наших основних цілей є оптимізація для композиції додатків та запобігання фрагментації ліквідності, тому, зрозуміло, що підхід zkSharding був би неповним без безпечного доступу до стану Ethereum. Це означає =nil; пропонує повну композицію та прозору інтеграцію з Ethereum через модуль Data Provider.
Постачальник даних працює незалежно від зберігання даних розділу, синхронізує свою інформацію зовнішньою базою даних та впроваджує в блок розділу відбиток пальця Ethereum останнього відстеженого стану бази даних (представлений хешем блоку Ethereum). Найбільш недавній стан цієї бази даних отримує підтвердження від модуля підтвердження, який використовує zkBridge з підтвердженням згоди Casper FFG Ethereum.
=nil; та zkSharding є підсумком продуктів, які Фонд =nil; розробив за останні 4 роки. Його мета - бути першим композиційним, масштабованим та універсальним рішенням Ethereum L2 zkRollup. Ми з нетерпінням поділимося більш докладними деталями реалізації протягом наступних кількох місяців. Обов'язково слідкуйте за нашим Twitter, щоб бути в курсі наших досягнень!
Для технічно нахилених ми розробили окремий, всебічний підручникякий досліджує деталі =nil; та zkSharding. Цей підручник є вашим входом у розуміння тонкощів цього підходу, обладнаний усіма технічними деталями та підготовчими заходами, які вам потрібні.
Зануртесь у наш технічний путівник зараз і долучайтеся до розмови проДискордіTelegramДавайте дослідимо нескінченні можливості zkSharding разом!