Una blockchain (in italiano: blocchi concatenati) è un database in cui i singoli record, denominati "blocchi", sono collegati tra loro utilizzando la crittografia. I blocchi possono solamente essere aggiunti al database, non modificati né eliminati. Ogni blocco contiene, oltre ai dati, un hash crittografico del blocco precedente e una marca temporale, formando effettivamente una catena. I dati di un determinato blocco non possono essere modificati senza alterare i blocchi successivi. Ciò garantisce l'immutabilità e l'immodificabilità dei dati registrati, rendendo la blockchain adatta, per esempio, a registrare le transazioni in criptovaluta.
La blockchain è un registro distribuito (distributed ledger), ovvero un database decentralizzato, replicato in più copie gestite da soggetti diversi, senza un amministratore centrale. La coerenza tra le varie copie è garantita dal protocollo condiviso. Quando viene autorizzata l'aggiunta di un nuovo blocco, ogni nodo aggiorna la propria copia.
Storia La prima blockchain introdotta nel 2008 da Satoshi Nakamoto (pseudonimo di un autore la cui identità è tuttora sconosciuta), e implementata l'anno seguente, con l'obiettivo di fungere da "libro mastro" (registro di tutte le transazioni) della nascente valuta digitale Bitcoin. Satoshi Nakamoto usava le parole block e chain in modo separato nell'articolo del 2008. Nel 2009 la creazione di Satoshi Nakamoto, Bitcoin, venne utilizzata per la prima volta per l'acquisto di una pizza.
Nell'agosto del 2014, col Bitcoin che aveva raggiunto una certa notorietà a livello globale, la dimensione della sua blockchain raggiunse i 20 gigabyte; a marzo 2022 ha superato i 450 gigabyte.
Nel 2014 si iniziò ad usare il termine "Blockchain 2.0" per riferirsi a un nuovo modo d'impiego della blockchain. L'idea era quella di permettere alle persone escluse dall'attuale monetizzazione di poter entrare in possesso di un deposito monetario affidabile e sicuro con la possibilità di proteggere la privacy e monetizzare le proprie informazioni. Secondo alcuni autori ha anche il potenziale per risolvere il problema della disuguaglianza sociale, cambiando il modo in cui la ricchezza è ridistribuita.
Nel 2017 il parlamento del Nevada ha liberalizzato completamente la blockchain. In particolare la sezione 4 del Senate Bill 398: impedisce alle autorità locali di raccogliere imposte sulla blockchain; impedisce di richiedere qualsiasi forma di licenza per l'uso della blockchain; impedisce qualsiasi altra richiesta sull'uso della blockchain.
Nell'aprile del 2019 durante la Mostra internazionale dell'artigianato è stato presentato il primo manufatto artigianale Made in Italy in cui sono stati tracciati interamente i passaggi produttivi tramite tecnologia blockchain.
Descrizione Una blockchain è un registro digitale aperto e distribuito, in grado di memorizzare record di dati (solitamente, denominati "transazioni") in modo sicuro, verificabile e permanente. Una volta scritti, i dati in un blocco non possono essere retroattivamente alterati senza che vengano modificati tutti i blocchi successivi ad esso e ciò, per la natura del protocollo e dello schema di validazione, necessiterebbe del consenso della maggioranza della rete. La blockchain è quindi rappresentabile come una lista, in continua crescita, di "blocchi" collegati tra loro e resi sicuri mediante l'uso della crittografia. Ad un blocco possono essere associate una o più transazioni e ogni blocco, inoltre, contiene un puntatore hash al blocco precedente e una marca temporale.
La natura distribuita e il modello cooperativo rendono robusto e sicuro il processo di validazione ma presentano tempi di aggiornamento non trascurabili, dovuti al processo di validazione dei blocchi e alla sincronizzazione delle rete. L'autenticazione avviene tramite collaborazione di massa ed è alimentata da interessi collettivi. L'utilizzo di questa tecnologia consente anche di superare il problema dell'infinita riproducibilità di un bene digitale e della doppia spesa, senza l'utilizzo di un server centrale o di un'autorità.
Talvolta risulta possibile che alcuni nodi della rete producano simultaneamente più blocchi "concorrenti" (ossia collegati a uno stesso blocco già esistente, ma diversi tra loro nel contenuto): ciò dà origine a una biforcazione (fork) nella catena. Il protocollo di aggiornamento specifica quale regola i nodi debbano adottare per selezionare il blocco da accettare, tra quelli concorrenti. I blocchi non selezionati per l'inclusione nella catena sono chiamati "blocchi orfani".
Decentramento La blockchain decentrata sfrutta il passaggio di messaggi ad hoc e un networking distribuito per fare in modo di memorizzare i dati su tutta la sua rete ed evitare di avere un single point of failure in modo che non esista una centralizzazione che i cracker potrebbero sfruttare per abbattere l'intero sistema.
Tra i metodi di sicurezza della blockchain c'è anche la crittografia a chiave pubblica. La chiave pubblica è un indirizzo sulla blockchain. I token di valore inviati nella rete vengono registrati come appartenenti a questo indirizzo. Invece la chiave privata è come una password che permette al suo proprietario di accedere alle sue risorse digitali oppure di interagire con le varie funzionalità della blockchain.
I dati salvati sulla blockchain sono considerati incorruttibili.
Ogni nodo o miner nel sistema decentrato ha una copia della blockchain: difatti la qualità dei dati è mantenuta grazie a una massiva replicazione del database. Non esiste nessuna copia ufficiale centralizzata e nessun utente è più credibile di altri, tutti sono allo stesso livello di credenziali. I nodi miner, ovvero gli utenti, validano le nuove transazioni e le aggiungono al blocco che stanno costruendo dopo aver verificato l'intera blockchain. Una volta completato il blocco, lo trasmettono agli altri nodi della rete.
La blockchain usa differenti schemi di timestamp per serializzare le modifiche.
La crescita della blockchain decentrata va di pari passo con il rischio della centralizzazione dei nodi, perché le risorse informatiche richieste per operare e gestire dati sempre più grandi diventano sempre più costose. Infatti molti nodi miner si aggregano in pool per riuscire a completare i blocchi e ottenere criptovalute.
Struttura del blocco Le transazioni sono raggruppate nei blocchi della blockchain e il numero di transazioni all'interno di ognuno di questi blocchi varia in base alla dimensione della transazione stessa. Invece la dimensione della transazione varia in base al numero di input e di output della stessa. Un blocco è composto da due parti principali: lheader e il body. Le transazioni sono racchiuse nel body del blocco e nellheader sono presenti sette campi di gestione del blocco stesso.
I campi dellheader del blocco sono mostrati nella tabella sottostante. Versione02000000Hash del blocco precedente (PrevHash)E87C17C45768w7e1643fsd5481sd3f4131df681Merkle root697we168t4v1a4rv3v1e3r43c4er14ca8c4168aTimestamp358b0553Bits535f0119Nonce48750933Numero di transazione64 Il campo "Versione" dipende dalla versione del software utilizzato, il campo PrevHash è un hash di 256 bit che serve per fare riferimento al precedente blocco della catena, il Merkle root è lhash di tutti gli hash di tutte le transazioni nel blocco, il campo Timestamp rappresenta il time stamp dell'ultima transazione con un algoritmo conosciuto come Unix hex timestamp da non confondere con il timestamp UNIX che esprime bit numerici in secondi dal 1970-01-01T 00:00 UTC, il campo Bits rappresenta il corrente valore target: lhash dello SHA-256 dellheader di un blocco dev'essere minore o al massimo uguale al corrente valore di target per essere accettato dalla rete, il campo Nonce è un valore a 8 byte che viene aggiunto al blocco in modo che l'output della funzione di hash vari facendo in modo che non risulti inferiore al valore target, il valore viene ricalcolato finché lhash del blocco non contiene il richiesto numero di zeri principali e infine il campo "Numero di transazione" identifica il numero della transazione.
Validazione dei blocchi
Un nodo, dopo aver verificato l'intera blockchain, raccoglie e colleziona le nuove transazioni generate ancora non validate e suggerisce alla rete quale dovrebbe essere il nuovo blocco. I computer usano la funzione crittografica di hash per stimare l'output fino a che non risulta inferiore al valore di target (valore dato dal campo "bits" nellheader del blocco). Il primo nodo che risolve il blocco lo trasmette nella rete dove viene accettato come blocco successivo nella catena.
Sia X la funzione di hash fissata della rete e si consideri x come le transazioni pendenti e n rappresenti il valore di nonce. Lhash di output deve iniziare con degli zeri e deve essere inferiore al valore di target, il problema è determinare il valore del nonce per far sì che questo avvenga. La difficoltà è dovuta al fatto che la funzione crittografica di hash, di fronte alla variazione anche di un solo bit nell'input porta ad un output completamente differente rispetto a quello calcolato senza la variazione; in questo modo diventa praticamente impossibile predire il nonce.
Una volta che il blocco è stato risolto, il suo hash, come un'impronta digitale, lo rappresenta univocamente ed è usato anche come riferimento al blocco precedente. Successivamente alla risoluzione del blocco, la rete automaticamente aggiusta il valore di target.
L'intero processo di validazione dei blocchi è chiamato mining.
È possibile, per diversi nodi, validare più blocchi contemporaneamente, portando così ad una biforcazione della catena. In questo caso, i miner (coloro che fanno mining) lavorano per la validazione dei blocchi su entrambe le biforcazioni della catena, ma appena in una delle due viene validato ed aggiunto un nuovo blocco, tutti i miner che lavoravano sull'altra si spostano su quella a cui è stato aggiunto un blocco nuovo, trasformando così il blocco abbandonato in un "blocco orfano". Questo accade perché l'obiettivo dei miner è quello di estendere la catena in lunghezza.
Apertura Le blockchain aperte sono di più facile utilizzo rispetto a quelle proprietarie, che necessitano comunque di un accesso fisico alle viste, nonostante siano anch'essi aperti al pubblico. Dato che tutte le prime blockchain erano aperte, si è instaurata una controversia sulla definizione di blockchain. Un argomento di questo dibattito è se un sistema privato con dei verificatori autorizzati da un'autorità centrale possa essere considerato una blockchain.
I sostenitori delle catene autorizzate o quantomeno private sostengono che il termine blockchain possa essere applicato a qualsiasi struttura dati che raccoglie dati dentro a blocchi con un timestamp. Queste blockchain vengono usate come una versione distribuita di un controllo della concorrenza multiversione (MVCC). Proprio come un MVCC impedisce che due transazioni vadano a modificare lo stesso record sul database, la blockchain impedisce che due transazione spendano la stessa uscita singola.
Invece gli oppositori di questa idea dicono che il sistema chiuso da permessi assomiglia ai tradizionali database aziendali che non supporta la verifica decentralizzata dei dati. Inoltre sostengono che questo sistema non è protetto contro la manipolazione e la revisione da parte di utenti.
Senza permessi Il grande vantaggio della blockchain aperta, permissionless o pubblica, è che non è necessaria nessuna protezione verso utenti malintenzionati e non si necessita di nessun controllo degli accessi. Questo significa che è possibile aggiungere le applicazioni alla rete senza l'approvazione di nessuno, usando la blockchain come un livello di trasporto. Bitcoin e le altre criptomonete rendono sicure le loro blockchain richiedendo una prova di lavoro (proof-of-work) per poter scrivere su di esse.
Blockchain con permessi (private)