Photo by Michael Dziedzic on Unsplash

La blockchain, da 0 a wow in 7 passi

Michele Mostarda

--

Ho deciso di scrivere questa guida introduttiva alla blockchain pensando ad un pubblico di newbies non necessariamente tecnico che si sta avvicinando all’argomento.

Di certo nel 2021 tutorial e guide non mancano, ma nessuna di queste introduce i vari temi in un percorso che renda più accessibile l’argomento. Quindi ho voluto provarci anch’io. Fammi sapere cosa ne pensi!

Il modo più efficace per comprendere la tecnologia blockchain e le organizzazioni che vi orbitano intorno è partire dal suo scopo principale, capire per cosa è stata pensata e a cosa serve. Solo dopo averne compreso gli obiettivi si possono apprezzare i meccanismi che ne regolano il funzionamento.

Blockchain è un termine generico utilizzato per indicare sia le principali reti pubbliche che forniscono questi servizi, sia la tecnologia su cui si basano queste reti, costituita da un insieme di software che la fanno funzionare e permettono agli utenti di interagire, e di protocolli, ossia di regole e formati che le parti devono applicare per interagire correttamente tra loro.

1. A cosa serve

Lo scopo fondamentale della blockchain è l’abbattimento dei costi della fiducia, attraverso il trasferimento della stessa ad una massa omogenea e spesso anonima di verificatori.

Nel mondo moderno le relazioni umane dipendono da interazioni sociali complesse. Spesso dobbiamo affidarci a servizi di terze parti, generalmente operati da persone che non conosciamo, e che richiedono un intermediario di fiducia.

Le operazioni di intermediazione della fiducia tuttavia introducono dei rischi, ed i rischi hanno un costo.

Ha un costo mantenere un conto corrente bancario, eseguire una transazione economica, certificare il cambio di proprietà di un bene, certificare la correttezza di un’informazione. Ad oggi queste operazioni di fiducia sono state fornite da organizzazioni centralizzate che tracciano le informazioni sui propri registri, spesso privati, e che decidono costi e modalità di consultazione e aggiornamento di tali registri.

Come vedremo tra poco, una blockchain fornisce un registro decentralizzato, ossia controllato dalla massa e non da un’organizzazione specifica, accessibile a tutti, append only (una volta scritta un’informazione non può essere più rimossa), che può in molti casi sostituire i registri centralizzati nei casi sopra citati ed altri ancora.

Leggere questo registro decentralizzato è un’operazione gratuita, scrivere sul registro ha un costo, generalmente minore rispetto a quello dei corrispettivi centralizzati.

Le limitazioni dei servizi permissioned

I servizi permissioned sono tutti quei servizi erogati da organizzazioni centralizzate, che possono interrompersi o essere unilateralmente modificati.

A volte i servizi terzi a cui siamo costretti a rivolgerci per intermediare la fiducia cambiano le loro policy di servizio, oppure diventano monopolisti, applicano tariffe arbitrarie oppure strategie di walled garden, in cui non è possibile utilizzare i propri asset all’esterno dello scope del provider.

I servizi controllati dai governi possono diventare impositivi, applicando prelievi forzosi o congelando la disponibilità di valore.

Inoltre ogni servizio terzo è a rischio corruzione, manomissione o incidente, una banca può fallire, un notaio può essere corrotto oppure il suo archivio può essere distrutto, un dipendente di un servizio pubblico può sottrarre o alterare informazioni.

2. Perché decentralizzare

Tutti questi rischi e restrizioni, specie se valutati in ambito bancario e finanziario (e quindi nella gestione di beni intangibili e digitalizzabili) hanno spinto hacker e ricercatori a cercare delle soluzioni per trasformare quello che è l’intermediario fidato in un servizio decentralizzato, ossia un aggregato di entità che da sole hanno un potere pressoché nullo, mentre tutte insieme costituiscono un’entità trustless attendibile, (potrebbe essere vista come una sorta di intelligenza collettiva) a cui andare a delegare tutta una serie di servizi che prima erano appannaggio unico di entità centralizzate (banche, operatori circuiti pagamento, notai etc).

La blockchain è stata la prima tecnologia ad introdurre il concetto di trustless, ossia introdurre una mezzo di intermediazione della fiducia che non fosse una singola organizzazione ma un gruppo di entità anonime.

Dopo vari esperimenti e fallimenti, una soluzione molto promettente è stata trovata nel 2008 da Satoshi Nakamoto, descritta nel suo paper Bitcoin: A Peer to Peer Electronic Cash System e con la successiva pubblicazione del codice open source della prima implementazione di tale sistema.

Non si conosce con certezza l’identità di Satoshi Nakamoto, verosimilmente uno pseudonimo dietro il quale si potrebbe nascondere anche un gruppo di hacker etici.

Sono invece note le motivazioni di tale contributo: Nakamoto ha voluto costruire uno strumento digitale libero e accessibile a tutti per scambiare valore e contrastare il potere dei gruppi finanziari tradizionali, responsabili di varie crisi finanziarie, tra cui quella dei mutui subprime iniziata nel 2006.

Grazie a Nakamoto oggi esiste una nuova classe di modelli di business accessibili e realizzabili da privati e aziende, che possono interagire con dinamiche di interesse mai osservate prima: i servizi trustless.

3. Chi c’è dietro

Una volta comprese le potenzialità dei servizi trustless, approfondiamo i ruoli dei vari attori che forniscono tali servizi e capiamo quali sono i criteri per capire quale usare.

La blockchain è la soluzione tecnologica dietro Bitcoin. Da quell’idea iniziale sono state sviluppate molte varianti, oggi esistono network blockchain molto differenti in termini di sicurezza, partecipazione e prestazioni.

Chi gestisce una Blockchain

Una blockchain è una community di privati, aziende e potenzialmente anche istituzioni che predispongono delle macchine e del software che rispetta un determinato protocollo di interazione con i nodi di altre organizzazioni, in cambio di benefici economici diretti o indiretti (organizzazioni for-profit). Un network blockchain fa inoltre riferimento ad un’organizzazione no-profit che si occupa di coordinare lo sviluppo del protocollo, del codice e di seguire un piano di crescita di lungo termine.

Chi può usare una Blockchain

Una blockchain che si rispetti è uno strumento permissionless: può essere usato da chiunque senza sottoscrivere contratti o richiedere autorizzazioni.

Una blockchain è leggibile e scrivibile liberamente, tuttavia per poter scrivere su di essa è necessario acquisire gli asset che ne garantiscono l’utilizzo, questi asset possono essere acquistati da chi ne possiede o guadagnati contribuendo al network stesso attraverso un processo che spiegherò in seguito, detto mining.

4. Come si usa

In un network blockchain, privati aziende ed istituzioni vanno a costruire una rete digitale globale mettendo a disposizione dei nodi (ossia dei computer) su cui è installato uno specifico software. Questi nodi allo stesso tempo collaborano per mantenere un protocollo unico di funzionamento e competono per acquisire un reward economico da questa collaborazione. Il corretto funzionamento del network costruisce valore per tutti i partecipanti.

I concetti fondamentali da capire per approcciare una blockchain come utilizzatore sono gli asset, i wallet, gli indirizzi e le transazioni.

Gli asset su blockchain non sono entità digitali isolate, ma sono frammenti di dati e codice scritti nel ledger decentralizzato, e quindi ripetuti in tutti i nodi. Il possesso di queste entità è rappresentato dal diritto di spostamento degli asset stessi, ossia dal possesso delle chiavi necessarie a spostare tali asset dai loro indirizzi attuali.

Gli asset possono essere la valuta nativa della blockchain o dei token costruiti su di essa da un utilizzatore. La valuta nativa rappresenta l’asset di valore principale e consente di:

  • rappresentare, custodire e scambiare valore, ad esempio nella blockchain Ethereum l’asset principale è la sua currency nativa Ether, che ha un valore e può essere acquistato, scambiato e venduto;
  • utilizzare le funzionalità specifiche del network, ad esempio è possibile spendere Ether per interagire con degli smart contract, attraverso l’esecuzione di codice.

I wallet sono dei software (che possono avere anche delle parti hw) installati presso i device degli utenti che garantiscono il controllo degli asset ai legittimi proprietari. L’emissione di una transazione avviene attraverso tale software, che può essere pensato come un portachiavi, contenente appunto le chiavi necessarie per firmare le autorizzazioni necessarie per spendere gli asset.

Gli asset sono contenuti in contenitori chiamati indirizzi, gestiti dai wallet. Trasferire un asset significa passarlo dal controllo di un indirizzo mittente ad un indirizzo destinatario.

Le transazioni sono delle operazioni di scrittura sul ledger che vengono eseguite attraverso i wallet ed hanno un costo di esecuzione, una transazione consente di modificare permanentemente (se si è autorizzati a farlo) il registro decentralizzato.

Una transazione contiene l’ordine di spostare un asset nativo da un indirizzo ad un altro, e può richiedere in aggiunta l’esecuzione di comandi forniti da uno smart contract.

Costi di utilizzo

Per usare una blockchain bisogna possedere e spendere degli asset o risorse prodotte e custodite da quella blockchain, le cryptocurrency.

Questo significa che i servizi forniti o costruiti su blockchain non sono gratuiti, ma sono tendenzialmente meno costosi, non sono soggetti a monopolio, nessuno può imporre delle regole che non siano state accettate da una larga maggioranza, e sono permissionless.

5. Come funziona

Bitcoin è stato il primo network decentralizzato della storia in grado di rappresentare beni digitali non duplicabili, e quindi capaci di rappresentare un valore, per ottenere questo risultato è necessario che tutti i nodi partecipanti abbiano una visione univoca e condivisa del registro.

La difficoltà principale nel far funzionare un network di nodi dove nessuno coordina le operazioni è quello di tenere tutti i nodi su una visione unificata (o sincronizzata) delle informazioni, a tal fine è necessario dare un ordine globale a tutte le transazioni valide eseguite.

Infatti se non ci fosse un ordine globale, un utente potrebbe approfittare del disordine e spendere lo stesso asset più volte, eseguendo ad esempio due transazioni dallo stesso indirizzo in contemporanea per acquistare qualcosa, notificando a due parti molto distanti del network e sperando che nessuno se ne accorga prima di aver ricevuto la merce (double-spend).

Prima della soluzione algoritmica proposta da Nakamoto, questo problema dell’ordinamento poteva essere soddisfatto solo utilizzando un coordinatore centrale, una sorta di maestro d’orchestra visibile e riconosciuto da tutti che aiutava i vari nodi a coordinarsi. Ma questo introduceva un elemento di centralizzazione e quindi di controllo e potenziale compromissione.

Il grande successo di Satoshi Nakamoto è stato quello di scoprire un metodo, chiamato Nakamoto Consensus, per generare asset digitali non replicabili e quindi unici, non soggetti a double-spend su una rete di nodi tutti uguali (peer to peer), quindi senza tale coordinamento centrale.

Consensus

Il coordinamento dei nodi di una blockchain basata sul Nakamoto Consensus prevede che alcuni nodi, detti miner, generino un ordinamento delle transazioni circolanti e non ancora confermate.

Questo ordinamento si ottiene raccogliendo le transazioni in attesa di validazione in gruppi detti blocchi, dove un blocco deve far riferimento ad uno già approvato dal network.

Dato che qualunque nodo potrebbe eseguire questa operazione di validazione e raggruppamento delle transazioni, è stato necessario introdurre un meccanismo competitivo che garantisce che emettere un blocco valido sia un evento temporalmente raro e distanziato, in modo da evitare eccessive sovrapposizioni.

Viene quindi richiesto di eseguire un’operazione di mining sul blocco candidato, che consiste nel risolvere un problema computazionalmente molto pesante. Quando un miner trova una soluzione la propaga al network, ogni nodo valida la soluzione e, se corretta, la ripropaga.

Quando durante il suo lavoro di mining un miner riceve un blocco dal network, proveniente da un altro miner che ha risolto il problema prima di lui, questi, dopo aver verificato la validità della soluzione proposta, abbandona il lavoro svolto fino ad allora e ricomincia da capo, costruendo un nuovo blocco con transazioni non ancora validate e avviando una nuova ricerca della soluzione.

I nodi di una blockchain ascoltano le nuove transazioni, verificano che siano valide rispetto a quanto sanno delle precedenti transazioni confermate e le ripropagano ai nodi che conoscono.

Mining

Se i nodi sono dei miner eseguono in parallelo un’attività di risoluzione di blocco: le nuove transazioni valide ricevute sono raggruppate in un nuovo blocco candidato, questo blocco viene agganciato all’ultimo blocco conosciuto, andando così a formare una catena di blocchi.

Nel caso di Proof of Work viene quindi cercata la soluzione di un problema matematico sempre unico che dipende dai dati contenuti dal nuovo blocco e che richiede diversi minuti per poter essere calcolato. Il primo nodo che trova la soluzione la propaga a tutti gli altri nodi che la verificano e ripropagano a loro volta, interrompendo le ricerche in corso basate sullo stesso blocco padre.

Il Proof of Work è un processo statistico, non è calcolabile il tempo necessario per trovare una soluzione ma si può stimare probabilisticamente quanto tempo ci può volere in funzione della propria potenza di mining e del livello di complessità richiesto dalla soluzione che varia nel tempo come vedremo tra poco.

Concettualmente con il Proof of Work tutti hanno la possibilità di partecipare alla costruzione di un nuovo blocco, ma più potente è il proprio hardware maggiore è la probabilità di riuscita, ecco perché al di sotto di particolari “potenze” i miner non operano in solitario (avrebbero possibilità di risolvere un singolo blocco ogni svariati anni) ma si uniscono ad altri miner per dividersi carico e ricompensa in proporzione all’effort svolto, questi gruppi si chiamano mining pool.

In caso si utilizzino algoritmi di consensus come Proof of Stake, la candidatura di un nuovo blocco da parte dei miner (che con questi algoritmi prendono a volte il nome di validatori) non richiede costi computazionali particolarmente elevati ne hardware dedicati, tuttavia, per assicurare una corretta distribuzione dell’opportunità di costruire un blocco, si richiede che i blocchi proposti da un miner siano accettati in funzione della loro quantità di stake e del tempo trascorso dall’ultimo blocco emesso.

Finalizzazione

Le transazioni in una blockchain, come abbiamo visto precedentemente, non sono confermate in fase di ricezione, come avviene nei sistemi centralizzati, ma devono essere confermate dal network attraverso il consensus.

Una transazione ha un livello di conferma incrementale, diventando più sicura nel tempo. Quando superano un certo livello di conferma possono essere considerate non reversibili e quindi definitive.

Tecnicamente una transazione è confermata quando entra in un blocco ed è considerata sicura quando un numero sufficiente di altri blocchi vengono costruiti sul blocco che la contiene (ad esempio in Bitcoin questo numero è convenzionalmente 6).

La conferma di una transazione è un’operazione probabilistica, non è possibile stimare il tempo esatto che richiederà una transazione per essere considerata definitiva, si può solo avere una stima temporale, ad esempio in Bitcoin si ha mediamente un blocco ogni 10 minuti, per avere 6 conferme necessarie ad assumere una transazione come finalizzata bisogna quindi aspettare mediamente 60 minuti.

Reward

Il meccanismo del reward di blocco (block reward) e delle fees costituiscono l’incentivo economico che ricevono i miner quando contribuiscono alla creazione di nuovi blocchi. Molte blockchain, incluso Bitcoin, prevedono un numero massimo di coin nativi che possono essere generati (limited supply), a tal proposito hanno introdotto un meccanismo che riduce la quantità di nuovi coin che vengono generati in un block reward, generalmente attraverso un dimezzamento del reward che scatta ogni N blocchi. Questo significa che per tali blockchain il block reward è un meccanismo temporaneo che va verso l’esaurimento e che le fees rimangono il meccanismo di ricompensa di lungo termine.

Quando un miner riceve un blocco valido costruito sullo stesso blocco che ha usato anche lui per collegare il proprio blocco candidato, sa di aver perso la competizione per quel blocco e non può far altro che abbandonare il lavoro corrente, aggiungere il nuovo blocco ricevuto alla sua blockchain attuale ed iniziare a risolvere un nuovo blocco candidato, collegato all’ultimo blocco che ha validato. E tale processo si ripete all’infinito.

Quando un nuovo blocco viene minato, il nodo emittente si auto attribuisce, come stabilito dal protocollo, un reward. Quando questo blocco viene approvato dai singoli nodi del network, questo reward diventa effettivo. Se un nodo invece tentasse di propagare un blocco invalido secondo il protocollo osservato dalla maggioranza, tale blocco verrebbe semplicemente ignorato dai nodi riceventi e non propagato ulteriormente.

Fees

Le principali blockchain pubbliche basano il loro meccanismo di Consensus sulla costruzioni di blocchi di transazioni. Questi blocchi, per ragioni di performance, hanno delle dimensioni massime prestabilite, di conseguenza il numero di transazioni per unità di tempo che possono essere effettuate su una blockchain sono limitate.

I Miner, nel selezionare le transazioni da inserire nel prossimo blocco candidato che andranno a processare, potranno scegliere quelle che garantiscono fees maggiori.

Quindi gli utilizzatori che necessitano di effettuare transazioni sulla blockchain in un determinato momento devono competere per acquistare gli slot disponibili, e questo di fatto va a costituire le fee. Dato che le fees tendono ad essere estremamente variabili, costituiscono un elemento di friction nell’adozione di soluzioni decentralizzate

Difficulty

La difficulty è un valore numerico che indica il livello di difficoltà minimo (e quindi l’effort computazionale) richiesto dal processo di mining per generare dei blocchi che possono essere accettati dal network. Se un miner dovesse risolvere e propagare un blocco sotto il livello di difficulty su cui si è assestato il network, questo sarebbe ignorato.

La difficulty con cui si risolve un blocco non rimane costante. Infatti se in una rete pubblica nel tempo dovesse raddoppiare il mining power erogato dai miner, si dimezzerebbe il tempo medio necessario per risolvere un blocco. Variazioni di hash power determinerebbero variazioni nel tempo medio di produzione dei blocchi, e la distanza temporale tra i blocchi diventerebbe imprevedibile.

Inoltre se i tempi di soluzione tra i blocchi si restringessero troppo, il protocollo di consensus del network potrebbe diventare instabile, perché la catena di blocchi, invece di svilupparsi linearmente, inizierebbe a sviluppare rami concorrenti. Alcuni rami sarebbero poi eliminati, tuttavia questo processo causerebbe ritardi nella finalizzazione dei blocchi, dispersione del hash power globale e quindi allungamenti nei tempi di conferma delle transazioni.

Al fine di evitare queste ramificazioni indesiderate, i principali protocolli di mining, come quello di Bitcoin, assicurano che il tempo medio per risolvere un blocco rimanga molto più grande del tempo medio per propagare un blocco a tutti i nodi della rete, in modo tale da assicurare stabilità e scarsa ramificazione della blockchain.

Per ottenere questo effetto si usa una difficulty adattiva, pensata per mantenere costante il tempo medio di generazione di blocco. La difficulty quindi aumenta all’aumentare del hash power medio espresso dal network e diminuisce al diminuire dello stesso.

Dato che il tempo di ricerca di ogni soluzione di blocco è statisticamente costante (ossia per fare un blocco ci vuole più o meno lo stesso tempo), i blocchi verranno emessi dai miner con cadenza regolare, andando a costruire una sorta di clock globale, sostenuto dalla competizione dei miner.

6. Quando Usarla

Uno degli temi più complessi per chi approccia gli ecosistemi blockchain, è capire quando vale la pena impiegare tali tecnologie per realizzare il proprio progetto. Dal 2017 si è assistito ad un eccesso di entusiasmo nell’impiego delle blockchain e delle soluzioni di tokenizzazione, spesso in contesti tecnicamente inadatti e senza una reale logica di generazione del valore.

In linea di principio, può aver senso utilizzare la blockchain se il progetto che stiamo sviluppando ha degli aspetti di trust molto importanti. Ho scritto un articolo dedicato che aiuta a valutare quanto sia realmente necessario applicare una soluzione blockchain https://hardest.medium.com/il-mio-business-model-ha-bisogno-di-una-blockchain-b82f73e80a7b al proprio modello di business.

7. Quale Blockchain

Ad oggi non esiste una blockchain adatta a tutte le esigenze, bisogna capire quale, tra quelle disponibili, è maggiormente compatibile con i propri obiettivi. Non esiste una formula esatta per calcolare il livello di compatibilità, ma si possono applicare dei metodi decisionali semi formali per valutare al meglio tutti gli aspetti.

Una volta definito un modello di business tokenizzato e identificate le interazioni on chain con i vari stakeholder, la scelta di una blockchain dipende da fattori come il costo medio e la velocità di transazione, il livello di sicurezza richiesto dal progetto, il livello di percezione del mercato e da altri fattori spesso più emotivi che tecnici.

Le fees e quindi il costo medio di transazione influenzano molto la selezione di un substrato blockchain, purtroppo più degli aspetti di sicurezza.

Ad esempio, a seguito della crescita di capitalizzazione dei mercati crypto e del conseguente aumento del valore e dei volumi di transazione osservati nel Q1 2021, l’uso di network come Ethereum è diventato molto costoso. Molte aziende hanno quindi iniziato a sponsorizzare dei network alternativi ad Ethereum, che è il principale substrato per la finanza decentralizzata, proponendo dei cloni scarsamente decentralizzati (controllati da poche aziende spesso in affari tra loro) con delle fees di utilizzo calmierate.

L’adozione di massa di queste “reti a basso costo” da parte di interi comparti (che operano principalmente nella DeFi — Decentralized Finance) dimostra come ancora oggi l’utente medio sia più sensibile all’usabilità piuttosto che all’affidabilità di un network, e che c’è bisogno di maggiore comprensione della tecnologia e dei suoi rischi.

Conclusioni

La blockchain è uno degli argomenti più complessi e meno compresi degli ultimi anni, che combina concetti avanzati di reti distribuite, crittografia e programmazione con dinamiche sociali ed economiche. Questo causa spesso una comprensione parziale di alcuni argomenti ed un approccio irrazionale e fazioso anche per molti addetti ai lavori.

Il modo migliore per orientarsi in questo mondo è comprendere i concetti fondamentali riportati in questo articolo, senza concentrarsi troppo sui dettagli “commerciali” e senza essere condizionati troppo dallo storytelling costruito da alcuni attori per differenziarsi dalla “concorrenza”, che non apporta nessuna reale differenziazione tecnologica.

Se vuoi approfondire gli argomenti introdotti in questo articolo ti consiglio di leggere anche i miei articoli: A Blockchain Terminology Concept Map (en) e Blockchain: le 100 domande più frequenti.

--

--

Michele Mostarda
Michele Mostarda

Written by Michele Mostarda

Blockchain advisor and entrepreneur, software engineer experienced in cryptocurrencies, startups, crowdfunding, big data and machine learning.

No responses yet