Che cos'è la Blockchain e come funziona?
- Pasquale Centrone
- 14 gen
- Tempo di lettura: 6 min
Aggiornamento: 15 gen
La blockchain è la tecnologia alla base di Bitcoin e di molte altre criptovalute. Per comprenderla, immagina un registro digitale che registra tutte le transazioni in modo trasparente, sicuro e immutabile.
Principali Caratteristiche della Blockchain
Decentralizzazione
La blockchain non è controllata da un'unica entità, ma è distribuita tra i nodi della rete. Ogni nodo possiede una copia completa del registro, garantendo resilienza e resistenza a guasti o manipolazioni.
Esempio: Immagina un registro contabile tradizionale custodito da una banca. Se la banca subisce un attacco o fallisce, i dati potrebbero andare persi o essere compromessi. Nella blockchain, invece, il registro è duplicato e distribuito tra migliaia di computer (nodi) in tutto il mondo. Se un nodo si guasta, gli altri mantengono una copia intatta del registro, garantendo la continuità e la resilienza del sistema.
Immutabilità
Una volta che un blocco è stato aggiunto alla blockchain, i suoi dati non possono essere modificati senza il consenso della rete. Questo è garantito dall'uso di funzioni hash crittografiche, che creano un'impronta digitale unica per ogni blocco.
Esempio: Una volta registrata una transazione, come l'invio di 1 Bitcoin da Alice a Bob, i dati sono crittograficamente legati al blocco in cui sono contenuti. Per modificarli, un malintenzionato dovrebbe alterare non solo quel blocco, ma anche tutti i successivi, su tutti i nodi della rete. Ciò richiederebbe una quantità di potenza computazionale praticamente impossibile da ottenere, rendendo i dati sostanzialmente immutabili.
Sicurezza
La blockchain utilizza crittografia avanzata per proteggere le transazioni. Ogni transazione è firmata digitalmente con una chiave privata e verificata attraverso una chiave pubblica.
Esempio: Quando Alice invia Bitcoin a Bob, utilizza la sua chiave privata per firmare digitalmente la transazione. Questo processo crea una firma univoca che può essere verificata con la chiave pubblica associata. Anche se un hacker intercettasse la transazione, senza la chiave privata non potrebbe modificarla né fingere di essere Alice.
Trasparenza
Tutte le transazioni registrate nella blockchain sono visibili pubblicamente (in blockchain pubbliche come quella di Bitcoin), rendendo il sistema trasparente e altamente verificabile.
Esempio: Supponiamo che Alice voglia dimostrare di aver inviato 1 Bitcoin a Bob. Poiché tutte le transazioni sono registrate pubblicamente sulla blockchain, chiunque può verificare che l'indirizzo di Alice ha inviato esattamente 1 Bitcoin all'indirizzo di Bob, senza conoscere le identità reali dietro gli indirizzi. Questo livello di trasparenza aiuta a costruire fiducia tra le parti coinvolte.
Un blocco nella blockchain è una struttura dati che raccoglie e registra un insieme di transazioni avvenute in un determinato intervallo di tempo. Questi blocchi sono collegati tra loro in modo sequenziale, formando una catena ininterrotta, da cui il termine "blockchain".
Struttura di un Blocco
Un blocco tipico nella blockchain è composto da due parti principali: l'header del blocco e il corpo del blocco.
Header del Blocco: Contiene informazioni essenziali per garantire l'integrità e la continuità della blockchain.
Hash del Blocco Precedente: Un valore hash che collega il blocco corrente al blocco precedente, assicurando l'ordine cronologico e l'immutabilità della catena.
Funzione di hash: è una funzione matematica
Proprietà di sicurezza: 🔐
Non invertibilità
Dal codice output non si può risalire al codice input

Collision free 🚗
dati 2 imputi differenti , non posso MAI generare lo stesso output
si può usare come indice indicativo (Documento PDF)
Modifica minima (anche un lettera del documento) dell’input cambia totalmente il codice di hash
Puzzle friendly 🧩
se ho un output nessuno ha modo di generare l’input
Timestamp: Indica la data e l'ora in cui il blocco è stato creato, contribuendo alla tracciabilità delle transazioni.
Nonce: Un numero utilizzato una sola volta, fondamentale nel processo di mining per la risoluzione del problema di proof-of-work.
Merkle Root: Un hash che rappresenta l'insieme di tutte le transazioni incluse nel blocco, organizzate in una struttura ad albero chiamata Merkle Tree.
Struttura dati Merkle Tree 🌳

Per OTTIMIZZARE gli Hash si creano dei TOP HASH i quali contengo altri HASH

per ottenere L1 basta avere i Hash per completare il TREE (hash 0.01 + Hash 0.1 + Hash 1)

Modalità più semplice per creare un TOP HASH

Corpo del Blocco: Contiene l'elenco delle transazioni verificate e incluse nel blocco. Ogni transazione registra dettagli come:
Mittente e Destinatario: Gli indirizzi delle parti coinvolte nella transazione.
Quantità: L'importo trasferito.
La struttura del blocco: LA BLOCK HEADER
il primo rigo di ogni blocco corrisponde all’hash del codice precedente


Distribuzione Block Time ⏳
Ovvero le stime sulle tempistiche di risoluzione dell’hash

Mining Pool 🌊
Molti miners collaborano per trovare il prossimo blocco e condividere la reward, al fine di ridurre la varianza del profitto
I partecipanti alla pool iniziano a minare blocchi ce inviano la reward all’indirizzo del POOL OPERATOR
I partecipanti alla pool inviano all’operatore un blocco con un difficulty target inferiore a quello necessario per il blocco, il modo ce il pool operator possa stimare il lavoro effettivamente svolto
I profitto dal mining sono distribuiti proporzionalmente al lavoro compiuto dai singoli miners
Transazioni 🏗

esempi di transazione per capire i principi chiave
TRANSAZIONE 1
Outputs: specificano le condizioni di spesa
(scriptPubKey)
“Solo il proprietario della chiave privata che relativa alla chiave pubblica K1 può spendere ”
Inputs: forniscono i dati che soddisfano le condizioni espresse nell’output
(scriptSing)
“firma dell’hash della transazione con chiave privata k1”
TRANSAZIONE 2
Outputs: specificano le condizioni di spesa
(scriptPubKey)
“Solo il proprietario della chiave privata il cui hash dalla chiave pubblica è f2cacda3dc98cav00091d8d6422aeb57bb77 può spendere”
Inputs: forniscono i dati che soddisfano le condizioni espresse nell’output
(scriptSing)
“Chiave pubblica k2 e la firma dell’hash della trasazione con la chiave provata k2”
TRANSAZIONE 3
Outputs: specificano le condizioni di spesa
(scriptPubKey)
“Solo il proprietario della chiave privata che corrispondono alle chiavi pubbliche k1 e k2 possono spendere”
Inputs: forniscono i dati che soddisfano le condizioni espresse nell’output
(scriptSing)
“Due firme dell’hash della transazione con le chiavi private k1 e k2”
TRANSAZIONE 4
Outputs: specificano le condizioni di spesa
(scriptPubKey)
“I proprietari delle chiavi private che corrispondono alle chiavi pubbliche k1 e k2 posso spendere, oppure le chiavi private che cporrispondono alla pubblica k3 può spendere dopo 3 mesi ”
Inputs: forniscono i dati che soddisfano le condizioni espresse nell’output
(scriptSing)
“La firma dell’hash della transazione con la chiave privata k3 dopo la scandena dei 3 mesi ”
TRANSAZIONE 5
Outputs: specificano le condizioni di spesa
(scriptPubKey)
“Congiuntamente due dei proprietari delle chiave che corrispondono alle chiavi pubbliche k1,k2,k3,k4 posso spendere autonomamente ”
Inputs: forniscono i dati che soddisfano le condizioni espresse nell’output
(scriptSing)
“Due firme dell’hash della transazione con le chiavi private k1 e k4”
Composizione Transazioni



Firma Digitale: Una firma che autentica la transazione, garantendo che sia stata autorizzata dal proprietario dei fondi.
Firme Digitali 📝
Una firma digitale è uno schema matematico utile a verificare l’autenticità di messaggio o documenti

Processo di Creazione e Validazione di un Blocco
La creazione di un nuovo blocco avviene attraverso un processo chiamato "mining" (estrazione). I passaggi principali includono:
Raccolta delle Transazioni: Le transazioni trasmesse alla rete vengono raccolte dai nodi e preparate per l'inclusione in un nuovo blocco.
Verifica delle Transazioni: Ogni transazione viene verificata per assicurarsi che sia valida, controllando, ad esempio, che il mittente disponga dei fondi necessari e che la firma digitale sia corretta.
Creazione dell'Header del Blocco: Vengono compilati i dati dell'header, inclusi l'hash del blocco precedente, il timestamp, il Merkle Root delle transazioni e un nonce iniziale.
Risoluzione del Problema di Proof-of-Work: I miner cercano un valore di nonce che, combinato con gli altri dati dell'header, produca un hash che soddisfi una specifica condizione di difficoltà (ad esempio, un certo numero di zeri iniziali). Questo richiede un'enorme quantità di tentativi e calcoli.
Aggiunta del Blocco alla Blockchain: Una volta trovato il nonce corretto, il nuovo blocco viene trasmesso alla rete. Gli altri nodi verificano la validità del blocco e, se accettato, lo aggiungono alla propria copia della blockchain.
Ricompensa: Il miner che ha creato il blocco riceve una ricompensa in criptovaluta, oltre alle commissioni associate alle transazioni incluse nel blocco.
Importanza della Struttura del Blocco
La struttura di un blocco è fondamentale per garantire:
Integrità: Ogni blocco è collegato al precedente tramite l'hash, rendendo estremamente difficile alterare informazioni senza essere rilevati.
Trasparenza: Le informazioni sulle transazioni sono pubblicamente accessibili, aumentando la fiducia nel sistema.
Sicurezza: L'uso di firme digitali e hash crittografici protegge le transazioni da frodi e manomissioni.
Comments