No results found
di Pierluigi Avvanzo
Da molto tempo si sente parlare di Blockchain e Bitcoin, che è la criptovaluta basata su tale sistema; in questo tutorial verrà spiegato di cosa si tratta, come funziona, quali sviluppi e penetrazioe avrà nella vita quotidiana e nella gestione informatizzata dei processi di vario genere.
Il concetto di blockchain (letteralmente “catena di blocchi autonomi”) si deve a una figura leggendaria, quasi mitologica di Satoshi Nakamoto (questo era in realtà lo pseudonimo del creatore della Blockchain), promotore di una lettera di intenti relativa a una tecnologia applicabile all’economia e alla finanza, nel 2008.
La Blockchain? Può essere considerata una lista, crescente, di registrazioni chiamate “blocchi” che sono interconnessi e resi sicuri grazie all’utilizzo della crittografia. La relativa tecnologia risale al 1991 ed è dovuta a due computer scientist informarci Stewart Habler e W. Scott Stornetta che crearono un protocollo che definiva come applicare un time-stamp a qualsiasi documento digitale.
Questo è l’incipit; in realtà la storia della Blockchain è ancora più antica e deriva fondamentalmente dall’applicazione dei concetti di moneta e soprattutto di finanza e trae fondamento nell’attività degli orafi, che furono i primi a creare certificati di deposito di denaro a fronte di una riserva aurea che veniva depositata. Tra l’altro furono i primi a determinare quelle che erano le caratteristiche bancarie moderne e quindi i concetti di deposito e prestito, nuovo conio e poi la riserva frazionaria.
Cerchiamo di capire come funziona la blockchain attraverso un confronto con le grandezze e i concetti economici esistenti e quindi. Uno degli aspetti interessanti del Bitcoin è che con la sua nascita è stato introdotto un sistema monetario che opera in modo differente da quelli tradizionali e che si basa sulla “decentralizzazione” e sull’anonimato.
La decentralizzazione implica che il sistema monetario sottinteso dall’adozione del Bitcoin, non preveda l’istituzione e quindi l’utilizzo di alcun organismo di controllo centrale, mentre le monete convenzionali sono gestite da una Banca Centrale, che è un organismo di controllo che le emette e garantisce che non siano false o contraffatte, ma anche che il cambio sia coerente. Di fatto la moneta convenzionale è un’obbligazione, emessa dalla Banca Centrale dello Stato e che si impegna a fornire il controvalore a chi la restituisce alla stessa banca.
La caratteristica dell’anonimato, invece, implica che l’identità di coloro che utilizzano il Bitcoin non venga mai rivelata, al contrario di quanto avviene con le valute tradizionali. Peraltro l’anonimato è garantito dal fatto che il Bitcoin è una valuta crittografata. I pagamenti in Bitcoin avvengono con soluzioni basate su blockchain, ovvero una tecnologia che consente il passaggio di informazioni all’interno di una rete di computer tra i nodi che la compongono. Le caratteristiche che rendono la blockchain così interessante sono la sicurezza, la trasparenza e l’anonimato.
I problemi principali del denaro come lo conosciamo oggi sono legati alla “doppia spesa” e alla contraffazione. Le monete cartacee risolvono soltanto il problema della doppia spesa e non della contraffazione, che può essere risolto con le monete digitali e le cripto-monete. Le monete digitali hanno bisogno di una clearing House cioè di una terza parte che funga da intermediario è che sia sufficientemente fidata per affidarle le transazioni. Le cripto-monete risolvono invece tutti i problemi.
La banca è legalmente responsabile di memorizzare tutte queste informazioni all’interno di un sistema privato e protetto. Deve altresì consentire imperativamente l’accesso ubiquo a tali informazioni ai propri clienti, in qualsiasi momento.
Questi criteri garantiscono, con assoluta certezza, e per tutti i soggetti coinvolti, che i movimenti siano riservati, privati, tutelati ed autentici in qualunque istante di tempo.
Per comprendere la Blockchain è opportuno confrontare i tre tipi di reti informatiche realizzabili, che sono, come propone l’immagine seguente:

Blockchain non è altro che un database decentralizzato che si basa su un network tra pari (peer-to-peer) che permette di conservare un registro di transazioni verificate; verificate perché sono associate ad uno script informatico che è distribuito attraverso tutti i nodi componenti questo network.
Ciò permette il conio deterministico di nuova moneta attraverso un’operazione che si chiama “mining”. Le caratteristiche di questo database, almeno della blockchain collegata al Bitcoin (poi vedremo che ci sono differenti blockchain a seconda di quelle che si vuole creare) è l’assenza di permessi di accesso, perché è fondamentalmente accessibile a chiunque ed è trasparente, ossia visibile da chiunque. Inoltre ogni movimento è tracciato e immutabile, ma non si può andare a modificare i dati, per cui è assolutamente sicuro. Tutto questo avviene tramite un processo o procedimento che si chiama appunto consenso decentralizzato.
Invece nelle transazioni con un consenso centralizzato, cioè la cosiddetta clearing House, c’è una struttura (una terza parte) che valida la transazione. Questo significa che la transazione è dipendente da una terza parte, quindi ogni spesa di moneta digitale tramite bonifici online, tramite carta di credito ecc. avviene tramite un clearing House che certifica che il denaro tolto da un conto venga depositato su quello destinatario. Parliamo delle transazioni bancarie, relative a carta di credito ecc.
La Blockchain prevede l’utilizzo di un time-stamp perché serve, insieme a un algoritmo di hashing, a siglare una transazione o comunque un messaggio (vedere l’immagine seguente). Il time-stamp è un marcatore (generato da un time-stamp server) che indica l’orario esatto al quale una transazione è avvenuta ed ha una funzione rilevante, perché consente a tutti i blocchi della Blockchain di saper collocare temporalmente le variazioni intervenute su un certo dato e capire quindi se un incremento è anteriore o posteriore a un decremento.

Traslando il discorso sul denaro, se una valuta riporta un valore 10 e conseguentemente due variazioni, una di +0,5 e l’altra di -1, si riesce a capire se ha raggiunto il valore 9,5 aumentando prima e diminuendo dopo o viceversa.
Il server per time-stamp lavora tramite hashing, passando qualunque blocco di item (qualunque tipo di informazione) attraverso un algoritmo che si chiama SHA 256 algorithm (Secure Hashing Algorytm) che è un algoritmo di hashing utilizzato per Blockchain e Bitcoin, ma anche per altre. Sostanzialmente sistema deriva da una tecnologia relativamente più vecchia che è quella delle impronte digitali; in altre parole l’algoritmo sha-256 potrebbe creare una collisione su 60 milioni di azioni (2^256, quindi 256 bit) che avvengono nello stesso momento che significa che così come nella realtà c'è una probabilità su 60 milioni che un individuo abbia lo stesso tipo di impronta digitale di un altro individuo (questo evento si chiama collisione) così si ha la stessa probabilità che nel caso in cui l’algoritmo di Hash vada a processare delle informazioni si possono ottenere come output un risultato finale con valore di hash identico. In realtà ciò è estremamente improbabile
L’immagine seguente schematizza il concetto: l’algoritmo SHA-256 ha stato creato il valore di hash, che per semplicità è stato composto da 64 caratteri esadecimali (256 bit) per identificare un documento, piccolo o grande che sia.

Fin qui tutto bene; ora proviamo ad immaginare un database che possa contenere un numero infinito di elementi. Rimanendo sull’esempio delle monete digitali, supponiamo che ogni qualvolta la banca scrive un nuovo record all’interno del database, definisca la prima transazione, di seguito la seconda e così via dicendo, rispettivamente utilizzando il codice “1”, “2”, “3”, ecc.
Dopo un certo numero di transazioni, la banca, sui suoi database, inizierà a scrivere il record “i” ed i successivi “i+1”, “i+2” e così via dicendo.
Quanto detto consente di fare due considerazioni:
Rimanendo sul tecnico, il Bitcoin può essere facilmente concepito come una serie di stringhe di codici univocamente definiti che hanno valore soltanto perché accettati come moneta di scambio tra gli utenti; i codici in oggetto funzionano come dei veri e propri conti correnti.
Il sistema di gestione delle transazioni su cui è basato il Bitcoin è concorrenziale e si basa sul fatto che la capacità computazionale fa la differenza.
Il nucleo della Blockchain è nell’unire il potere di hashing dell'algoritmo SHA 256 con una firma digitale: l’input può essere una lettera, una nota musicale, un file o l’intero contenuto di Internet e attraverso l’agoritmo otteniamo un output di lunghezza fissa.
Il blocco della Blockchain da cui si inserisce la transazione è chiamato genesys block; passando queste informazioni attraverso l'algoritmo SHA 256 si ottiene un valore di hash. Nella genesi del secondo blocco si verifica un linking, cioè un legame con il blocco precedente; ciò avviene applicando lo stesso valore di hash del primo blocco e inglobandolo nelle nuove transazioni (vedere l’immagine seguente).
Notare che utilizziamo il termine transazione per semplicità, ma di fatto si tratta di generiche informazioni, che saranno transazioni se si parla di scambi, ovvero informazioni trasferite (per esempio sulla quantità di un minerale disponibile al mondo).

Nel blocco mostrato a destra nell’immagine vediamo una transazione totalmente nuova. ovviamente anche anche questo secondo blocco verrà passato attraverso l’algoritmo e genererà un proprio valore di Ash (immagine seguente).

La sicurezza del sistema si può comprendere considerando che dopo la transazione la connessione non è più possibile; per esempio se stiamo parlando di una cessione di denaro di 7 euro da un soggetto a un altro e qualcuno vuole sottrarne una parte, ciò non è possibile in quanto una volta scritta nel blocco non è più possibile tornare indietro, giacché per ogni nuovo record cambia il valore di hash. Perciò anche modificando la minima informazione l’algoritmo modificherà completamente il valore di hash, il che farà cambiare il valore di hash del secondo blocco e così via.
Ma cosa accade se si va ad hackerare immediatamente il precedente blocco? Ebbene, tutte le transazioni che vedete in ogni blocco vengono definite certe, quindi garantite e verificate, dopo 6 blocchi; questo consente a tutti i validatori (cioè tutti i miner) di verificare che il “vincitore” (spiegheremo poi cosa signfica...) delle operazioni di mining del blocco possa aver sbagliato o aver volutamente alterato le informazioni.
Quindi una volta che viene minato un blocco, tutti i nodi della rete controllano che il blocco sia stato minato correttamente, quindi che siano state eseguite correttamente tutte le procedure; se qualcosa viene modificato in un blocco già minato, per esempio due tre blocchi prima, la rete se ne accorge è invalida quel tentativo, eliminando quel blocco dalla Blockchain, ossia dall’albero principale della Blockchain.
Il secondo punto fondamentale del funzionamento della Blockchain è quello delle chiavi pubbliche e private della Digital Signature. Sostanzialmente ogni documento, messaggio o transazione che possiamo fare verso gli altri blocchi viene garantita da una firma digitale che fa uso di una chiave asimmetrica, cioè di una crittografia asimmetrica, basata su una chiave pubblica e una chiave privata (immagine seguente).
La chiave pubblica è quella che permette, tramite un’apposita funzione, di verificare che il messaggio sia corretto e che nessuno possa risalire al possessore della chiave privata, né possa modificarne l’ID (ossia l’identità). Come già spiegato, la crittografia è a 256 bit, come nell’SHA.

Come funzionano queste chiavi private? La chiave privata è in possesso dell’utente, univoca e nessuno deve conoscerla: è un po’ come il token bancario, con la differenza che si tratta di una chiave che potete generare voi o far generare casualmente al sistema, oppure generare ogni volta che create una transazione. Quindi ogniqualvolta generate una transizione potete scaricarvi un certo numero di chiavi private e di chiavi pubbliche ad esse associate che sono solo vostre (immagine seguente).

La chiave privata va ad unirsi sostanzialmente al messaggio o alla transazione e l’insieme viene siglato per essere successivamente verificato da chi è in possesso della chiave pubblica; questa è richiamabile generalmente attraverso un indirizzo che ha più o meno lo stesso numero di informazioni, quindi è sempre scritto in esadecimale, con il quale comunicate con chiunque nel mondo.
Possiamo chiarire il concetto con l’immagine seguente, che propone la creazione di una transazione in denaro da Pierluigi a Bob, di 5$; stabilito il messaggio che contiene questa transazione, si fa clic sul pulsante Sign e attraverso la chiave privata Private Key viene generata la firma digitale con la quale il messaggio verrà contrassegnato (Message Signature).

Se si va a modificare una qualsiasi cifra della chiave privata, cambia la firma digitale del messaggio o transazione; in questo caso la firma diventa incoerente e non sarà riconosciuta da tutto il sistema della Blockchain.
Una volta che una transazione è stata generata e la relativa firma digitale l’avrà contrassegnata come veritiera e accettata, non sarà più possibile modificarla, perché se si tenta, ad esempio, di cambiare il valore del trasferimento di denaro dopo che è stato siglato, non è possibile procedere e il cambiamento risulta non accettato.
Sostanzialmente il mining è una competizione matematica che permette la protezione di tutto il network; non ci sono attacchi di DDOS che potrebbero funzionare.
Chiunque può partecipare al network e il suo computer viene chiamato nodo della rete; la possibilità di riuscire nel mining dipende dalla potenza computazionale del dispositivo, ovvero il nodo, che va a inserirsi nella Blockchain. La crescita della rete di nodi collegati al network ha fatto si lievitasse enormemente il potere computazionale necessario per poter risolvere quella che viene chiamata quella che viene chiamata proof of work, ossia la competizione matematica, che permette al miner che riesce a vincerla di arrogarsi il diritto di collegare il blocco che ha minato alla blockchain, oltre a ricevere un premio per aver minato il blocco ed aver risolto la proof-of-work.
Per quanto riguarda il Bitcoin, tale premio è la conquista di un Bitcoin.
Ogni 10 minuti circa, e non è un caso, qualcuno riesce a validare una transazione dei dieci minuti precedenti (ovviamente non una singola transazione ma un gruppo di transazioni). La difficoltà del mining aumenta con il passare del tempo ed è automaticamente “aggiustata” in base al protocollo della blockchain di Bitcoin in modo tale da far sì che comunque ci sia una risoluzione ogni 10 minuti da parte di qualcuno, in base al numero delle CPU coinvolte in tutto il network.
Questo si chiama “consenso emergente” ed è necessario ad evitare che si verifichi un fenomeno di stallo in cui non ci sia la possibilità di risolvere il problema.
A titolo d’esempio, la possibilità di risolvere una proof-of-work di circa 2 preceduto da 18/20 zeri decimali, quindi è praticamente nulla.
Ogni risoluzione della proof-of-work determina quindi il conio di un nuovo Bitcoin; inoltre il minatore che lo ha guadagnato, insieme ad esso riceverà anche come ulteriore premio una “fee” per tutte le transazioni collegate al blocco che ha minato, quindi guadagna su quelle e su ogni transazione riceve denaro in cripto-valuta.
La moneta viene creata dal 2009 dal 3 gennaio del 2009 e potrà essere coniata fino 2140, dopodiché nessun altro Bitcoin (nel caso della Blockchain di Bitcoin) verrà creato e quindi i minatori avranno come unico incentivo per continuare a minare e far crescere la Blockchain e permettere le transazioni sarà quello di prendere delle fee in relazione alle transazioni collegate blocchi minati.
Una curiosità: il tasso di conio di nuovi Bitcoin si dimezza ogni 4 anni circa e il massimo dei Bitcoin coniabili è di 21 milioni; ogni 4 anni si parla di circa 210mila blocchi aggiunti.
Approfondiamo ora il concetto di Prof-of-work: sostanzialmente tutti i minatori devono passare praticamente un certo numero di transazioni inserito in un determinato blocco e attraverso un algoritmo SHA-256. Tale operazione viene fatta aggiungendo anche il Time-stamp del network e un numero che viene arbitrariamente calcolato tra 0 e 4 miliardi ed inserito praticamente prima della funzione di hash (prima di passare tutto il blocco con le transazioni, il time-stamp e tutte le varie informazioni di ricevente e di mittente) attraverso un algoritmo SHA-256 poter ottenere in output un valore di hash con un definito numero di zeri, che attualmente per la Blockchain è pari a 18.
Quindi il minatore che riesce a minare un blocco e ad ottenere un valore di hash con 18 zeri, scegliendo e cambiando di volta in volta non solo il time-stamp (la cosa è velocissima perché avviene nell'arco dei microsecondi) ma anche ad arrivale al numero arbitrario (chiamato nonce) e al valore richiesto, viene premiato e quindi ha la possibilità di collegare il blocco alla Blockchain.
Una volta che lo sforzo di calcolo viene speso per soddisfare la Proof-of-work il blocco non può essere più cambiato senza rifare il lavoro; a questo punto il blocco viene inserito nella Blockchain e il dato è trasmesso a tutti i nodi del network, che verificano (stavolta molto velocemente) usando la funzione di validazione, che il blocco corrisponda ai criteri dovuti. Questo permette che contemporaneamente o quasi, a tutti i nodi appartenenti al network, venga aggiunto il blocco; però questo non è ancora verificato, perché ogni blocco, per poter essere definitivamente verificato, devono passare almeno sei blocchi e successivamente si ha la conferma totale che le transazioni collegate al primo blocco sia radicato nella main-chain, ossia nella Blockchain più lunga.
Una volta che il blocco viene inserito nell’albero dei blocchi (nella blockchain) diventa parte ormai radicata nella Blockchain, ma ciò solo dopo 100 blocchi minati dopo di esso.
Questa è un’ulteriore garanzia del fatto che un blocco, per potersi guadagnare la “fiducia” della Blockchain, deve passare parecchi controlli e procedure; il tutto rende la Blockchain estremamente affidabile.
Vediamo dunque un esempio pratico relativo ai blocchi: nell’immagine seguente è riportata una lista di blocchi della catena principale; quello indicato dal puntatore del mouse è il 526311 e tra parentesi è indicato che appartiene alla catena principale. A destra c’è il nome del miner (Inoltrato da) e a destra ancora l’hash corrispondente e la dimensione. Quanto vedete e le schermate che vedrete in seguito sono pagine web accessibili dal sito blockchain.info dopo aver effettuato l’accesso.

Sotto la colonna Orario troviamo il time-stamp; notate che sotto Dimensione è elencata la dimensione del blocco, che per default è un megabyte.
Se clicchiamo sul numero del blocco apriamo la finestra mostrata nell’immagine seguente, che riporta elementi come ad esempio il grado difficoltà: accanto a Difficoltà vedete 4.940 miliardi, che è il grado di difficoltà di superare la prova dei 10 minuti precedenti

Tornando un momento alle dimensioni del blocco, va detto che il megabyte predefinito è dovuto al fatto che il numero di transazioni al secondo per la catena di Blockchain è di circa 10; a titolo comparativo, pensate che per network come VISA, è dell’ordine di decine di migliaia o centinaia di migliaia di transazioni al secondo, quindi comprendete che la tecnologia a livello finanziario ha ancora qualcosa, detto eufemisticamente, da risolvere.
Una delle principali obiezioni riguardanti il Bitcoin è quella sulla tracciabilità delle transazioni e sul fatto che l’anonimato dello scambio di valori possa far diventare il Bitcoin il mezzo di scambio elettivo del riciclaggio di denaro sporco.
In realtà questo concetto non è esatto perché i pagamenti fatti con Bitcoin e quindi lo scambio di denaro su Blockchain non avviene nell’anonimato, in quanto le transazioni in denaro sono pseudonime, quindi si riesce a risalire, con adeguate funzioni di verifica, all’ID del mittente e del ricevente. Solo alcune criptomonete, come Z-Cash o soprattutto “monero” sono totalmente anonimi perché utilizzano degli algoritmi diversi chiamati “criptonite”.
Per quanto riguarda il rischio che la Blockchain e il Bitcoin possano essere utilizzati per il lavaggio del denaro (Money Laundering) è stato dimostrato che in realtà le cryptocurrency (criptomonete) sono più sicure e meno idonee a tale scopo e a utilizzi criminali, di quanto non siano alcuni conti correnti su banche inglesi o cinesi, ovvero il contante.
Il Genesys Block è il primo blocco di una Blockchain, che non a caso è quello che ne costituisce la genesi. Le versioni moderne di Bitcoin lo classificano come blocco 0, anche se le prime versioni lo consideravano come blocco 1. Il blocco genesis è quasi sempre codificato nel software delle applicazioni che utilizzano la sua catena a blocchi. Si tratta di un caso speciale in quanto non fa riferimento a un blocco precedente e, per Bitcoin e quasi tutti i suoi derivati, produce un sussidio invalicabile.
Il primo blocco della blockchain ha una caratteristica unica, in quanto non contiene alcun riferimento a blocchi precedenti ed è sempre integrato nel software del network, stabilendo tutte le variabili necessarie per creare la blockchain che ne deriva; tutti i blocchi successivi ne sono a conoscenza ed è immodificabile.
Nella Blockchain abbiamo anche la Proof of Stake, la Proof of Authority e la Proof of Elapsed Time: ci sono vari sistemi matematici computazionali che permettono di ovviare agli enormi i consumi energetici (sprechi di energia) correlati al mining. Infatti minare un bitcoin non è semplice e richiede l’utilizzo continuativo di CPU il cui consumo è talvolta comparabile al valore del Bitcoin che si riesce a minare.
La Proof of Stake (POS) è stata una delle prime ad essere implementata da alcuni sviluppatori; in realtà è una cosa molto elitaria in quanto permetterebbe al minatore più ricco, in grado di mettere una cauzione in denaro, di minare i blocchi e quindi diventerebbe assolutamente antidemocratica.
Invece la Proof of Work è più democratica per certi versi, perché solo chi ha il potere computazionale maggiore riesce, ma non sempre, a vincere la Proof of Work. In realtà esistono degli agglomerati di potere computazionale che si chiamano bool, che battono i miner o le fabbriche di mining più grandi, che possono essere ad esempio in Cina.
Con la blockchain si possono creare Smart Contract, cioè praticamente programmi che permettono di eliminare intermediari, i quali possono essere il notaio per le azioni oppure gli intermediari che vanno a comunicare i numeri di produzione di un pozzo di petrolio: ad esempio il governo che ha dei giacimenti dati in concessione per l’estrazione a una compagnia petrolifera, deve fidarsi di quanto comunicato dagli intermediari riguardo ai volumi estratti, mentre con la Blockchain i dati che vengono monitorati dei sensori in testa al pozzo, caricano in rete informazioni come la temperatura, il flusso, la quantità di petrolio, di gas e di acqua che escono, quindi portando i dati su blockchain sono visibili a tutti i soggetti operanti, fornendo la massima trasparenza
Un esempio di Smart Contract è quello di Car&Go oppure Enjoy, che più avanti verrà esteso alle società di leasing: stipulando un contratto, questo viene e le relative transazioni economiche vengono caricati nella blockchain, quindi finché il cliente paga, l’auto può essere avviata, mentre quando smette di pagare non si accende più. Chiaramente l’auto dev’essere connessa in rete.
Andiamo adesso alle ICO, di cui si è fatto un gran parlare: con tale termine, acronimo di Initial Coin Offering, si indicano progetti di raccolta di denaro, alcuni dei quali sono stati vere e proprie frodi. È necessario, prima di andare a mettere soldi su cose del genere, accertare chi sono i proprietari dei progetti, che cosa vogliono realmente fare e soprattutto se effettivamente sono in grado di fare quello che dicono, ovvero se hanno un track record di quello che dicono.
Vediamo adesso un esempio di transazione che si può fare con Bitcoin, che nello specifico riguarda un soggetto che sta comprando a Singapore attraverso un nodo presente a Rio de Janeiro un cappuccino in una starblock, ossia un ristorante. Avviene tutto in tempo reale ed è ovviamente registrato: nell’immagine seguente si può vedere tranquillamente che il numero di Sat (abbreviazione di Satoshi, che è un sottomultiplo di Bitcoin) e si può verificare la transazione in ogni momento, come mostrato nell’immagine seguente.

Il caso specifico riguarda una transazione eseguita con Lightning network, che è un sistema proprietario (purtroppo non è decentralizzato) che facilita o meglio velocizza il numero di transazioni semplicemente tenendole al di fuori della Blockchain e aggiungendole successivamente alla Blockchain dopo che c'è stato il consenso di una parte di questi blocchi.
Quanto visibile nell’immagine seguente riguarda, nello specifico, l’acquisto di un cappuccino per la cifra di 1.500 Satoshi (notare che il nome non è casuale ma è in omaggio a quello del mitologico Nakamoto).

La Blockchain potrebbe essere utilizzata per sostituire sistemi centralizzati come ad esempio quello del catasto di terreni e fabbricati: considerate che gli atti catastali attualmente sono tutti centralizzati, quindi qualunque attacco potrebbe generare problemi ai proprietari di immobili, come ad esempio modificare i calcoli delle tabelle millesimali, delle rendite catastali o l’assegnazione della proprietà. Con il trasferimento in Blockchain i dati verrebbero immediatamente multiplati su più blocchi e sarebbe difficilissimo alterarli, senza contare che sarebbero tutti facilmente consultabili per rimediare agli errori
Esempi di Blockchain li troviamo ad esempio nella Oilchain, che è una realtà basata su Blockchain per controllare le estrazioni nei possi di petroio.
Un altro esempio è che Charity Stars, che è una piattaforma tramite la quale effettuare donazioni in denaro che permette di tracciare il denaro delle offerte dal deposito all’utilizzo.
Un altro esempio Boulè, che è un sistema di Blockchain Identity collegata a un sistema di voto e permette praticamente di bypassare le problematiche delle delle elezioni, quali i falsi voti.
Vediamo adesso come creare una semplice Blockchain: uno strumento utilizzabile è Postman, una web app interface visibile nell’immagine seguente, dove andiamo a creare il nostro primo blocco: nella casella GET scriviamo l’indirizzo corrispondente al port dell’utente che lo crea.

Il codice riportato nel riquadro in basso è il primo indice, ossia il primo blocco della catena, contrassegnato da index:1. Notate che previous hash è 0, dato che essendo il primo blocco non sono previsti hash precedenti; inoltre transactions [] vale nulla, perché non esistono transazioni.
Creiamo dunque tre blocchi simili, che però saranno contraddistinti da un diverso Time-stamp, essendo stati creati in momenti differenti.
A questo punto andiamo a modificare il tipo di request su tutti (scegliamo POST...) e impostiamo il consenso della nostra blockchain, aggiungendo dopo il numero del port del primo blocco /connect_node. Quindi bisogna aggiungere nel riquadro centrale le righe visibili nell’immagini seguente, relative a indirizzi e port dei due blocchi della Blockchain in costruzione, in modo da unirli al blocco nella cui tab stiamo lavorando, vale a dire il primo creato, che è quello terminante con il numero di port 5004.

Adesso tutti i nodi sono connessi e lo si vede dal contenuto della finestra in basso, dove appare la scritta all the nodes are now connected. Notate che al fine di connettere effettivamente tutti i nodi, tale operazione va ripetuta nelle tab dei singoli blocchi, quindi nel secondo si vanno a inserire gli indirizzi del primo e del terzo, mentre nel terzo vanno scritti similmente gli indirizzi del primo e del secondo.

Una volta connessi i nodi, bisogna andare a minare il blocco, il che si fa innanzitutto cambiando il metodo da POST a GET, quindi scrivendo dopo l’indirizzo e il port /mine_block. Questo va fatto nella tab del primo blocco costruito, ossia quello che corrisponde al solito port 5004 (immagine seguente).

Una volta minato il blocco, se andiamo a guardare nel riquadro in basso vediamo il blocco numero 2 (index 2) e la scritta “Congratulations, you just mine a block” (immagine seguente) oltre all’esposizione della transazione, alla proof (533) e così via.

Troviamo anche l’amount (1) che è il guadagno virtuale, perché in questo caso non è stato guadagnato nulla, dato che si tratta di una transazione creata come esempio; abbiamo anche, nei dati della transazione, chi la riceve (GiGi) e chi l’ha aperta (sender).
Adesso andiamo a vedere com’è costituita la catena della blockchain costruita in questo esempio: con il solito metodo GET, andiamo a scrivere dopo l’indirizzo nella tab del primo blocco (che è l’origine della Blockchain di questo esempio) /get_chain dopo il solito numero di port (5004); otteniamo quanto visibile nel riquadro in basso della finestra dell’immagine seguente.

La catena inizia dal blocco di origine (index:1), il secondo blocco è index:2 e così via.
Se andiamo a vedere le tab relative agli altri due blocchi, vediamo che sono rimasti a index:1, perché abbiamo minato solo il primo.
Andando adesso sugli altri due tab e impartendo il comando /replace_chain col solito metodo GET attivo, otteniamo l’aggiornamento dei blocchi.
Volendo, possiamo aggiungere una transazione commutando sul metodo POST e costruendo la transazione con /add_transaction nella tab interessata. Così è possibile vedere come viene aggiornata in tutti i blocchi della Blockchain