“Contratto automatico intelligente”.
Ecco come potremmo tradurre, in modo esauriente, l’espressione “Smart Contract”.
Ma concretamente di cosa stiamo parlando?
Cosa sono di fatto gli Smart Contract?
E perché sono uno strumento così determinante nella tecnologia blockchain?
Proviamo a rispondere a queste domande in modo semplice e chiaro, in stile KNOBS.
Partiamo dalle basi e dalla terminologia.
Più che di “contratto” sarebbe giusto parlare in realtà di “programma” o meglio ancora di “codice”.
Lo Smart Contract, infatti, è un codice che viene memorizzato ed eseguito sui nodi di una blockchain.
Determina un cambiamento di stato della blockchain stessa e, nella maggior parte dei casi, “innesca” un trasferimento di valore.
Questo codice esegue le clausole che sono state stabilite al momento della “stipula del contratto” e reagisce a specifiche condizioni operative che possono verificarsi “in corsa”. Ogni volta che una di queste si realizza, il codice si attiva in automatico.
Per comprendere meglio, proviamo a semplificare.
Se (IF) specifiche condizioni hanno luogo secondo una sequenza ordinata e prestabilita (IF-THIS/THEN-THAT), allora (THEN) il codice esegue un determinato set di istruzioni.
Questa semplificazione permette di capire la logica sottostante uno Smart Contract.
In realtà, i contratti intelligenti non sono delle semplici istruzioni IFTTT ma dei veri e propri pezzi di codice Turing completi.
In linea di principio, questo significa che gli Smart Contract potrebbero essere usati per risolvere qualsiasi problema di calcolo. Non è necessario che ci addentriamo nella definizione di programma Turing complete. Ti basta sapere che gli Smart Contract possono gestire calcoli estremamente complessi ed eseguire operazioni ben più importanti di un semplice IFTTT.
Li definiamo “contratti” perché, come i contratti veri e propri, quelli provvisti di valenza giuridica, vincolano due o più parti tra loro in un accordo da rispettare, uno scambio di valore. E di questo scambio dettano modalità, tempi e regole.
Ecco un esempio pratico per capire meglio natura e caratteristiche degli smart contract.
Pensa ad una slot machine. Si, esatto, una di quelle macchine piene di luci e suoni che subito fanno venire in mente l’atmosfera cupa e un po’ equivoca di casinò e angoli seminascosti nei bar.
Per attivarla, basta inserire la monetina e abbassare la leva, giusto?
Siamo di fronte ad una versione molto semplice del già citato meccanismo if/then.
Se (IF) inserisco la monetina, (THEN) allora la slot si attiva, in un tripudio di suoni e luci.
Quando tiro la leva, infatti, attivo un programma che la macchina esegue in automatico.
Altro non è che un accordo “smart”, in forma molto semplificata.
Quando attivi una slot machine, però, non vedi esattamente cosa avviene dall’altra parte.
Non sai se i meccanismi che fanno girare le figure sul display sono randomici o se esistono delle regole diverse per la loro esecuzione. E verificarli sarebbe estremamente complesso.
Immagina se fosse possibile implementare la slot machine con la blockchain e con uno “Smart Contract”, ossia con un contratto digitale creato ad hoc per rendere il suo funzionamento tracciabile e trasparente.
Implementazioni di questo tipo, in effetti, esistono già: ne è un esempio interessante PoolTogether, la lotteria creata su Ethereum in cui nessuno può perdere.
I premi di PoolTogether sono finanziati con gli interessi che i biglietti acquistati maturano sulla piattaforma di prestito DeFi Compound Finance. E i vincitori che li ricevono sono selezionati tramite Smart Contract completamente automatizzati. Il codice è open-source, puoi consultarlo tu stesso su GitHub: https://github.com/pooltogether
Ecco appena descritta una lotteria che funziona nella massima trasparenza e tracciabilità.
Se guardiamo al mondo digitale, ecco un esempio che affonda le radici nell’origine stessa degli Smart Contract e precorre di decenni l’invenzione della blockchain.
Decenni, si. Gli Smart Contract, infatti, hanno trovato nella blockchain il loro contesto ideale, ma la loro storia inizia ben prima della creazione di questa tecnologia.
Il principio che sta alla loro base risale agli anni ’70.
Fu allora che nacque l’esigenza di gestire l’attivazione o disattivazione di una licenza software in funzione di una condizione fondamentale, il pagamento da parte del cliente.
La licenza di determinati software venne così gestita tramite una chiave digitale, che permetteva il funzionamento del software se il cliente aveva pagato la licenza e ne cessava il funzionamento alla data di scadenza del contratto.
Semplicemente, in modo molto basico, era uno Smart Contract.
La teorizzazione ufficiale degli Smart Contract risale soltanto al 1994, quando il famoso informatico e giurista Nick Szabo pubblica il primo lavoro sul tema e introduce l’idea di regolare relazioni economiche e non solo (rapporti d’affari, ma anche personali come i matrimoni!) attraverso protocolli digitali.
Nel 1996, nel suo “Smart Contracts: Building Blocks for Digital Free Markets”, Szabo definisce lo Smart Contract come “un insieme di promesse, specificate in forma digitale, inclusi i protocolli all’interno dei quali le parti eseguono queste promesse”.
Secondo Szabo, è proprio la natura digitale di queste “promesse” a garantire, molto più degli strumenti tradizionali, alcuni aspetti fondamentali del contratto, in particolare:
– osservabilità, cioè la possibilità per gli attori coinvolti di monitorarne il rispetto e documentarlo ad agenti esterni
– verificabilità, cioè il controllo della sua esecuzione in modo certo e indiscutibile
– applicabilità, cioè la possibilità di eseguirlo in modo esatto
– privacy, cioè la riservatezza delle informazioni, diffuse solo nella misura strettamente necessaria all’esecuzione del contratto stesso
Gli Smart Contract nascono quindi come event-driven software per automatizzare le obbligazioni contrattuali.
Niente a che fare con la blockchain. Non in origine almeno.
Ma perché allora oggi, quando ne parliamo, pensiamo subito ad uno degli strumenti cardine di questa tecnologia?
Come e quando gli Smart Contract sono approdati alla tecnologia blockchain e vi si sono legati in modo indissolubile?
È storia recente.
Nel luglio 2015, Vitalik Buterin inaugura la piattaforma blockchain Ethereum, proprio con l’obiettivo di sviluppare ed eseguire su blockchain contratti automatici decentralizzati.
È il grande passo: gli Smart Contract diventano ufficialmente contratti in esecuzione sui nodi blockchain.
Un’evoluzione naturale e quasi obbligata: per loro stessa natura, infatti, gli Smart Contract possiedono proprio le caratteristiche di automatismo, trasparenza e sicurezza che sono anche alla base della blockchain.
L’esecuzione su blockchain non fa altro che amplificare questi vantaggi, garantendo inoltre la piena affidabilità del contratto senza che sia necessaria la presenza di un intermediario.
Ma come funziona uno smart contract?
Tutto inizia con un passaggio preliminare fondamentale: la stesura del contratto con tutte le relative clausole e la sua successiva esatta programmazione in linguaggio macchina.
Una volta che l’accordo ha assunto una veste digitale, è necessario validarlo affinché possa entrare a far parte di un blocco della blockchain. In termini meno tecnici, questo significa che dobbiamo caricare il codice dello smart contract su blockchain.
Come avviene questa validazione?
Servono due elementi: la firma tramite chiave privata di tutti i partecipanti al contratto e un algoritmo di consenso Proof of Work (puoi approfondire i due temi nei post dedicati del blog di KNOBS).
Solo a validazione avvenuta, il blocco contenente lo Smart Contract viene integrato nella blockchain (di solito Ethereum).
Da questo momento in poi, chiunque può interagire con lo Smart Contract, inviando “istruzioni” codificate che contengono le informazioni necessarie all’operazione desiderata, e chiunque può osservarlo in esecuzione in qualunque momento.
E se lo Smart Contract avesse bisogno di dati che non sono sulla blockchain?
Come fa lo Smart Contract ad avere i dati necessari per far eseguire determinate condizioni scritte nel codice?
Per svolgere questa importante funzione lo Smart Contract può dialogare con programmi dedicati, gli Oracoli, che raccolgono informazioni offchain e le trasmettono onchain (approfondiremo proprio il tema degli Oracoli in uno dei prossimi post del nostro blog).
Le informazioni inviate fanno sì che lo Smart Contract diventi operativo, cioè che entri in esecuzione ed esegua le azioni previste al suo interno.
Questa esecuzione automatica, self-execution, non può in alcun modo essere interrotta o alterata a posteriori.
Grazie all’estrema adattabilità e versatilità, gli Smart Contract hanno un raggio d’azione molto ampio, che tocca settori eterogenei e molto diversi tra loro: da servizi finanziari e legali all’ambito dell’energia e delle infrastrutture, alla sanità e al campo assicurativo fino alla tracciabilità di merci e operazioni societarie e alla tutela della proprietà intellettuale.
Alcune loro funzioni potrebbero essere svolte anche da programmi informatici ben sviluppati, con l’eccezione però di un dettaglio fondamentale e preziosissimo.
I programmi informatici, anche se molto evoluti, non sono in grado di garantire condizioni certe di verificabilità, immutabilità e piena trasparenza del loro operato, che l’impiego di blockchain e Smart Contract invece assicurano appieno.
Proviamo a capire insieme la differenza.
In un qualsiasi programma informatico non caricato su blockchain, il codice del programma si trova su un server centralizzato a cui è possibile accedere tramite credenziali.
E cosa succede se qualcuno modifica il programma dopo che tu hai deciso di investire i tuoi soldi?
Su blockchain funziona diversamente.
Una volta che lo Smart Contract è caricato su blockchain, il codice è verificabile da chiunque. Chiunque può leggere il codice, vedere come funziona e nessuno, nemmeno chi l’ha scritto, può modificarne il contenuto!
Queste caratteristiche proprie della blockchain ti permettono con ragionevole certezza di “dare” i tuoi soldi ad un programma che li gestisce per te, secondo alcune condizioni che hai potuto verificare in maniera preventiva.
Che i soldi ti verranno restituiti dopo una settimana è scritto in un programma informatico verificabile, immutabile ed incorruttibile.
Inoltre, per la prima volta nella storia puoi dare del denaro ad un programma informatico che lo gestisce.
Puoi programmare il trasferimento di valore in automatico in base al verificarsi di determinate condizioni.
Uno degli esempi più famosi di applicazione di questo strumento blockchain è la polizza “Flight Delay” della startup tedesca Etherisc, un’assicurazione sui viaggi aerei decentralizzata che opera sulla piattaforma Ethereum.
Ecco come funziona.
Il viaggiatore acquista un biglietto aereo.
Grazie ad Etherisc, il possessore del biglietto può acquistare l’assicurazione sul ritardo del volo.
Attraverso gli Oracoli, lo Smart Contract riceve le informazioni relative agli orari di partenza e di arrivo dei voli.
Se viene rilevata un’alterazione degli orari programmati, causata da un ritardo o da una cancellazione, scatta in automatico l’esecuzione dell’accordo e il rimborso previsto dalla polizza. Questo rimborso avviene automaticamente in ETH, ma, su richiesta del cliente, può essere convertito, esternamente allo Smart Contract, in una delle principali valute a corso legale, dollari, euro o sterline.
A differenza dei sistemi assicurativi tradizionali, dove occorre dimostrare all’ente assicurativo che il volo è arrivato in ritardo, nel sistema sopra descritto, implementato su blockchain, il rimborso avviene in automatico nel momento in cui il volo atterra in ritardo.
Non esiste un ente assicurativo che fa da intermediario tra le parti: i fondi sono gestiti direttamente dal programma informatico.
Come software house specializzata in tecnologia blockchain, KNOBS ha curato lo sviluppo tecnologico di Smart Contract in tanti suoi progetti.
Basta uno sguardo al suo portfolio per farsi subito un’idea delle potenzialità e dell’ampio raggio di applicazione di questo strumento.
Pensa, ad esempio, a piattaforme come xToken, che permette di prenotare e gestire l’ingresso ad esercizi commerciali e servizi pubblici e privati attraverso l’emissione di token, a Piattaforma K, per la distribuzione certificata dei report di ricerca dell’Osservatorio Blockchain & Distributed Ledger, Satellite, la rivoluzionaria app di messaggistica basata su blockchain, oppure a progetti di ambito finanziario, come Microcredito 2.0, dedicato alle donazioni, e ICON, per la raccolta dilazionata e progressiva di capitale.
In tutti questi casi, i ticket emessi sotto forma di token, gettoni digitali, sono gestiti e implementati con Smart Contract, per assicurare la piena tutela e dimostrabilità delle scelte effettuate dagli utenti e proteggerne attività e sicurezza.
È assodato, insomma, che stiamo parlando di uno strumento agile, versatile, “smart” nel senso proprio del termine.
Essendo veri e propri programmi informatici, gli Smart Contract hanno molteplici campi di applicazione e consentono, grazie alla tecnologia blockchain sottostante, di implementare logiche di business prima inimmaginabili.
Si pensi ad esempio ai flash loan, prestiti finanziari di qualunque entità che vengono corrisposti senza bisogno di fornire alcuna garanzia (la garanzia di restituzione è intrinseca nell’esecuzione), offerti dalle piattaforme di finanza decentralizzata, oppure alle stablecoin algoritmiche (ne parleremo in dettaglio in uno dei prossimi post).
Ma fino a che punto sono “Smart”?
Sicuramente lo sviluppo della tecnologia li renderà sempre meno evidenti, ma ad oggi sugli Smart Contract pesano alcuni limiti di carattere tecnico e giuridico:
– possibilità di attacchi informatici
Il fatto che il loro codice sia accessibile pubblicamente e la grande quantità di valore che spesso gestiscono rende gli Smart Contract particolarmente appetibili ad attacchi informatici. Per questo, richiedono una particolare attenzione alla sicurezza durante la fase di implementazione del codice, prima cioè che lo smart contract venga caricato su blockchain e diventi immutabile.
– accessibilità totale delle interazioni
Come sappiamo, le informazioni registrate su blockchain sono sempre pubblicamente accessibili e questo vale anche per gli Smart Contract. Questo significa che è sempre possibile tracciare, seppur in maniera pseudonima, le interazioni tra un utente e uno Smart Contract e verificarne gli effetti sullo stato della blockchain. Diviene allora necessario tutelare la privacy degli utenti con soluzioni specifiche, tema su cui la community è molto attiva.
– costo elevato
Ogni operazione su blockchain ha un costo. Per questo motivo la codifica di regole va analizzata a priori. Elaborazioni troppo complesse possono aumentare i costi al punto tale da rendere sconveniente l’utilizzo di questa tecnologia per un determinato campo di applicazione (le nuove soluzioni di “layer 2” o le sidechain nascono proprio con lo scopo di risolvere questo problema)
– incertezza dello stato giuridico
I contratti tradizionali fanno riferimento ai singoli sistemi giuridici nazionali, mentre gli Smart Contract sono su blockchain, cioè su un registro pubblico “universale”. Questo rende spesso controverso stabilire la legislazione di riferimento
Quest’ultimo limite apre un capitolo fondamentale nella definizione degli Smart Contract: la loro validità a livello giuridico.
Questa è determinata da un lato dalle caratteristiche degli Smart Contract rispetto ai contratti tradizionali, legalmente vincolanti, e dall’altro dal riconoscimento ufficiale degli Smart Contract come strumento normativo.
Ecco i punti fermi che sono perno di tutte le discussioni sul tema.
Rispetto ad un contratto tradizionale, lo Smart Contract:
Come strumento normativo, lo Smart Contract:
Dal punto di vista normativo, in realtà, le cose non sono così immediate e lineari.
Senza dubbio, la consapevolezza di quanto gli Smart Contract siano utili ed efficienti come strumento contrattuale e di quanto sia urgente una loro regolamentazione giuridica sono ormai ampiamente diffuse.
In Europa e negli USA ci sono apposite commissioni che lavorano proprio per valutarne l’impatto e il valore legale ed esistono specifiche norme in merito.
L’Italia detiene il primato di secondo paese dell’Unione Europea, dopo Malta, ad aver riconosciuto lo status giuridico degli Smart Contract, anche nell’ottica di favorirne l’adozione e la diffusione tra le imprese.
Il primo recepimento ufficiale di questo strumento nella nostra normativa è comunque molto recente.
Tecnologia blockchain e Smart Contract fanno il loro ingresso nel nostro ordinamento nel 2019, con la conversione in legge (Legge 11 febbraio 2019, art. 8-ter) del “Decreto semplificazioni”. C’è però un problema di fondo: il decreto delega all’Agenzia per l’Italia Digitale la definizione degli standard tecnici per il pieno riconoscimento giuridico di queste innovazioni e questi standard purtroppo non sono ancora ad oggi disponibili.
Se l’accordo tra le parti avviene a livello nazionale, la legislazione di riferimento è naturalmente quella del paese di appartenenza dei contraenti.
Cosa succede però quando, come spesso avviene, lo Smart Contract definisce una relazione contrattuale che valica i confini nazionali?
Qual è in questo caso la legislazione di riferimento?
Il Regolamento UE “Roma I” fissa alcuni principi generali di supporto alla corte per stabilire di caso in caso la normativa cui riferirsi. Stabilisce, ad esempio, che il contratto deve essere regolato secondo la legge del Paese dove ha residenza il fornitore del servizio o, in casi residuali, dove risiede la parte che fornisce la “prestazione più caratteristica”.
Questi non sono che i primi passi verso il pieno recepimento e riconoscimento degli Smart Contract a livello legislativo.
La strada per una piena valorizzazione di questo strumento e delle sue potenzialità come strumento giuridico e contratto a tutti gli effetti è però ancora lunga.
Alcuni immaginano che l’evoluzione degli Smart Contract sarà segnata dalla creazione di uno strumento ancora più evoluto, che unirà i vantaggi della rigida struttura e trasparenza del protocollo informatico con la flessibilità e la consistenza giuridica dei contratti tradizionali.
In un mondo sempre più digitalizzato e globalizzato, in ogni caso, il ruolo nelle relazioni contrattuali non potrà non divenire sempre più incisivo, grazie alle condizioni di assoluta efficienza, trasparenza e verificabilità che la blockchain garantisce.
Se vuoi continuare a scoprirli e restare sempre aggiornato su questa tecnologia innovativa, che già racconta come sarà il futuro, seguici e iscriviti alla nostra Newsletter!