Перейти до основного вмісту

Сторінку востаннє оновлено: 26 лютого 2026 р.

Дерева Веркла

Дерева Веркла (словосполучення від "векторна фіксація" і "дерева Меркла") — це структура даних, яка може бути використана для модернізації вузлів Ethereum, щоб вони перестали зберігати великі обсяги даних про стан, не втрачаючи при цьому можливості перевірки блоків.

Відсутність стану

Дерева Веркла — це важливий крок на шляху до клієнтів Ethereum без фіксації стану. Клієнти без фіксації стану — це клієнти, яким не потрібно зберігати всю базу даних про стан для перевірки вхідних блоків. Замість того, щоб використовувати власну локальну копію стану Ethereum для перевірки блоків, клієнти без фіксації стану використовують "свідка" даних про стан, які надходять разом із блоком. Свідок — це набір окремих фрагментів даних про стан, необхідних для виконання певного набору транзакцій, і криптографічний доказ того, що свідок дійсно є частиною повних даних. Свідок використовується замість бази даних стану. Щоб це спрацювало, свідки мають бути дуже стислими, щоб їх можна було безпечно передавати через мережу вчасно, щоб валідатори встигли обробити їх протягом 12-секундного інтервалу. Поточна структура даних про стан не підходить, оскільки розмір свідків завеликий. Дерева Веркла вирішують цю проблему, усуваючи одну з головних перешкод для клієнтів без фіксації стану.

Зараз клієнти Ethereum використовують структуру даних, відому як Patricia Merkle Trie, для зберігання даних про свій стан. Інформація про окремі облікові записи зберігається у вигляді листочків на дереві, і пари листочків хешуються багаторазово, поки не залишиться лише один хеш. Цей кінцевий хеш відомий як "корінь". Для перевірки блоків клієнти Ethereum виконують всі транзакції в блоці й оновлюють своє локальне дерево стану. Блок вважається дійсним, якщо корінь локального дерева збігається з коренем, наданим автором блоку, оскільки будь-які відмінності в обчисленнях, виконаних вузлом пропонування і вузлом-валідатором, призведуть до того, що кореневий хеш буде зовсім іншим. Проблема полягає в тому, що перевірка блокчейну вимагає, щоб кожен клієнт зберігав все дерево стану для головного блоку й кількох історичних блоків (за замовчуванням у Geth зберігаються дані про стан 128 блоків за головним блоком). Це вимагає від клієнтів доступу до великого обсягу дискового простору, що є перешкодою для запуску повноцінних вузлів на дешевому, малопотужному обладнанні. Вирішенням цієї проблеми є оновлення дерева стану до більш ефективної структури (дерева Веркла), яка може бути узагальнена за допомогою стислого "свідка" даних, до якого можна надавати спільний доступ, замість повних даних про стан. Переформатування даних про стан у дерево Веркла є сходинкою для переходу до клієнтів без фіксації стану.

Що таке свідок і навіщо він нам потрібен?

Перевірка блоку означає повторне виконання транзакцій, що містяться в блоці, застосування змін до дерева стану Ethereum і обчислення нового кореневого хешу. Перевірений блок — це блок, обчислений кореневий хеш стану якого збігається з хешем, наданим разом із блоком (оскільки це означає, що вузол пропонування дійсно зробив обчислення, про які він заявляє). У сьогоднішніх клієнтів Ethereum оновлення стану вимагає доступу до всього дерева стану, яке є великою структурою даних, що має зберігатися локально. Свідок містить лише ті фрагменти даних про стан, які необхідні для виконання транзакцій у блоці. Валідатор може використовувати лише ці фрагменти для перевірки того, що вузол пропонування виконав транзакції та оновив стан правильно. Однак це означає, що свідок має передаватися між одноранговими вузлами мережі Ethereum досить швидко, щоб кожен вузол міг безпечно отримати й обробити його протягом 12-секундного інтервалу. Якщо свідок завеликий, деяким вузлам може знадобитися занадто багато часу, щоб завантажити його й не відставати від ланцюжка. Це є централізаційною силою, оскільки це означає, що тільки вузли зі швидким підключенням до Інтернету можуть брати участь у перевірці блоків. З деревами Веркла немає потреби зберігати стан на жорсткому диску; усе, що потрібно для перевірки блоку, міститься в самому блоці. На жаль, свідки, які можна створювати з дерев Меркла, завеликі, щоб підтримати клієнтів без фіксації стану.

Чому дерева Веркла дають змогу створювати менші свідки?

Структура дерева Меркла робить розмір свідків дуже великим — завеликим, щоб безпечно передавати інформацію між одноранговими вузлами протягом 12-секундного інтервалу. Тому що свідок — це шлях, що з’єднує дані, які зберігаються в листках, з кореневим хешем. Для перевірки даних необхідно мати не лише всі проміжні хеші, які з’єднують кожен лист із коренем, але і всі споріднені вузли. Кожен вузол у доказі має споріднену лінію, з якою він хешується для створення наступного хешу в дереві. Це великий обсяг даних. Дерева Веркла зменшують розмір свідка через скорочення відстані між листям дерева і його коренем, а також усувають необхідність надавати споріднені вузли для перевірки кореневого хешу. Ще більшої ефективності використання простору можна досягти, використовуючи потужну поліноміальну схему фіксації замість векторної фіксації в стилі хешу. Поліноміальна фіксація дозволяє свідку мати фіксований розмір незалежно від кількості листя, які він доводить.

У схемі поліноміальної фіксації свідки мають керовані розміри, які можна легко передавати в одноранговій мережі. Це дозволяє клієнтам перевіряти зміни стану в кожному блоці з мінімальною кількістю даних.

Розмір свідка варіюється залежно від кількості листя, яку він містить. Якщо припустити, що свідок покриває 1000 листків, то розмір свідка для дерева Меркла становитиме близько 3,5 МБ (припускаючи, що в дереві 7 рівнів). Свідок для тих самих даних у дереві Веркла (припускаючи 4 рівні дерева) буде близько 150 кБ — приблизно у 23 рази менше. Завдяки цьому свідки клієнтів без фіксації стану матимуть прийнятний розмір. Поліноміальні свідки становлять 0,128 -1 кБ залежно від того, яке конкретне поліноміальне зобов'язання використовується.

Яка структура дерева Веркла?

Дерева Веркла — це пари (ключ, значення), де ключами є 32-байтові елементи, що складаються з 31-байтової основи та однобайтового суфікса. Ці ключі організовано у вузли розширення та внутрішні вузли. Вузли розширення представляють один корінь для 256 дочірніх елементів з різними суфіксами. Внутрішні вузли також мають 256 дочірніх вузлів, але це можуть бути й інші вузли розширення. Основна відмінність структур дерева Веркла і дерева Меркла полягає в тому, що дерево Веркла набагато плоскіше, тобто має менше проміжних вузлів, що зв’язують листки з коренем, а отже, менше даних, необхідних для генерації доказу.

Дізнайтеся більше про структуру дерев Веркла (opens in a new tab)

Поточний прогрес

Тестові мережі з деревами Веркла вже працюють, але для підтримки дерев Веркла знадобиться ще значно оновити клієнти. Ви можете допомогти прискорити прогрес, розгорнувши контракти в тестових мережах або запустивши клієнтів.

Подивіться, як Гійом Балет пояснює тестову мережу Condrieu Verkle (opens in a new tab) (зверніть увагу, що тестова мережа Condrieu працювала на основі підтвердження роботи і тепер її замінила тестова мережа Verkle Gen Devnet 6).

Для подальшого читання

Останнє оновлення сторінки: 26 лютого 2026 р.

Ця стаття була корисною?