Przejdź do głównej zawartości

Strona ostatnio zaktualizowana: 12 sierpnia 2024

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 wykorzystywany jest 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.

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 jest konieczne przechowywanie stanu na swoim dysku twardym; wszystko czego potrzebujesz, aby zweryfikować blok, znajduje się 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.

Jaka jest struktura drzewa Verkle?

Drzewa Verkle to pary (key,value), w których klucze są 32-bajtowymi elementami składającymi się z 31-bajtowego rdzenia oraz pojedynczego bajtu jako sufiksu. Klucze te są dzielą się na węzły rozszerzeń oraz 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.

Poczytaj 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.

Odkryj sieć testową Verkle Gen Devnet 2(opens in a new tab)

Zobacz jak Guillaume Ballet objaśnia sieć testową Verkle Condrieu(opens in a new tab) (zaznaczamy, że sieć testowa Condrieu stanowiła proof-of-work i została zastąpiona przez sieć testową Verkle Gen Devnet 2).

Dalsza lektura

Czy ten artykuł był pomocny?