Verkle stromy (složenina z „vektorový závazek“ (Vector commitment) a „Merkleův strom“ (Merkle tree)) jsou datová struktura, kterou lze použít k aktualizaci uzlů Etherea tak, aby mohly přestat ukládat velké množství stavových dat, aniž by ztratily schopnost validovat bloky.
Bezstavovost
Verkle stromy jsou kritickým krokem na cestě k bezstavovým klientům Etherea. Bezstavoví klienti jsou ti, kteří nemusí ukládat celou stavovou databázi, aby mohli validovat příchozí bloky. Místo použití vlastní lokální kopie stavu Etherea k ověření bloků používají bezstavoví klienti „svědka“ stavových dat, který dorazí s blokem. Svědek je sbírka jednotlivých částí stavových dat, které jsou nutné k provedení určité sady transakcí, a kryptografický důkaz, že svědek je skutečně součástí úplných dat. Svědek se používá místo stavové databáze. Aby to fungovalo, musí být svědci velmi malí, aby mohli být bezpečně vysíláni po síti včas, aby je validátoři stihli zpracovat během 12sekundového slotu. Současná struktura stavových dat není vhodná, protože svědci jsou příliš velcí. Verkle stromy tento problém řeší tím, že umožňují malé svědky, čímž odstraňují jednu z hlavních překážek pro bezstavové klienty.
Co je to svědek a proč je potřebujeme?
Ověření bloku znamená opětovné provedení transakcí obsažených v bloku, aplikování změn na stavovou trii Etherea a výpočet nového kořenového hashe. Ověřený blok je takový, jehož vypočítaný kořenový hash stavu je stejný jako ten, který byl poskytnut s blokem (protože to znamená, že navrhovatel bloku skutečně provedl výpočet, o kterém tvrdí, že jej provedl). V dnešních klientech Etherea vyžaduje aktualizace stavu přístup k celé stavové trii, což je velká datová struktura, která musí být uložena lokálně. Svědek obsahuje pouze fragmenty stavových dat, které jsou nutné k provedení transakcí v bloku. Validátor pak může použít pouze tyto fragmenty k ověření, že navrhovatel bloku provedl transakce bloku a správně aktualizoval stav. To však znamená, že svědek musí být přenášen mezi peery v síti Ethereum dostatečně rychle, aby jej každý uzel bezpečně přijal a zpracoval během 12sekundového slotu. Pokud je svědek příliš velký, může některým uzlům trvat příliš dlouho, než si jej stáhnou a udrží krok s řetězcem. To je centralizační síla, protože to znamená, že se na validaci bloků mohou podílet pouze uzly s rychlým připojením k internetu. S Verkle stromy není nutné mít stav uložený na pevném disku; vše, co potřebujete k ověření bloku, je obsaženo v samotném bloku. Bohužel, svědci, které lze vytvořit z Merkleových trií, jsou příliš velcí na to, aby podporovali bezstavové klienty.
Proč Verkle stromy umožňují menší svědky?
Struktura Merkleovy trie způsobuje, že velikosti svědků jsou velmi velké – příliš velké na to, aby mohly být bezpečně vysílány mezi peery během 12sekundového slotu. Je to proto, že svědek je cesta spojující data, která jsou uložena v listech, s kořenovým hashem. K ověření dat je nutné mít nejen všechny mezilehlé hashe, které spojují každý list s kořenem, ale také všechny „sourozenecké“ uzly. Každý uzel v důkazu má sourozence, se kterým je hashován, aby se vytvořil další hash výše v trii. To je spousta dat. Verkle stromy snižují velikost svědka zkrácením vzdálenosti mezi listy stromu a jeho kořenem a také eliminací potřeby poskytovat sourozenecké uzly pro ověření kořenového hashe. Ještě větší prostorové efektivity bude dosaženo použitím výkonného schématu polynomiálního závazku (polynomial commitment) namísto vektorového závazku založeného na hashi. Polynomiální závazek umožňuje, aby měl svědek pevnou velikost bez ohledu na počet listů, které dokazuje.
V rámci schématu polynomiálního závazku mají svědci zvládnutelné velikosti, které lze snadno přenášet v peer-to-peer síti. To umožňuje klientům ověřovat změny stavu v každém bloku s minimálním množstvím dat.
Jaká je struktura Verkle stromu?
Verkle stromy jsou páry (key,value), kde klíče jsou 32bajtové prvky složené z 31bajtového kmene (stem) a jednobajtové přípony (suffix). Tyto klíče jsou organizovány do rozšiřujících (extension) uzlů a vnitřních (inner) uzlů. Rozšiřující uzly představují jeden kmen pro 256 potomků s různými příponami. Vnitřní uzly mají také 256 potomků, ale mohou to být další rozšiřující uzly. Hlavní rozdíl mezi strukturou Verkle stromu a Merkleova stromu spočívá v tom, že Verkle strom je mnohem plošší, což znamená, že existuje méně mezilehlých uzlů spojujících list s kořenem, a proto je ke generování důkazu potřeba méně dat.
Přečtěte si více o struktuře Verkle stromů (opens in a new tab)
Současný pokrok
Testnety Verkle stromů jsou již v provozu, ale stále existují podstatné nevyřízené aktualizace klientů, které jsou nutné pro podporu Verkle stromů. Pokrok můžete pomoci urychlit nasazením kontraktů na testnety nebo spuštěním testnetových klientů.
Podívejte se, jak Guillaume Ballet vysvětluje testnet Condrieu Verkle (opens in a new tab) (všimněte si, že testnet Condrieu byl důkaz prací (PoW) a nyní byl nahrazen testnetem Verkle Gen Devnet 6).
Další čtení
- Verkle stromy pro bezstavovost (opens in a new tab)
- Dankrad Feist vysvětluje Verkle stromy na PEEPanEIP (opens in a new tab)
- Verkle stromy pro nás ostatní (opens in a new tab)
- Anatomie Verkle důkazu (opens in a new tab)
- Guillaume Ballet vysvětluje Verkle stromy na ETHGlobal (opens in a new tab)
- „Jak Verkle stromy dělají Ethereum štíhlým a efektivním“ od Guillauma Balleta na Devcon 6 (opens in a new tab)
- Piper Merriam o bezstavových klientech z ETHDenver 2020 (opens in a new tab)
- Dankrad Feist vysvětluje Verkle stromy a bezstavovost v podcastu Zero Knowledge (opens in a new tab)
- Vitalik Buterin o Verkle stromech (opens in a new tab)
- Dankrad Feist o Verkle stromech (opens in a new tab)
- Dokumentace EIP k Verkle stromům (opens in a new tab)
Poslední aktualizace stránky: 6. června 2026
