Дерева Веркла (словозлиття від «Vector commitment» (векторна фіксація) та «Merkle Trees» (дерева Меркла)) — це структура даних, яку можна використовувати для оновлення вузлів Етеріуму, щоб вони могли припинити зберігати великі обсяги даних стану без втрати здатності перевіряти блоки.
Безстановість
Дерева Веркла є критичним кроком на шляху до безстанових клієнтів Етеріуму. Безстанові клієнти — це ті, яким не потрібно зберігати всю базу даних стану для перевірки вхідних блоків. Замість того, щоб використовувати власну локальну копію стану Етеріуму для перевірки блоків, безстанові клієнти використовують «свідка» даних стану, який надходить разом із блоком. Свідок — це набір окремих частин даних стану, необхідних для виконання певного набору транзакцій, і криптографічний доказ того, що свідок дійсно є частиною повних даних. Свідок використовується замість бази даних стану. Щоб це працювало, свідки мають бути дуже малими, щоб їх можна було безпечно транслювати через мережу вчасно для того, щоб валідатори могли обробити їх протягом 12-секундного слота. Поточна структура даних стану не підходить, оскільки свідки занадто великі. Дерева Веркла розв'язують цю проблему, уможливлюючи використання малих свідків, усуваючи одну з головних перешкод для безстанових клієнтів.
Що таке свідок і навіщо він потрібен?
Перевірка блоку означає повторне виконання транзакцій, що містяться в блоці, застосування змін до дерева стану Етеріуму та обчислення нового кореневого хешу. Перевірений блок — це той, чий обчислений кореневий хеш стану збігається з тим, що надається разом із блоком (оскільки це означає, що пропонувач блоку дійсно виконав обчислення, про які він заявляє). У сучасних клієнтах Етеріуму оновлення стану вимагає доступу до всього дерева стану, яке є великою структурою даних, що має зберігатися локально. Свідок містить лише ті фрагменти даних стану, які необхідні для виконання транзакцій у блоці. Тоді валідатор може використовувати лише ці фрагменти, щоб перевірити, чи пропонувач блоку виконав транзакції блоку та правильно оновив стан. Однак це означає, що свідок має передаватися між одноранговими вузлами в мережі Етеріум достатньо швидко, щоб кожен вузол міг безпечно отримати та обробити його протягом 12-секундного слота. Якщо свідок занадто великий, деяким вузлам може знадобитися занадто багато часу, щоб завантажити його та не відставати від ланцюга. Це є силою централізації, оскільки означає, що лише вузли зі швидким інтернет-з'єднанням можуть брати участь у перевірці блоків. З деревами Веркла немає потреби зберігати стан на жорсткому диску; усе, що вам потрібно для перевірки блоку, міститься в самому блоці. На жаль, свідки, які можна створити з дерев Меркла, занадто великі для підтримки безстанових клієнтів.
Чому дерева Веркла уможливлюють менших свідків?
Структура дерева Меркла робить розміри свідків дуже великими — занадто великими для безпечної трансляції між одноранговими вузлами протягом 12-секундного слота. Це пов'язано з тим, що свідок — це шлях, який з'єднує дані, що містяться в листі, з кореневим хешем. Для перевірки даних необхідно мати не лише всі проміжні хеші, які з'єднують кожен лист із коренем, але й усі «сестринські» вузли. Кожен вузол у доказі має сестринський вузол, з яким він хешується для створення наступного хешу вгору по дереву. Це дуже багато даних. Дерева Веркла зменшують розмір свідка шляхом скорочення відстані між листям дерева та його коренем, а також усунення необхідності надавати сестринські вузли для перевірки кореневого хешу. Ще більшої ефективності використання простору буде досягнуто завдяки використанню потужної схеми поліноміальної фіксації замість векторної фіксації на основі хешів. Поліноміальна фіксація дозволяє свідку мати фіксований розмір незалежно від кількості листя, яке він доводить.
За схемою поліноміальної фіксації свідки мають керовані розміри, які можна легко передавати в одноранговій мережі. Це дозволяє клієнтам перевіряти зміни стану в кожному блоці з мінімальним обсягом даних.
Яка структура дерева Веркла?
Дерева Веркла — це пари (key,value), де ключі є 32-байтовими елементами, що складаються з 31-байтової основи та однобайтового суфікса. Ці ключі організовані у вузли розширення та внутрішні вузли. Вузли розширення представляють одну основу для 256 нащадків з різними суфіксами. Внутрішні вузли також мають 256 нащадків, але вони можуть бути іншими вузлами розширення. Головна відмінність між структурою дерева Веркла та дерева Меркла полягає в тому, що дерево Веркла набагато плоскіше, тобто існує менше проміжних вузлів, що зв'язують лист із коренем, і, отже, потрібно менше даних для створення доказу.
Дізнайтеся більше про структуру дерев Веркла (opens in a new tab)
Поточний прогрес
Тестові мережі дерев Веркла вже запущені та працюють, але все ще існують значні невирішені оновлення клієнтів, які необхідні для підтримки дерев Веркла. Ви можете допомогти прискорити прогрес, розгортаючи контракти в тестових мережах або запускаючи клієнти тестової мережі.
Подивіться, як Гійом Балле пояснює тестову мережу Condrieu Verkle (opens in a new tab) (зверніть увагу, що тестова мережа Condrieu працювала на доказі виконання роботи (PoW) і тепер замінена тестовою мережею Verkle Gen Devnet 6).
Додаткові матеріали
- Дерева Веркла для безстановісті (opens in a new tab)
- Данкрад Файст (Dankrad Feist) пояснює дерева Веркла на PEEPanEIP (opens in a new tab)
- Дерева Веркла для всіх нас (opens in a new tab)
- Анатомія доказу Веркла (opens in a new tab)
- Гійом Балле пояснює дерева Веркла на ETHGlobal (opens in a new tab)
- «Як дерева Веркла роблять Етеріум струнким і потужним» від Гійома Балле на Devcon 6 (opens in a new tab)
- Пайпер Мерріам (Piper Merriam) про безстанові клієнти з ETHDenver 2020 (opens in a new tab)
- Данкрад Файст пояснює дерева Веркла та безстановість у подкасті Zero Knowledge (opens in a new tab)
- Віталік Бутерін про дерева Веркла (opens in a new tab)
- Данкрад Файст про дерева Веркла (opens in a new tab)
- Документація EIP щодо дерев Веркла (opens in a new tab)
Останнє оновлення сторінки: 6 червня 2026 р.
