Vai al contenuto principale

Ultimo aggiornamento pagina: 12 agosto 2024

Alberi di Verkle

Gli alberi di Verkle (un neologismo tra "Impegno Vettoriale" e "Alberi di Merkle") sono strutture di dati utilizzabili per aggiornare i nodi di Ethereum, così che possano smettere di archiviare grandi quantità di dati di stato, senza perdere l'abilità di convalidare i blocchi.

Assenza di stato

Gli alberi di Verkle sono un passaggio fondamentale sul percorso per i client di Ethereum privi di stato. I client privi di stato sono quelli che non devono memorizzare l'intero database di stato per poter convalidare i blocchi in entrata. Invece di utilizzare la propria copia dello stato di Ethereum per verificare i blocchi, utilizzano un "testimone" ai dati di stato che arriva con il blocco. Un testimone è una raccolta di pezzi individuali dei dati di stato, necessaria per eseguire una serie particolare di transazioni, nonché una prova crittografica che il testimone sia davvero parte dei dati completi. Il testimone è utilizzato invece del database di stato. Perché funzioni, i testimoni devono essere molto piccoli, così che siano trasmissibili in sicurezza per la rete, in tempo per essere convalidati dai validatori entro uno spazio di 12 secondi. La struttura attuale dei dati di stato non è adatta, poiché i testimoni sono troppo grandi. Gli alberi di Verkle risolvono questo problema consentendo piccoli testimoni e rimuovendo una delle principali barriere ai client privi di stato.

Cos'è un testimone e perché è necessario?

Verificare un blocco significa rieseguire le transazioni contenute nel blocco, applicando le modifiche all'albero di stato di Ethereum e calcolando il nuovo hash della radice. Un blocco verificato è uno il cui hash della radice di stato calcolato equivale a quello fornito con il blocco (poiché ciò preclude che il propositore del blocco abbia realmente effettuato il calcolo che dice di aver effettuato). Nei client odierni di Ethereum, aggiornare lo stato richiede l'accesso all'intero albero di stato, una grande struttura di dati che dev'essere archiviata localmente. Un testimone contiene soltanto i frammenti dei dati di stato necessari per eseguire le transazioni nel blocco. Un validatore può quindi utilizzare soltanto quei frammenti per verificare che il propositore di blocchi abbia eseguito le transazioni del blocco e aggiornato correttamente lo stato. Tuttavia, ciò significa che il testimone dev'essere trasferito tra i pari sulla rete di Ethereum abbastanza rapidamente da essere ricevuto ed elaborato da ogni nodo, in sicurezza, entro uno spazio di 12 secondi. Se il testimone è troppo grande, per alcuni nodi potrebbe volerci troppo per scaricarlo e tenere il passo con la catena. Questa è una forza centralizzante, poiché significa che soltanto i nodi con connessioni a Internet veloci, possono partecipare alla convalida dei blocchi. Con gli alberi di Verkle non è necessario memorizzare lo stato sul proprio disco rigido; tutto ciò che serve per verificare un blocco, si trova nel blocco stesso. Purtroppo, i testimoni producibili dagli alberi di Merkle sono troppo grandi per supportare i client privi di stato.

Perché gli alberi di Verkle consentono testimoni più piccoli?

La struttura di un Albero di Merkle rende le dimensioni dei testimoni molto grandi, troppo per trasmetterli in sicurezza tra pari entro uno spazio di 12 secondi. Questo perché il testimone è un percorso che connette i dati, tenuti tra le foglie, all'hash della radice. Per verificare i dati è necessario non soltanto avere tutti gli hash intermedi che connettono ogni foglia alla radice, ma anche tutti i nodi "gemelli". Ogni nodo nella prova ha un gemello, con cui è eseguito l'hash per creare quello successivo. Questi sono molti dati. Gli alberi di Verkle riducono le dimensioni dei testimoni accorciando la distanza tra le foglie dell'albero e la sua radice, nonché eliminando la necessità di provare i nodi gemelli per verificare l'hash della radice. Una maggiore efficienza di spazio sarà ottenuta utilizzando un potente schema di impegno polinomiale, invece dell'impegno vettoriale con hash. L'impegno polinomiale consente al testimone di avere una dimensione fissa indipendentemente dal numero di foglie che prova.

Sotto lo schema di impegno polinomiale, i testimoni hanno dimensioni gestibili, facilmente trasferibili sulla rete tra pari. Questo consente ai client di verificare i cambiamenti di stato in ogni blocco con una quantità minima di dati.

Qual è la struttura di un albero di Verkle?

Gli alberi di Verkle sono coppie (key,value) in cui le chiavi sono elementi da 32 byte composte da uno stelo di 31 byte e un suffisso di un singolo byte. Queste chiavi sono organizzate in nodi estensione e nodi interni. I nodi d'estensione rappresentano un singolo stelo per 256 figli con suffissi differenti. Anche i nodi interni hanno 256 figli, ma possono essere altri nodi d'estensione. La differenza principale tra la struttura dell'albero di Verkle e dell'albero di Merkle è che il primo è molto più piatto, a significare che ci sono meno nodi intermedi che collegano una foglia alla radice e dunque sono richiesti meno dati per generare una prova.

Leggi di più sulla struttura degli alberi di Verkle(opens in a new tab)

Stato attuale

Le reti di prova dell'albero di Verkle sono già in esecuzione, ma servono ancora aggiornamenti sostanziali e straordinari, necessari a supportarli. Puoi aiutare ad accelerare il progresso distribuendo contratti alle reti di prova od operando dei client delle reti di prova.

Esplora la rete di prova di Verkle Gen Devnet 2(opens in a new tab)

Guarda Guillaume Ballet spiegare la rete di prova di Verkle Condrieu(opens in a new tab) (nota che la rete di prova Condrieu era in proof-of-work e ora è stata sostituita dalla rete di prova di Verkle Gen Devnet 2).

Letture consigliate

Questo articolo è stato utile?