Blockchain
La blockchain è un database pubblico contenente ogni transazione di Bitcoin mai avvenuta nella rete. Utilizzando questo database ogni utente è in grado di vedere quanti Bitcoin appartengono ad un determinato indirizzo in un certo momento. La blockchain è supportata dal lavoro decentralizzato di tanti minatori (). Con questa informazione chiunque può verificare quanto valore sia appartenuto ad ogni indirizzo, in ogni momento cronologico.
La blockchain è quindi considerata l’innovazione principale introdotta da Bitcoin.
Indice
Principi di costruzione
![Block chain.jpg](http://bitcoinwiki.org/wp-content/uploads/2023/12/300px-Block_chain.jpg)
Ogni blocco minato contiene l’ del blocco precedente. In questo modo una catena di blocchi creata ha origine dal così detto (il blocco creato nel sistema Bitcoin), fino al blocco più recente trovato dalla rete. Modificare i dati in un blocco che è stato parte di una catena per un lungo tempo non è pratico perché si dovrebbe cambiare anche tutti i dati nei blocchi successivi. Grazie a queste proprietà il problema della doppia spesa (double-spending, ovvero una doppia transazione con denaro già speso) nella rete Bitcoin viene scongiurato.
I minatori onesti formano quindi i loro blocchi partendo dall’ultimo minato, con questo come riferimento. Una successiva parte della catena è considerata valida solo se ha al suo interno tutte le informazioni sugli anelli precedenti, e se la catena stessa parte con il .
Forks nella Blockchain
Ogni blocco nella catena ha solo un percorso a ritroso verso il blocco Genesis. Tuttavia la catena può dividersi varie volte nel suo percorso dal blocco genesi, formando quindi dei bivi (). Forks contenenti un solo blocco sono molto comuni. Compaiono quando nodi diversi scoprono un blocco con differenza di qualche secondo. Quando questo accade, gli altri nodi iniziano a costruire la catena dal blocco che hanno ricevuto per primo. Il momento in cui uno dei due blocchi riceve una continuazione, la sua catena è considerata come principale nella block chain perché più lunga.
I blocchi che non sono parte della blockchain principale non sono usati e, inoltre, la ricompensa per la loro scoperta è minore. Questi blocchi sono chiamati “blocchi orfani”. Dato che la blockchain può avere un solo percorso di ritorno verso un blocco precedente, combinare 2 catene è impossibile.
I blocchi in catene più corte (o in catene invalide) non sono utilizzati. Quando un client Bitcoin passa a una diversa catena più lunga, tutte le transazioni valide del blocco dentro la catena più corta ritornano nel circolo delle transazioni in coda e saranno incluse in un altro blocco. Le ricompense per i blocchi nella catena più corta non saranno presenti nella catena più lunga, quindi in sostanza andranno perse, e questo è il motivo per cui esiste un sistema istituito dal network di maturazione del singolo blocco con un minimo di 100 conferme.
I blocchi sulle catene più corte sono generalmente chiamati “blocchi orfani” perché il processo di generazione delle transazioni non dispone di un blocco da cui è stato generato (parent block), presentandosi come “orfano” nella listtransactions RPC call.
Numerosi pool hanno mal interpretato questi messaggi e hanno iniziato a chiamare i blocchi corrispondenti “orfani”. In realtà questo blocchi dispongono di un blocco di origine e potrebbero persino generare altri blocchi (children blocks).
Dato che una blockchain può solo far riferimento al singolo blocco precedente, è impossibile per due catene biforcate unirsi. E’ possibile utilizzare l’algoritmo della blockchain per usi non finanziari: vedi . La blockchain è trasmessa a tutti i nodi della rete attraverso un protocollo di tipo flood.