Segnalibri
- torna alla home page
- Calcolatori
- Eventi e Incontri
- Video
- Mettiti alla prova
- Scuola e progetti educativi
- Pubblicazioni e dati
- Informazioni di base
- Glossario
La tecnologia alla base degli smart contract è ancora in fase di evoluzione, per cui al momento, al di fuori del mondo delle cripto-attività, è molto difficile imbattersi in concrete applicazioni. Tuttavia, negli ultimi anni diverse società che operano nei settori immobiliare, assicurativo e finanziario hanno lanciato progetti pionieristici per studiare l'adozione degli smart contract.
Per quanto riguarda l'ambito bancario, una delle possibili applicazioni degli smart contract potrà essere, ad esempio, la completa automazione dei contratti di mutuo, dalla valutazione della domanda del cliente al pagamento delle rate, fino all'estinzione del debito, senza più la necessità di alcun intervento umano.
Bisogna immaginare i contratti intelligenti come dei veri e propri programmi per computer, un insieme di istruzioni che risolvono problemi automatizzati predefiniti. Se programmato correttamente per farlo, il contratto intelligente sarà, infatti, idealmente in grado di:
Diverse compagnie assicurative hanno sperimentato delle polizze di tipo parametrico utilizzando come piattaforma Ethereum, una delle blockchain più popolari per smart contract complessi.
In queste polizze automatizzate lo smart contract riceve le informazioni sugli eventi esterni (ad esempio gli orari dei voli e i relativi ritardi) e, se si verificano le condizioni previste dalla polizza, fa scattare automaticamente il rimborso spettante al cliente.
Facciamo un passo indietro: un contratto è un accordo tra le parti che prevede uno scambio o la nascita di obblighi o diritti a determinate condizioni. Le parti, dette contraenti, possono essere persone fisiche o giuridiche (enti, società, associazioni).
Il presupposto fondamentale del funzionamento di un contratto ordinario è la buona fede dei contraenti: se le clausole, cioè le condizioni previste dal contratto, sono soddisfatte, i soggetti si impegnano a fare quello che hanno sottoscritto.
Nel caso in cui, invece, per qualche motivo si generi un conflitto (disputa) tra loro, allora per risolverlo si dovranno rivolgere a una terza parte, come ad esempio un tribunale o un arbitro.
Lo smart contract è invece un programma che contiene tutti i termini del contratto sotto forma di codice. In particolare, come vedremo, le chiavi pubbliche e le firme digitali specificate all'interno del codice determinano chi dei soggetti, fisici o giuridici, può fare cosa. I soggetti contraenti possono interagire con il contratto solo nei modi specificati dal contratto stesso, che di volta in volta esegue il codice opportuno e mette in azione determinate clausole: ad esempio spostare dei fondi se determinate condizioni sono soddisfatte.
Generalmente, nell'ambito delle forme contrattuali tradizionali la firma sul contratto da parte dei soggetti sottoscrittori è autografa: cioè viene fatta di persona, a mano. In un contratto intelligente, invece, sia le identità dei sottoscrittori che le firme sono digitali, quindi espresse in un formato numerico che può essere compreso e utilizzato solo da specifici programmi.
Mentre in un contratto ordinario l'identità di un soggetto è definita dal nome e cognome, in uno smart contract è invece determinata dalla cosiddetta chiave pubblica: un numero composto da centinaia o anche migliaia di cifre.
Per comodità, la chiave pubblica è in genere rappresentata come sequenza alfanumerica, vale a dire composta da cifre e caratteri. Il termina pubblica, infine, si riferisce al fatto che questa chiave viene resa nota a tutti dal proprietario, essendo un semplice identificativo.
La particolarità di questo sistema è che alla chiave pubblica, visibile a tutti, è associata una seconda sequenza di cifre che deve invece rimanere segreta, la chiave privata.
A differenza della chiave pubblica, la chiave privata è nota solo al proprietario e permette di generare una firma digitale per ogni documento (o programma, nel caso degli smart contract). La firma può successivamente essere verificata da chiunque sia in possesso della chiave pubblica del soggetto firmatario, esattamente come se si stesse facendo una perizia calligrafica.
A differenza della firma ordinaria però, la firma digitale non è falsificabile: allo stato attuale delle nostre conoscenze non esiste infatti alcun modo di ricavare la chiave privata associata alla chiave pubblica nota. Se provassimo a indovinarla, il numero di tentativi necessari sarebbe così alto da rendere il compito impossibile, anche avendo a disposizione centinaia di computer impegnati in questo scopo. Per questi motivi, non è ad oggi possibile generare firme digitali al posto del legittimo proprietario, impersonandolo.
Per ovvie ragioni di sicurezza, la sequenza di cifre che costituisce la chiave privata deve essere custodita gelosamente e non comunicata ad altri, essendo l'equivalente digitale di una carta di pagamento: chi possiede la chiave privata di una persona può sostanzialmente rubarle l'identità, firmando documenti ed eseguendo transazioni al suo posto.
Normalmente la chiave privata non viene usata in maniera diretta dall'utente perché è molto lunga e non sarebbe pratico inserirla a mano (o ricordarla). Viene quindi immagazzinata in un file e usata direttamente dai programmi che ne hanno bisogno per apporre firme. È tuttavia buona pratica averne un backup cartaceo che può essere usato per recuperarla in caso di disastro.
Una volta che il contratto intelligente è stato preparato e firmato digitalmente dai contraenti, viene validato e salvato in un registro condiviso tra tutti gli utenti: una blockchain o un ledger distribuito. A questo punto è immutabile, cioè non può più essere modificato, e diventa operativo.
L'interazione con il contratto - da questo momento - potrà avvenire solo secondo regole prestabilite, che non verranno verificate da una terza parte come nei contratti ordinari, ma dal codice dello smart contract stesso.
Di per sé lo smart contract non può accedere a delle informazioni che si trovano al di fuori della catena di blocchi di cui fa parte. Per farlo, si serve di un bot, programma automatizzato, chiamato "Oracolo". L'Oracolo recepisce i dati dall'esterno e li comunica allo smart contract. In questo modo, lo smart contract può verificare che le condizioni previste dal contratto siano soddisfatte.
Una catena di hotel decide di affittare le stanze utilizzando uno smart contract. Modifica tutte le serrature, sostituendole con dispositivi smart che, invece di aprirsi con una chiave fisica, sono in grado di verificare le firme digitali e sbloccarsi solo se la verifica va a buon fine.
La catena di hotel pubblica quindi uno smart contract contenente la lista di tutte le stanze e i relativi prezzi. A questo punto, un ipotetico cliente può affittare una stanza eseguendo una transazione direttamente sullo smart contract. Per pagare la stanza e, successivamente, sbloccare la porta, l'utente non avrà bisogno di particolari conoscenze tecniche: gli basterà scaricare una semplice applicazione per il cellulare, simile a tante altre utilizzare per l'acquisto di beni e servizi online. La chiave privata creata sarà al sicuro sul nostro smartphone o pc, e l'app potrà verificarne al momento l'autenticità. Tuttavia, dietro le quinte, il processo è automatizzato e reso sicuro dall'infrastruttura della blockchain e dello smart contract.
Ma come funziona questo processo? Pagando il prezzo richiesto, il cliente associa la propria chiave pubblica alla stanza che desidera prendere. Poi, arrivato in hotel, apre la stanza passando alla serratura smart una firma digitale che solo lui sarebbe in grado di generare essendo in possesso della chiave privata corrispondente alla chiave pubblica che ha registrato sullo smart contract.
Rispetto ai contratti tradizionali, il contratto intelligente ha alcuni benefici in termini di rigore ed efficienza.
In un contratto tradizionale infatti, i contenuti (clausole, diritti, doveri…) sono specificati usando il linguaggio scritto (es. l'italiano) e affidati all'interpretazione dei soggetti contraenti o di una terza parte che faccia da arbitro.
Uno smart contract invece è un programma fatto per essere interpretato da una macchina che lo eseguirà sempre nella stessa maniera, senza lasciare spazio ad eccezioni, giudizi di parte, favoritismi o corruzione.
Inoltre, essendo un'infrastruttura informatica, i costi di operatività sono molto più bassi rispetto ai tradizionali sistemi amministrativi, rendendo possibile gestire in simultanea contratti con un numero enorme di transazioni.
Tuttavia, lo smart contract presenta a sua volta qualche svantaggio legato proprio alla tecnologia sottostante. Ad esempio, cosa succede se il codice dello smart contract contiene un bug, cioè un errore di programmazione? In questo caso opererà in modo diverso dalle intenzioni dei contraenti, e la sua immutabilità renderà impossibile una sua revisione, con conseguenze imprevedibili.
Inoltre non bisogna sottovalutare il rischio di attacchi informatici. Un hacker, o pirata informatico, potrebbe ad esempio cercare attivamente bug nascosti nel codice di uno smart contract per appropriarsi di fondi indebitamente.
Questi problemi possono essere mitigati, e lo saranno, nel corso delle evoluzioni della tecnologia degli smart contract, ma rimangono punti da tenere ben presenti.