La blockchain è un sistema distribuito per la validazione di transazioni tra peers, dove i record non possono essere alterati retroattivamente. L’applicazione più famosa di questo sistema è Bitcoin.
ESEMPIO BITCOIN
Si vuole creare una moneta senza nessuna autorità centrale (come una banca). Il problema più grande è validare l'effettiva esistenza della moneta. Saranno necessarie la crittografia per firmare elettronicamente le monete e la funzione di hashing per controllare che il documento non sia stato alterato.
Per creare le monete si utilizzerà una struttura che contiene l'ID della moneta e la firma elettronica del creatore. Quando si dovrà pagare, per validare il record, si utilizzerà la funzione di hashing. Il possessore creerà un record di transazione che punta al record originale della moneta, infatti, quando il proprietario dovrà utilizzare la moneta manderà al nuovo ricevente il record della transazione e il suo hash per il controllo, in modo da avere la cronologia delle transazioni della moneta. Si presenta però un grosso problema: una persona che possiede un coin potrebbe spenderlo in due transazioni diverse, questo attacco è chiamato double-spending attack; la soluzione più ovvia a questo problema è quella di definire un controllo centrale che mantenga un registro e che validi le transazioni controllando l’appartenenza della moneta e che esista davvero. Tuttavia questa soluzione non risolve il problema iniziale, infatti si voleva creare una moneta senza autorità centrale.
LA VALIDAZIONE
L'esempio dei Bitcoin quindi ci porta a due domande:
• Chi mantiene il registro?
• Chi valida le transazioni?
La blockchain implementa la distribuzione della convalida della transazione, tramite un insieme di nodi, alcuni dei quali considerati affidabili, ai quali viene fornita una transazione da eseguire. La transazione va a buon fine quando i nodi affidabili presenti nella rete raggiungono il consenso unanime sulla validità della stessa.
Esempio: Una persona x vuole pagare y: x manda in broadcast la transazione ad ogni nodo della rete e questi validano la transazione. La rete può funzionare se il nodo è in qualche modo incentivato a eseguire la transazione, tuttavia se tutti i nodi vogliono validare la transazione si presenta il problema di decidere chi la validerà, per decidere ciò la blockchain pone una sfida a ogni nodo per ricevere il diritto di validare e a creare un nuovo coin (in Bitcoin questa sfida consiste nell'indovinare un numero primo tramite un algoritmo bruteforce).
Ricapitolando, una blockchain è una struttura dati distribuita, replicata e condivisa tra i membri del network, è un registro distribuito, ha transazioni immutabili nelle chains of blocks, nelle quali vengono inserite solo transazioni validate dalla rete, e la validazione è considerata sicura solo se la maggior parte della rete ha raggiunto un consenso sulla validità della transazione.
SMART CONTRACT
La validazione della transazione può essere codificata in programmi predefiniti chiamati smart contracts.
Le blockchains possono essere viste come registri di risultati di uno smart contract, che vengono validati dai partecipanti della rete senza nessuna autorità centrale. La trasparenza sopperisce quindi alla mancanza di fiducia tra le parti di un contratto, permettendo una migliore collaborazione tra diverse aziende. Precedentemente il processo collaborativo doveva o essere gestito da un ente superiore che orchestrava il procedimento, oppure si doveva avere una collaborazione alla pari tra le parti. Nel primo caso si doveva avere fiducia nell'ente superiore e nel secondo caso negli altri partecipanti, ma grazie alla blockchain la fiducia viene riposta nella rete, perciò le aziende quando definiscono un accordo creano anche uno smart contract che coordina le attività delle aziende in una blockchain (un esempio è Hyperledger).
DIFFERENZE TRA BLOCKCHAIN E BITCOIN
Obiettivo di blockchain: produrre un ambiente sicuro, low cost e peer 2 peer.
Obiettivo di Bitcoin: produrre transazione veloci e poco controllate dai governi.
Proof of Work: è il meccanismo utilizzato da Bitcoin per scegliere chi validare e si basa su una sfida di elaborazione.
Proof of Stake: è il meccanismo utilizzato da molte blockchain: i nodi più importanti sono quelli che gestiscono la validazione, però se un nodo acquisisce troppo valore la sua blockchain perderà di valore, perciò questo tipo di attacco non conviene.
ETHEREUM
Ethereum è un'altra criptomoneta che però è anche una piattaforma su cui vengono pubblicati vari smart contracts che permetto la validazione sicura di diverse applicazioni, come sistemi elettorali, mercati, crowdfunding, ecc.
ATTACCHI ALLE BLOCKCHAIN
- 51% attack: consiste nel prendere il controllo del 51% della rete;
- Sybil attack: consiste nel fingersi uno dei nodi della rete comportandosi come lui e isolandolo dalla rete;
- Eclipse attack: consiste nell'oscurare parte della rete;
- Routing attack: attacco ai pacchetti;
- Exploit del codice: uno degli attacchi che ha fatto più danni in assoluto su Ethereum, infatti sfruttando i bug un utente è riuscito a prelevare molti coin dai wallet di altri utenti. Questo attacco, chiamato DAO, ha portato ad un grosso problema morale, infatti i founder di Ethereum hanno ripistrinato i wallet allo stato precedente all'attacco, ciò però vuol dire che i founder possono modificare le transazioni e sono un'autorità centrale.
LINK UTILI
- blockchaindemo.io simula una blockchain;
- stateofthedapps.com contiene un vasto elenco di applicazioni distribuite;
- cryptozombies.io permette a chi ha delle basi di programmazione di provare l'implementazione di uno smart contract per gestire una fabbrica di zombie;
- remix.ethereum.org è l'IDE online di Ethereum.
Haroun Rossini