Дерева Веркла
Дерева Веркла (словосполучення від "векторна фіксація" і "дерева Меркла") — це структура даних, яка може бути використана для модернізації вузлів Ethereum, щоб вони перестали зберігати великі обсяги даних про стан, не втрачаючи при цьому можливості перевірки блоків.
Відсутність стану
Дерева Веркла — це важливий крок на шляху до клієнтів Ethereum без фіксації стану. Клієнти без фіксації стану — це клієнти, яким не потрібно зберігати всю базу даних про стан для перевірки вхідних блоків. Замість того, щоб використовувати власну локальну копію стану Ethereum для перевірки блоків, клієнти без фіксації стану використовують "свідка" даних про стан, які надходять разом із блоком. Свідок — це набір окремих фрагментів даних про стан, необхідних для виконання певного набору транзакцій, і криптографічний доказ того, що свідок дійсно є частиною повних даних. Свідок використовується замість бази даних стану. Щоб це спрацювало, свідки мають бути дуже стислими, щоб їх можна було безпечно передавати через мережу вчасно, щоб валідатори встигли обробити їх протягом 12-секундного інтервалу. Поточна структура даних про стан не підходить, оскільки розмір свідків завеликий. Дерева Веркла вирішують цю проблему, усуваючи одну з головних перешкод для клієнтів без фіксації стану.
Що таке свідок і навіщо він нам потрібен?
Перевірка блоку означає повторне виконання транзакцій, що містяться в блоці, застосування змін до дерева стану Ethereum і обчислення нового кореневого хешу. Перевірений блок — це блок, обчислений кореневий хеш стану якого збігається з хешем, наданим разом із блоком (оскільки це означає, що вузол пропонування дійсно зробив обчислення, про які він заявляє). У сьогоднішніх клієнтів Ethereum оновлення стану вимагає доступу до всього дерева стану, яке є великою структурою даних, що має зберігатися локально. Свідок містить лише ті фрагменти даних про стан, які необхідні для виконання транзакцій у блоці. Валідатор може використовувати лише ці фрагменти для перевірки того, що вузол пропонування виконав транзакції та оновив стан правильно. Однак це означає, що свідок має передаватися між одноранговими вузлами мережі Ethereum досить швидко, щоб кожен вузол міг безпечно отримати й обробити його протягом 12-секундного інтервалу. Якщо свідок завеликий, деяким вузлам може знадобитися занадто багато часу, щоб завантажити його й не відставати від ланцюжка. Це є централізаційною силою, оскільки це означає, що тільки вузли зі швидким підключенням до Інтернету можуть брати участь у перевірці блоків. З деревами Веркла немає потреби зберігати стан на жорсткому диску; усе, що потрібно для перевірки блоку, міститься в самому блоці. На жаль, свідки, які можна створювати з дерев Меркла, завеликі, щоб підтримати клієнтів без фіксації стану.
Чому дерева Веркла дають змогу створювати менші свідки?
Структура дерева Меркла робить розмір свідків дуже великим — завеликим, щоб безпечно передавати інформацію між одноранговими вузлами протягом 12-секундного інтервалу. Тому що свідок — це шлях, що з’єднує дані, які зберігаються в листках, з кореневим хешем. Для перевірки даних необхідно мати не лише всі проміжні хеші, які з’єднують кожен лист із коренем, але і всі споріднені вузли. Кожен вузол у доказі має споріднену лінію, з якою він хешується для створення наступного хешу в дереві. Це великий обсяг даних. Дерева Веркла зменшують розмір свідка через скорочення відстані між листям дерева і його коренем, а також усувають необхідність надавати споріднені вузли для перевірки кореневого хешу. Ще більшої ефективності використання простору можна досягти, використовуючи потужну поліноміальну схему фіксації замість векторної фіксації в стилі хешу. Поліноміальна фіксація дозволяє свідку мати фіксований розмір незалежно від кількості листя, які він доводить.
У схемі поліноміальної фіксації свідки мають керовані розміри, які можна легко передавати в одноранговій мережі. Це дозволяє клієнтам перевіряти зміни стану в кожному блоці з мінімальною кількістю даних.
Яка структура дерева Веркла?
Дерева Веркла — це пари (ключ, значення), де ключами є 32-байтові елементи, що складаються з 31-байтової основи та однобайтового суфікса. Ці ключі організовано у вузли розширення та внутрішні вузли. Вузли розширення представляють один корінь для 256 дочірніх елементів з різними суфіксами. Внутрішні вузли також мають 256 дочірніх вузлів, але це можуть бути й інші вузли розширення. Основна відмінність структур дерева Веркла і дерева Меркла полягає в тому, що дерево Веркла набагато плоскіше, тобто має менше проміжних вузлів, що зв’язують листки з коренем, а отже, менше даних, необхідних для генерації доказу.
Дізнайтеся більше про структуру дерев Веркла (opens in a new tab)
Поточний прогрес
Тестові мережі з деревами Веркла вже працюють, але для підтримки дерев Веркла знадобиться ще значно оновити клієнти. Ви можете допомогти прискорити прогрес, розгорнувши контракти в тестових мережах або запустивши клієнтів.
Подивіться, як Гійом Балет пояснює тестову мережу Condrieu Verkle (opens in a new tab) (зверніть увагу, що тестова мережа Condrieu працювала на основі підтвердження роботи і тепер її замінила тестова мережа Verkle Gen Devnet 6).
Для подальшого читання
- Дерева Веркла для відсутності стану (opens in a new tab)
- Данкрад Файст пояснює дерева Веркла на PEEPanEIP (opens in a new tab)
- Дерева Веркла для всіх (opens in a new tab)
- Анатомія доказу Веркла (opens in a new tab)
- Гійом Балет пояснює дерева Веркла на ETHGlobal (opens in a new tab)
- "Як дерева Веркла роблять Ethereum сильною та витривалою мережею" — Гійом Балет на Devcon 6 (opens in a new tab)
- Пайпер Мерріам про клієнти без стану на 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)
Останні оновлення сторінки: 26 лютого 2026 р.
