Sparse Merkle tree

Difficoltà: avanzato

Argomento: tecnologia


DEFINIZIONE

Uno Sparse Merkle Tree, SMT, è come un Merkle Tree standard, eccetto che i dati contenuti sono indicizzati, e ogni datapoint è posizionato alla foglia che corrisponde all'indice di quel datapoint.

Analogamente al Merkle tree standard, possiamo usare una Merkle proof per dimostrare che A fa parte di questo albero, ma in più offre la possibilità di effettuare una efficiente prova di non-inclusione ovvero è possibile dimostrare facilmente se uno o più dati specifici non esistono all'interno del Merkle Tree.

Uno Sparse Merkle Tree è un archivio chiave-valore autenticato, il che significa che la chiave, o la posizione, di una foglia e il contenuto della foglia sono legati l'uno all'altro.

Per ottenere questa proprietà, il contenuto della foglia viene sottoposto a hash e viene creato un merkle tree in cui la posizione della foglia corrisponde alla bitmap dell'hash digest.

Per forza di cose, questo richiede un albero di 256 livelli e 2^256 foglie. La generazione dell'albero è efficiente, nonostante le dimensioni apparentemente elevate, perché la stragrande maggioranza dei rami contiene foglie vuote e può essere rappresentata con hash nulli.

Nei Sparse Merkle Tree, ogni foglia può essere descritta come una guida verso se stessa attraverso una mappa espressa in forma binaria. La mappa è l'albero di Sparse Merkle stesso e la guida è rappresentata da istruzioni che indicano se girare a sinistra o a destra a ogni bivio. La nona foglia di un albero di Sparke Merkle grande 2^4, ad esempio, è espressa in forma binaria come 1001, il che significa che troviamo la foglia appropriata girando a sinistra, poi a destra, a destra e infine a sinistra.

Poiché ogni elemento ha una posizione predeterminata, l'hash della radice dell'albero non dipende dall'ordine di inserimento degli elementi.


aggiornato il 2022-04-09