Una Merkle proof, nel contesto della blockchain, è una prova crittografica che consente di verificare che un dato specifico (ad esempio una transazione) sia incluso in un insieme più ampio di dati (come un blocco della blockchain) senza dover scaricare o rivelare l’intero set di dati. Questa verifica si basa sulle proprietà dei Merkle tree, strutture dati progettate per organizzare e verificare in modo efficiente e sicuro grandi quantità di dati, rappresentandoli con un’impronta digitale univoca.
Un Merkle tree è un albero binario in cui le foglie rappresentano singoli elementi di dati, come le transazioni. Ogni nodo non foglia è ottenuto calcolando l’hash dei suoi due nodi figli, e il vertice dell’albero, chiamato Merkle root, è un singolo hash che riassume crittograficamente l’intero insieme dei dati sottostanti.
Per dimostrare che un determinato dato (es. una transazione) è incluso nel Merkle tree, è sufficiente un sottoinsieme molto ridotto dell’albero: il percorso dalla transazione (nodo foglia) fino al Merkle root. Questo percorso include l’hash della transazione e gli hash dei nodi “fratelli” (sibling) necessari per ricostruire i livelli successivi fino alla radice.
Chi verifica, conoscendo il Merkle root, può calcolare l’hash combinando la transazione con gli hash intermedi e confrontare il risultato finale con il Merkle root noto. Se coincidono, è possibile affermare con certezza che la transazione è inclusa nel blocco, senza la necessità di consultare l’intero contenuto del blocco stesso.
Questa efficienza è particolarmente utile per risparmiare banda e spazio di archiviazione, soprattutto nei nodi leggeri. Inoltre, la natura crittografica delle Merkle proof garantisce l’integrità dei dati: qualsiasi modifica a una transazione produrrebbe un Merkle root completamente diverso, rendendo immediatamente rilevabili eventuali manomissioni o comportamenti fraudolenti.