Alberi di Merkle: integrità delle transazioni su larga scala
Costruisca alberi di Merkle e generi in modo efficiente prove di inclusione.
Alberi di Merkle: integrità delle transazioni su larga scala è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.
Problema: verificare le transazioni in modo efficiente
Un blocco Bitcoin contiene circa 2000 transazioni. Per dimostrare che la transazione T è inclusa senza scaricare tutte le 2000 transazioni, serve una prova compatta. Gli alberi di Merkle risolvono il problema: la dimensione della prova è O(log n) hash invece di O(n) transazioni.
Costruzione di un albero di Merkle
Foglie: SHA256d (doppio SHA-256) di ogni transazione. Nodo padre: SHA256d(left_child_hash || right_child_hash). Ripetere fino a ottenere un'unica radice hash. Se il numero di nodi è dispari, duplicare l'ultimo nodo. La radice è la radice di Merkle memorizzata nell'intestazione del blocco (32 byte).
Radice di Merkle in Python
import hashlib def sha256d(x): return hashlib.sha256(hashlib.sha256(x).digest()).digest() def merkle_root(txids): if len(txids)%2: txids.append(txids[-1]) while len(txids)>1: txids=[sha256d(txids[i]+txids[i+1]) for i in range(0,len(txids),2)] return txids[0].hex()
Prova di Merkle (prova di inclusione)
Per dimostrare che la transazione T si trova nella posizione i, fornite gli hash dei nodi fratelli a ogni livello, dalla foglia di T fino alla radice (O(log n) hash). Il verificatore ricalcola la radice partendo da T e dal percorso dei fratelli. Se la radice calcolata corrisponde alla radice di Merkle nell'intestazione del blocco, la presenza di T è dimostrata.
Esempio di dimensione della prova
1024 transazioni → la prova di Merkle consiste di 10 hash = 320 byte. Blocco completo = ~1 MB. I client SPV scaricano soltanto l'intestazione da 80 byte + la prova di Merkle da 320 byte per ogni transazione di interesse: risparmio di banda del 99,97% rispetto al download dell'intero blocco.
Rilevamento delle manomissioni
Se una transazione qualsiasi nell'albero cambia, cambia anche l'hash della relativa foglia e la modifica si propaga fino alla radice di Merkle. La radice alterata non corrisponde più a quella nell'intestazione del blocco, che è protetta dalla PoW. Qualsiasi modifica è rilevabile calcolando la radice a partire dalle transazioni.
Patricia Merkle Trie (Ethereum)
Ethereum estende gli alberi di Merkle con le trie (Patricia Merkle Trie): una trie radix codificata con prefisso esadecimale, in cui ogni nodo è sottoposto a hashing tramite Merkle. Viene usata per: trie dello stato (saldi degli account), trie delle transazioni e trie delle ricevute. Consente di dimostrare in modo efficiente lo stato di un account senza disporre dei dati del nodo completo.
Merkle Mountain Range
Una Merkle Mountain Range (MMR) è una struttura di Merkle append-only per dati simili a log. I nuovi elementi vengono aggiunti in coda; vengono mantenuti i picchi (radici di sottoalberi di dimensione potenza di 2). È utilizzata in Grin/MimbleWimble e ZCash per ottenere prove compatte ed efficienti su un log append-only.
Alberi Verkle
Gli alberi Verkle sostituiscono gli alberi di Merkle nella roadmap di Ethereum (EIP-6800): usano impegni vettoriali (impegni polinomiali KZG) invece degli hash. La dimensione della prova è O(1) invece di O(log n) come negli alberi di Merkle. Ciò consente ai client stateless di verificare lo stato senza memorizzare l'intera trie.
Certificate Transparency come log di Merkle
Certificate Transparency (RFC 6962) usa un log di Merkle append-only: ogni certificato emesso da una CA è una foglia. Le prove di inclusione verificano che un certificato sia stato registrato. Le prove di consistenza verificano che il log sia rimasto append-only (senza eliminazioni o inserimenti). I produttori di browser verificano gli SCT tramite questo log.
Modello degli oggetti Git
Gli alberi Git (istantanee delle directory) sono alberi di Merkle: ogni nodo dell'albero calcola l'hash dei propri blob di file e dei propri sottoalberi. L'hash di un commit identifica in modo univoco lo stato dell'intera codebase. Questo spiega perché git checkout
Verifica rapida
Quanti hash sono necessari in una prova di Merkle per dimostrare l'inclusione in un albero con 1024 foglie?
Riepilogo
Gli alberi di Merkle consentono prove di inclusione di dimensione O(log n). Bitcoin memorizza la radice di Merkle nelle intestazioni dei blocchi; i client SPV usano queste prove. Ethereum estende il concetto alle Patricia Merkle Trie. Gli alberi Verkle sostituiranno gli alberi di Merkle per ottenere prove O(1). Prossimo argomento: mining con Proof of Work e difficoltà.
Domande Frequenti
La lezione «Alberi di Merkle: integrità delle transazioni su larga scala» è gratuita?
Sì — il testo completo di «Alberi di Merkle: integrità delle transazioni su larga scala» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.
Cosa imparerò in «Alberi di Merkle: integrità delle transazioni su larga scala»?
Costruisca alberi di Merkle e generi in modo efficiente prove di inclusione. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cryptology Academy?
Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Alberi di Merkle: integrità delle transazioni su larga scala»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?
Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Catene di hash e collegamento dei blocchi
- Alberi di Merkle: integrità delle transazioni su larga scala
- Proof of Work: mining e adeguamento della difficoltà
- Script di Bitcoin e verifica delle firme UTXO