Drzewa Verkle (zbitka wyrazowa od „Vector commitment” – zobowiązanie wektorowe i „Merkle Trees” – drzewa Merklego) to struktura danych, która może zostać użyta do aktualizacji węzłów Ethereum, aby mogły przestać przechowywać duże ilości danych stanu bez utraty zdolności do walidacji bloków.
Bezstanowość
Drzewa Verkle są kluczowym krokiem na drodze do bezstanowych klientów Ethereum. Klienci bezstanowi to tacy, którzy nie muszą przechowywać całej bazy danych stanu, aby walidować przychodzące bloki. Zamiast używać własnej lokalnej kopii stanu Ethereum do weryfikacji bloków, klienci bezstanowi używają „świadka” (ang. witness) danych stanu, który przybywa wraz z blokiem. Świadek to zbiór pojedynczych fragmentów danych stanu, które są wymagane do wykonania określonego zestawu transakcji, oraz dowód kryptograficzny, że świadek jest w rzeczywistości częścią pełnych danych. Świadek jest używany zamiast bazy danych stanu. Aby to zadziałało, świadkowie muszą być bardzo mali, aby można ich było bezpiecznie rozgłaszać w sieci na tyle szybko, by walidatorzy zdążyli ich przetworzyć w ciągu 12-sekundowego slotu. Obecna struktura danych stanu nie jest odpowiednia, ponieważ świadkowie są zbyt duzi. Drzewa Verkle rozwiązują ten problem, umożliwiając tworzenie małych świadków, co usuwa jedną z głównych barier dla klientów bezstanowych.
Czym jest świadek i dlaczego go potrzebujemy?
Weryfikacja bloku oznacza ponowne wykonanie transakcji zawartych w bloku, zastosowanie zmian w drzewie stanu Ethereum i obliczenie nowego hasha korzenia. Zweryfikowany blok to taki, którego obliczony hash korzenia stanu jest taki sam jak ten dostarczony z blokiem (ponieważ oznacza to, że proponujący blok naprawdę wykonał obliczenia, o których mówi). W dzisiejszych klientach Ethereum aktualizacja stanu wymaga dostępu do całego drzewa stanu, które jest dużą strukturą danych, która musi być przechowywana lokalnie. Świadek zawiera tylko te fragmenty danych stanu, które są wymagane do wykonania transakcji w bloku. Walidator może wtedy użyć tylko tych fragmentów, aby zweryfikować, czy proponujący blok wykonał transakcje bloku i poprawnie zaktualizował stan. Oznacza to jednak, że świadek musi być przesyłany między węzłami peer-to-peer w sieci Ethereum na tyle szybko, aby każdy węzeł mógł go bezpiecznie odebrać i przetworzyć w ciągu 12-sekundowego slotu. Jeśli świadek jest zbyt duży, pobranie go i nadążenie za łańcuchem może zająć niektórym węzłom zbyt dużo czasu. Jest to siła centralizująca, ponieważ oznacza, że tylko węzły z szybkim połączeniem internetowym mogą uczestniczyć w walidacji bloków. Dzięki drzewom Verkle nie ma potrzeby przechowywania stanu na dysku twardym; wszystko, czego potrzebujesz do weryfikacji bloku, znajduje się w samym bloku. Niestety, świadkowie, których można wygenerować z drzew Merklego, są zbyt duzi, aby obsługiwać klientów bezstanowych.
Dlaczego drzewa Verkle umożliwiają tworzenie mniejszych świadków?
Struktura drzewa Merklego sprawia, że rozmiary świadków są bardzo duże – zbyt duże, aby bezpiecznie rozgłaszać je między węzłami peer-to-peer w ciągu 12-sekundowego slotu. Dzieje się tak, ponieważ świadek jest ścieżką łączącą dane, które są przechowywane w liściach, z hashem korzenia. Aby zweryfikować dane, konieczne jest posiadanie nie tylko wszystkich pośrednich hashów, które łączą każdy liść z korzeniem, ale także wszystkich węzłów „rodzeństwa” (sibling nodes). Każdy węzeł w dowodzie ma rodzeństwo, z którym jest hashowany, aby utworzyć kolejny hash w górę drzewa. To bardzo dużo danych. Drzewa Verkle zmniejszają rozmiar świadka poprzez skrócenie odległości między liśćmi drzewa a jego korzeniem, a także eliminują potrzebę dostarczania węzłów rodzeństwa do weryfikacji hasha korzenia. Jeszcze większą oszczędność miejsca uzyska się dzięki zastosowaniu potężnego schematu zobowiązania wielomianowego (polynomial commitment) zamiast zobowiązania wektorowego opartego na hashach. Zobowiązanie wielomianowe pozwala świadkowi mieć stały rozmiar niezależnie od liczby liści, których dowodzi.
W ramach schematu zobowiązania wielomianowego świadkowie mają łatwe do zarządzania rozmiary, które można łatwo przesyłać w sieci peer-to-peer. Pozwala to klientom na weryfikację zmian stanu w każdym bloku przy użyciu minimalnej ilości danych.
Jaka jest struktura drzewa Verkle?
Drzewa Verkle to pary (key,value), w których klucze są 32-bajtowymi elementami złożonymi z 31-bajtowego rdzenia (stem) i jednobajtowego sufiksu. Klucze te są zorganizowane w węzły rozszerzeń (extension nodes) i węzły wewnętrzne (inner nodes). Węzły rozszerzeń reprezentują pojedynczy rdzeń dla 256 dzieci z różnymi sufiksami. Węzły wewnętrzne również mają 256 dzieci, ale mogą to być inne węzły rozszerzeń. Główną różnicą między strukturą drzewa Verkle a drzewa Merklego jest to, że drzewo Verkle jest znacznie bardziej płaskie, co oznacza, że istnieje mniej węzłów pośrednich łączących liść z korzeniem, a zatem potrzeba mniej danych do wygenerowania dowodu.
Przeczytaj więcej o strukturze drzew Verkle (opens in a new tab)
Obecny postęp
Sieci testowe drzew Verkle już działają, ale wciąż istnieją znaczne zaległe aktualizacje klientów, które są wymagane do obsługi drzew Verkle. Możesz pomóc przyspieszyć postęp, wdrażając kontrakty w sieciach testowych lub uruchamiając klientów sieci testowej.
Obejrzyj, jak Guillaume Ballet wyjaśnia sieć testową Condrieu Verkle (opens in a new tab) (zauważ, że sieć testowa Condrieu opierała się na dowodzie pracy (PoW) i została teraz zastąpiona przez sieć testową Verkle Gen Devnet 6).
Dalsza lektura
- Drzewa Verkle dla bezstanowości (opens in a new tab)
- Dankrad Feist wyjaśnia drzewa Verkle w PEEPanEIP (opens in a new tab)
- Drzewa Verkle dla reszty z nas (opens in a new tab)
- Anatomia dowodu Verkle (opens in a new tab)
- Guillaume Ballet wyjaśnia drzewa Verkle na ETHGlobal (opens in a new tab)
- „Jak drzewa Verkle sprawiają, że Ethereum jest lekkie i wydajne” autorstwa Guillaume'a Balleta na Devcon 6 (opens in a new tab)
- Piper Merriam o klientach bezstanowych z ETHDenver 2020 (opens in a new tab)
- Dankrad Feist wyjaśnia drzewa Verkle i bezstanowość w podcaście Zero Knowledge (opens in a new tab)
- Vitalik Buterin o drzewach Verkle (opens in a new tab)
- Dankrad Feist o drzewach Verkle (opens in a new tab)
- Dokumentacja EIP drzewa Verkle (opens in a new tab)
Ostatnia aktualizacja strony: 6 czerwca 2026
