Przejdź do głównej treści

Ostatnia aktualizacja strony: 26 lutego 2026

Drzewa Verkle

Drzewa Verkle (połączenie „Vector commitment” oraz „Merkle Trees”) to struktura danych, którą można wykorzystać do ulepszenia węzłów Ethereum, aby mogły przestać przechowywać duże ilości danych o stanie bez utraty możliwości walidacji bloków.

Bezstanowość

Drzewa Verkle są kluczowym krokiem w drodze do bezstanowych klientów Ethereum. Bezstanowe klienty to takie, które nie muszą przechowywać całej bazy danych o stanie w celu walidacji nadchodzących bloków. Zamiast wykorzystywać własną lokalną kopię stanu Ethereum do weryfikacji bloków, bezstanowe klienty wykorzystują „świadka” do danych o stanie, który przychodzi z blokiem. Świadek jest zbiorem indywidualnych części danych o stanie, które są wymagane do wykonania określonego zestawu transakcji, oraz kryptograficznym dowodem na to, że świadek naprawdę jest częścią wszystkich danych. Świadek jest używany zamiast bazy danych o stanie. Aby to działało, świadkowie muszą być bardzo mali, tak aby można ich było bezpiecznie rozgłaszać w sieci w czasie umożliwiającym walidatorom przetworzenie ich w ciągu 12-sekundowego slotu. Obecna struktura danych o stanie nie jest odpowiednia, ponieważ świadkowie są zbyt duzi. Drzewa Verkle rozwiązują ten problem, zezwalając na małych świadków, co usuwa jedną z głównych przeszkód dla bezstanowych klientów.

Klienty Ethereum obecnie wykorzystują strukturę danych znaną jako drzewo trie Patricia Merkle do przechowywania swoich danych o stanie. Informacje o poszczególnych kontach są przechowywanie jako liście w drzewie trie, a pary liści są wielokrotnie hashowane, dopóki nie pozostanie tylko pojedynczy hash. Ten finałowy hash znany jest jako „korzeń”. Aby zweryfikować bloki, klienty Ethereum wykonują wszystkie transakcje w bloku i aktualizują swoje lokalne drzewo trie stanu. Blok uznawany jest za prawidłowy, jeśli korzeń lokalnego drzewa jest identyczny jak ten dostarczany przez proponenta bloku, ponieważ jakakolwiek różnica w obliczeniach wykonanych przez proponenta bloku oraz węzeł walidacyjny sprawiłaby, że hash korzenia byłby całkowicie inny. Problem polega tu na tym, że weryfikowanie blockchainu wymaga od każdego klienta przechowywania całęgo drzewa trie stanu dla najnowszego bloku oraz kilkunastu historycznych bloków (domyślnie w Geth przechowywane są dane o stanie dla 128 bloków znajdujących się za najnowszym blokiem). Wymaga to od klientów dostępu do dużej ilości miejsca na dysku, co jest barierą do uruchomiania pełnego węzła na tanim sprzęcie niemającym dużo mocy. Rozwiązaniem tego jest zaktualizowanie drzewa trie stanu do bardziej wydajnej struktury (drzewa Verkle), którą można podsumować przy użyciu małego „świadka” danych, którego można udostępnić zamiast pełnych danych o stanie. Przekształcenie danych o stanie w drzewo Verkle jest krokiem do przejścia do klientów bezstanowych.

Czym jest świadek i dlaczego ich potrzebujemy?

Weryfikowanie bloku oznacza ponowne wykonanie transakcji zawartych w bloku, z zastosowaniem zmian do drzewa trie stanu Ethereum i obliczeniem 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 proponent bloku naprawdę wykonał obliczenia, o których mówi, że je wykonał). W obecnych klientach Ethereum aktualizowanie stanu wymaga dostępu do całego drzewa trie stanu, które jest dużą strukturą danych i musi być przechowywane lokalnie. Świadek zawiera tylko fragmenty danych o stanie, które są wymagane do wykonania transakcji w bloku. Walidator może następnie wykorzystać tylko te fragmenty do zweryfikowania, że proponent bloku wykonał transakcje w bloku i poprawnie zaktualizował stan. Oznacza to jednak, że świadek musi być rozsyłany między użytkownikami w sieci Ethereum wystarczająco szybko, aby każdy węzeł mógł go bezpiecznie otrzymać i przetworzyć w ciągu 12 sekund. Jeśli świadek jest za duży, pobranie go i nadążenie za łańcuchem może zająć niektórym węzłom zbyt długo. Jest to siła centralizująca, ponieważ 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 zweryfikowania bloku, jest zawarte w samym bloku. Niestety świadkowie, którzy mogą zostać stworzeni przez drzewa trie Merkle, są zbyt duzi, aby obsługiwać bezstanowe klienty.

Dlaczego drzewa Verkle pozwalają na mniejszych świadków?

Struktura drzewa trie Merkle sprawia, że rozmiary świadków są bardzo duże — zbyt duże, aby bezpiecznie rozsyłać je między użytkownikami w ciągu 12-sekundowego slotu. Dzieje się tak, ponieważ świadkowie są ścieżką łączącą dane, które są przechowywane w liściach do hasha korzenia. Aby zweryfikować dane, wymagane jest posiadanie nie tylko wszystkich pośrednich hashy, które łączą każdy liść z korzeniem, ale również wszystkich „sąsiednich” węzłów. Każdy węzeł w dowodzie ma swojego sąsiada, z którym jest hashowany, aby utworzyć kolejny hash w górę drzewa trie. To bardzo dużo danych. Drzewa Verkle zmniejszają rozmiar świadka poprzez skrócenie dystansu między liśćmi drzewa a jego korzeniem oraz wyeliminowanie konieczności dostarczania sąsiednich węzłów do weryfikacji hasha korzenia. Jeszcze większą wydajność przestrzenną można uzyskać dzięki zastosowaniu potężnego schematu zobowiązania wielomianowego zamiast zobowiązania wektorowego w stylu hashowym. Zobowiązanie wielomianowe pozwala świadkowi na zachowanie stałego rozmiaru bez względu na liczbę liści, które udowadnia.

W schemacie zobowiązania wielomianowego świadkowie mają rozsądne rozmiary, które można z łatwością przesłać w sieci peer-to-peer. Pozwala to klientom weryfikować zmiany stanu w każdym bloku przy użyciu minimalnej ilości danych.

Rozmiar świadka różni się w zależności od liczby liści, które zawiera. Zakładając, że świadek obejmuje 1000 liści, świadek w drzewie trie Merkle zajmowałby około 3,5 MB (przy założeniu 7 poziomów w drzewie trie). Świadek takich samych danych w drzewie Verkle (przy założeniu 4 poziomów w drzewie) zajmowałby około 150 kB — około 23 razy mniej. To zmniejszenie rozmiaru świadka zezwoli na dopuszczalnie małe rozmiary świadków bezstanowych klientów. Świadkowie wielomianowi zajmują 0,128-1 kB w zależności od tego, które konkretne zobowiązanie wielomianowe zostało wykorzystane.

Jaka jest struktura drzewa Verkle?

Drzewa Verkle to pary (key,value), gdzie klucze są 32-bajtowymi elementami złożonymi z 31-bajtowego rdzenia i jednobajtowego sufiksu. Klucze te są zorganizowane w węzły rozszerzeń i węzły wewnętrzne. Węzły rozszerzeń reprezentują pojedynczy rdzeń dla 256 potomków z różnymi sufiksami. Węzły wewnętrzne również mają 256 potomków, ale mogą nimi być inne węzły rozszerzeń. Główna różnica między strukturą drzewa Verkle a drzewa Merkle jest taka, że drzewo Verkle jest znacznie bardziej płaskie, co oznacza, że istnieje mniej węzłów pośrednich łączących liście z korzeniem, co sprawia, że potrzebna jest mniejsza ilość danych do wygenerowania dowodu.

Przeczytaj więcej o strukturze drzew Verkle (opens in a new tab)

Aktualny postęp

Sieci testowe drzew Verkle są już dostępne, ale wciąż istnieją spore zaległości co do aktualizacji klientów, które są wymagane do obsługi drzew Verkle. Możesz jeszcze bardziej przyspieszyć postęp wdrażając kontrakty do sieci testowych lub uruchamiając klientów sieci testowych.

Zobacz, jak Guillaume Ballet wyjaśnia sieć testową Condrieu Verkle (opens in a new tab) (pamiętaj, że sieć testowa Condrieu była oparta na mechanizmie proof-of-work i została zastąpiona siecią testową Verkle Gen Devnet 6).

Dalsza lektura

Ostatnia aktualizacja strony: 26 lutego 2026

Czy ten artykuł był pomocny?