Smart contracts, guida semplice ma completa ai contratti intelligenti

Da quando sono nate le criptovalute abbiamo visto sempre di più l’attenzione dell’economia digitale decentralizzata spostarsi verso altro che non siano le valute elettroniche.

Abbiamo visto ad esempio Ripple utilizzare questo tipo di architettura informatica per aiutare alcune delle maggiori banche al mondo a spostare denaro di qualsiasi genere da un conto corrente all’altro senza passare per i depositi interbancari; abbiamo visto, soprattutto, nascere progetti come Ethereum dedicarsi allo sfruttamento di blockchain per creare dei contratti intelligenti.

In questa guida vogliamo fare chiarezza sugli smart contracts, spiegandoti in modo semplice ma completo tutto quello che devi sapere sul loro funzionamento e sul modo in cui vengono gestiti da delle reti di nodi coordinati da una blockchain.

In molti sostengono che questo tipo di soluzione sarà una di quelle che l’umanità si porterà dietro dopo tutta la fase speculativa delle crypto, in cui anziché al vero valore di un progetto si è guardato soltanto a quanto interessante fosse investirci.

Cos’è uno smart contract

Uno smart contract è un contratto in grado di rimuovere tra le due parti la necessità di avere fiducia l’una nell’altra, in quanto tutto quanto viene regolato attraverso un meccanismo informatico che consente a chi esegue una prestazione (es. consegnare un paio di scarpe a domicilio) di ricevere immediatamente la controprestazione (ricevere il denaro) e viceversa.

Anche nel caso in cui la prestazione non venisse eseguita nei modi e nei tempi segnati dal contratto, infatti, sarà regolato automaticamente l’eventuale risarcimento che spetta a chi l’aveva commissionata.

In fondo sono dei contratti normali, come quelli che si fanno tutti i giorni tra privati o tra aziende.

L’unica differenza è che nel caso in cui qualcuno dovesse venire meno ai suoi obblighi, il sistema informatico regolerà da sé la questione senza bisogno di avvocati o giudici.

I contratti tradizionali, infatti, sono utili per tutelarsi e mettere in chiaro i termini con cui ciascuna delle due parti si impegna a fare qualcosa; quando c’è qualche problema, però, le procedure legali per ottenere quanto promesso da chi si è impegnato sono molto costose.

In Italia, al problema dei costi per l’assistenza legale si somma il problema non trascurabile dei tempi lunghissimi della giustizia.

In molti casi, a pagare di più le conseguenza del mancato rispetto di un contratto è chi ha rispettato tutti i termini.

cosa sono gli smart contracts

Uno smart contract è un contratto in grado di essere regolato da un algoritmo che funge da giudice

Da una parte è chiaro che ci sia un’enorme convenienza a gestire i contratti in automatico, specie quelli che riguardano piccole somme o semplici prestazioni per le quali non si sarebbe comunque disposti a intraprendere un percorso legale in caso di mancato rispetto dei termini contrattuali della controparte.

Dall’altra bisogna dire che, così come sono strutturati oggi, gli smart contracts non sono molto facili da gestire e questo sta rendendo molto difficile la loro adozione.

Come funzionano gli smart contracts

Il funzionamento di un contratto intelligente è abbastanza comprensibile per chiunque, anche se coinvolge alcune delle tecnologie più recenti e il sistema decentralizzato per la convalida dei singoli punti del contratto.

Per semplificare il più possibile senza perdere nessun passaggio, dobbiamo costruire il discorso mattoncino dopo mattoncino. In ogni paragrafo, che costituisce un mattoncino, ci collegheremo al precedente per comprendere come siano legate tra loro le singole dinamiche.

Pronto? Cominciamo.

Elemento fondamentale: la decentralizzazione (con o senza blockchain)

Prima di tutto dobbiamo capire in quale contesto nascono, si creano e vengono regolati gli smart contracts.

L’elemento fondamentale è la decentralizzazione, che può essere regolata da una blockchain – come nel caso di Ethereum – oppure da un altro sistema di convalida, come quello di Ripple o di IOTA.

Questi ultimi non prevedono la possibilità di eseguire contratti smart con i loro applicativi, ma offrono delle soluzioni per la convalida delle transazioni che potrebbero eventualmente venire applicate anche in questo campo.

La rete di nodi decentralizzati connessi tra loro svolge, nel caso dei contratti intelligenti, il ruolo di giudice imparziale e democratico.

Secondo il codice che regola la rete, questi andranno a verificare il rispetto dei termini contrattuali da parte di entrambe le parti in causa ed eventualmente si occuperanno di gestire pagamenti o altro.

Per questo la decentralizzazione è fondamentale: grazie alla democrazia insita alle reti create con blockchain, nessun nodo ha il potere di prendere decisioni di parte o corrotte; tutti i nodi devono comportarsi in maniera uguale ed imparziale, in modo da poter innescare con la crittografia la convalida di quanto scritto nel codice del contratto.

Quando la maggioranza dei nodi convalida un’operazione, questa viene aggiunta alla blockchain e si passa alla gestione di eventuali controprestazioni che nascono dal fatto di aver portato a termine con successo quell’operazione.

In sintesi.

La rete decentralizzata, tramite votazione democratica e basata sulla crittografia di quanto scritto nel contratto, svolge il ruolo di giudice imparziale.

Come si scrive uno smart contract

Ogni piattaforma che permette di eseguire dei contratti intelligenti prevede che questi siano scritti con un certo linguaggio informatico, che varia proprio a seconda della piattaforma considerata.

Nel caso di Ethereum, il progetto che per distacco ha fatto più strada tra tutti quelli che si sono interessati a questi nuovi modelli contrattuali, il codice di riferimento è il linguaggio di programmazione Solidity.

Questo è stato costruito proprio pensando alla contrattazione, e nella sua componente più tecnica si ispira molto al C++.

Ovviamente la scrittura presuppone che ci sia anche un luogo virtuale in cui bisogna inserire lo smart contract affinché esso possa entrare in contatto con la blockchain o con qualsiasi altro sistema di controllo e convalida dei suoi termini.

Solitamente è sufficiente scaricare l’applicativo, come nel caso di Ethereum,  ed utilizzare la funziona apposita per eseguire il contratto intelligente.

Dal momento in cui verranno richieste delle prestazioni da tutti i nodi connessi per convalidare le singole prestazioni del contratto ed i relativi pagamenti, occorre solitamente versare delle piccole commissioni che serviranno a ricompensare i nodi coinvolti nel processo di convalida.

smart contracts come crearli

Per creare uno smart contract è necessario utilizzare un linguaggio di programmazione specifico per ogni piattaforma.

Scrivere o comprendere un linguaggio di programmazione che, per altro, ha anche poca diffusione al di fuori dell’ambito dei contratti intelligenti, non è ovviamente cosa da tutti.

Ecco perché ad oggi sono in molti a chiedere a qualcun altro di scrivere i contratti al posto loro, una specie di notaio o avvocato dell’informatica.

Il problema di questa soluzione, oltre al costo del professionista, è che viene meno quell’elemento molto importante per cui nascono gli smart contract: la sicurezza al di là di ogni fiducia.

Scrivendo in termini sbagliati il contratto, il professionista potrebbe causare un danno notevole; si potrebbe pensare di fare un contratto tradizionale con il professionista, costringendolo a rispondere in caso di danni, ma sarebbe una soluzione piuttosto assurda dal momento in cui a quel punto si potrebbe semplicemente fare un contratto tradizionale con la diretta controparte e saltare l’intermediario.

Come si lancia uno smart contract

Una volta che il contratto è definito nei suoi termini ed è stato scritto, molto probabilmente quello che vorrai sapere subito dopo è in che modo puoi porre in essere il contratto e fare in modo che questo abbia validità. Questa parte del processo è piuttosto semplice:

  • Una volta che il contratto è pronto, i nodi che sono coinvolti devono accettare tutti la stessa copia del contratto; dal momento in cui la copia è custodita dalla blockchain della rete su cui viene approvata, non ci sono dubbi sul fatto che tutti abbiano la stessa copia.
  • Quando tutti i nodi hanno approvato il contratto, pagando la dovuta somma di Ether o di altra criptovaluta si potrà porre in essere del tutto. La somma pagata verrà riconosciuta ai nodi che presteranno la potenza di calcolo necessaria a verificare l’esecuzione dei singoli termini.

A questo punto tutto quanto sarà operativo e definitivamente in grado di essere gestito dalla rete decentralizzata.

come funzionano gli smart contracts

Gli smart contracts sono sicuri?

Dal momento in cui viene scritto e approvato correttamente, un contratto intelligente è la forma più sicura di contratto che si possa stipulare tra due parti.

L’unica fonte di insicurezza riguarda proprio la stesura del contratto, in quanto non devono essere commessi errori: il sistema non permette di fare dietrofront una volta che le due parti hanno annunciato di essere d’accordo sull’esecuzione della scrittura.

Soltanto se le due parti sono entrambe d’accordo sarà possibile recedere.

Limiti dei contratti intelligenti

Per quanto intelligenti, i contratti smart non sono ancora arrivati al livello di poter completamente sostituire i contratti tradizionali.

Questo perché il giudice imparziale costituito dalla blockchain non è in grado di valutare alcuni aspetti che, invece, nel diritto italiano e non solo vengono garantiti dal momento in cui si chiede alla legge di intervenire sulla validità di una scrittura avente valore legale.

Un esempio tipico è quello del contratto invalido.

Immaginati di essere entrato in un concessionario per comprare una macchina a tua figlia, appena diciottenne, e di aver esplicitamente chiesto al negoziante di avere una vettura che sia a norma di legge per essere guidata da una neopatentata.

Il venditore ti indica una macchina, la provi insieme a tua figlia e decidete di acquistarla: nel momento in cui la polizia la ferma per strada, tuttavia, venite a scoprire che il venditore ha sbagliato o vi ha mentito.

In questo caso, aver stipulato un contratto tradizionale vi permette di portare la questione di fronte ad un giudice: riuscendo a provare che il venditore si è sbagliato o ha mentito, il contratto sarà considerato annullabile ed avrai diritto ad un risarcimento di tutti i soldi pagati per la macchina e dei danni annessi.

Un contratto intelligente conosce soltanto i numeri e le condizioni vincolanti scritte tramite codice, per cui si pone un problema di non poco conto per quanto riguarda la possibilità di annullare il valore di un contratto.

Anche il fatto che per legge i minorenni non possano stipulare certi tipi di contratto è un limite: dal momento in cui le reti decentralizzate assicurano un grande livello di anonimato, non è detto che un minorenne non possa compiere azioni a lui non consentite sfruttando la discrezione dei sistemi digitali.

Insomma, quello che nel complesso non è ancora performante nell’ecosistema dei contratti intelligenti riguarda soprattutto il modo con cui questi dovrebbero inserirsi all’interno di un sistema legale che ha delle leggi molto chiare. Affinché Ethereum o un progetto simile possano.

Gli smart contracts e le app decentralizzate

Uno degli sviluppi più interessanti dei contratti intelligenti vede questo tipo di tecnologia venire integrata all’interno delle app decentralizzate.

A conti fatti, questo è un sistema molto intelligente perché consentirebbe a tutti di sfruttare le app per rendere molto semplice la scrittura dei contratti, mentre gli sviluppatori di queste app mantengono decentralizzato lo schema di funzionamento e guadagnano dalla differenza tra le commissioni fatte pagare ai loro utenti ed il costo per mantenere operativa su blockchain la loro app decentralizzata.

In questo momento esistono oltre 2.000 app decentralizzate che si basano sull’architettura dei contratti intelligenti di Ethereum.

Queste app servono funzioni diverse: c’è chi ha creato un Uber completamente decentralizzato, chi ha semplicemente dato un’interfaccia grafica intuitiva per poter creare contratti intelligenti di qualsiasi tipo semplicemente accedendo all’applicazione.

Grazie alle app decentralizzate, in futuro tutti potranno creare degli smart contracts in modo facile e veloce: in realtà questo viene reso possibile già oggi, ma dovrà necessariamente passare del tempo prima che questa tecnologia si diffonda in modo capillare tra i suoi potenziali utenti.

Probabilmente in futuro vedremo molti più contratti intelligenti venire dispiegati, semplicemente non nella forma corrente.

Questi verranno liberamente creati tra tutti gli utenti ricorrendo a delle app dedicate, in modo da non aver bisogno di conoscere complessi linguaggi di programmazione e senza ricorrere all’ausilio di un programmatore con nozioni di diritto civile.

Mantenendo decentralizzate queste app, ovvero facendo in modo che queste continuino ad essere operate sulla blockchain di un progetto più grande, questo non significherà in ogni caso rinunciare alla privacy e alla possibilità di non riporre fiducia nella controparte o in un qualsiasi attore coinvolto nel contratto.