Definizione, caratteristiche, funzionamento e validità degli smart contract

Definizione, caratteristiche, funzionamento e validità degli smart contract

Definizione e caratteristiche

Gli smart contract sono ancora orfani di definizione formale. L’idea di smart contract viene presentata per la prima volta da Nick Szabo nel 1994, dove Szabo considera i distributori automatici come i diretti discendenti degli smart contract: il distributore, una volta che l’utente ha introdotto le monete, riesce a erogare il prodotto e il resto, seguendo uno schema di procedure riconducibile a un FSA, Finite State Automata o automa a stati finiti, ossia un automa in grado di descrivere in maniera formale il comportamento di un sistema. Allo stesso modo, quando uno smart contract viene invocato, quest’ultimo fornisce un risultato deterministico dati in ingresso degli input.

Definizione, caratteristiche, funzionamento e validità degli smart contract

In aggiunta a questo primo concetto di smart contract, negli ultimi anni in molti hanno cercato di dare una definizione quanto più precisa e moderna: se ne possono trovare alcune più recenti che cercano di inquadrare il più possibile il concetto, che di per se è molto semplice, pur mancando tutt’oggi una definizione formale degli smart contract e della loro semantica operazionale. Uno spunto interessante, da cui partire ad analizzare alcuni aspetti chiave degli smart contract e iniziare a formalizzare una definizione, viene dato da Gendal ed è la seguente: “A smart-contract is an event-driven program, with state, which runs on a replicated, shared ledger and which can take custody over assets on that ledger”.

Scomponendo questa frase, è possibile ricavare alcuni aspetti chiave di uno smart contract. A smart-contract is an event-driven program: come si evince da questo estratto, lo smart contract viene identificato come un programma, quindi come codice eseguibile e interpretabile da una macchina, non più come un semplice dato passivo facente parte di una determinata blockchain, ma come un programma attivo che risponde a degli stimoli esterni (event-driven). Un’altra caratteristica importante è la presenza di uno stato del contratto, che può essere cambiato da transazioni o anche dal contratto stesso. E’ lecito dire, pertanto, che gli smart contract incapsulano lo stato, similmente agli oggetti nella programmazione orientata a oggetti.
Si può aggiungere altro alla definizione che si sta cercando di creare grazie a Greenspan. Lo smart contract riesce a rappresentare la business logic sotto forma di programmi e gli eventi che attivano quella logica vengono rappresentati come messaggi, o più precisamente transazioni, scambiati tra questi programmi e gli utenti finali.
La logica introdotta da un smart contract deve essere rispettata da qualsiasi transizione invochi quel determinato contratto: qualora una transazione non rispettasse ciò che il codice implementa, l’invocazione genererebbe un errore e la transazione non andrebbe a buon fine.

Non esiste un linguaggio di programmazione standard per quanto riguarda gli smart contract: ogni blockchain ha il proprio linguaggio di programmazione messo a disposizione agli sviluppatori, ognuno con pro e contro. Lo smart contract, una volta programmato, deve essere messo sulla blockchain: questo è possibile tramite una transazione di deploy e, una volta che il contratto viene correttamente registrato sulla blockchain, esso diventa accessibile a tutti tramite un indirizzo che gli viene assegnato dal protocollo e restituito al mittente come risultato della transazione di deploy.

Riassumendo, lo smart contract:

  • è un programma che risponde a eventi esterni, con variabili che gestiscono lo stato dello stesso, raggiungibile tramite indirizzo assegnatoli dalla blockchain;
  • incarna una logica applicativa e dà una rappresentazione agli eventi che attivano quella logica;
  • tramite questa logica, valida le transazioni che invocano quel contratto;
  • è programmabile utilizzando diversi linguaggi di programmazione, in base all’implementazione della blockchain.

Validità legale degli smart contract

C’è inoltre in atto un dibattito sulla questione della validità legale di uno smart contract in sede di tribunale. Anche se uno smart contract può modellare delle leggi o garantire le clausole contrattuali, in tribunale un codice di un programma può risultare non comprensibile da tutti. Questa situazione porta a porsi una domanda: “Si può sviluppare uno smart contract in modo tale da essere compreso anche da chiunque?”. Una risposta è il cosiddetto Ricardian contract. Proposti da Iam Grigg, i Ricardian contracts incarnano l’idea di scrivere un documento che sia comprensibile e accettabile sia da una macchina che da un tribunale. Un Ricarian contract gode delle seguenti proprietà:

  • un contratto rilasciato da un ente;
  • è facilmente leggibile da chiunque, come se fosse un contratto cartaceo;
  • è interpretabile da una macchina;
  • è firmato digitalmente;
  • ogni contratto possiede un identificatore univoco.

Questo tipo di contratto corrisponde ha un documento che contiene i termini contrattuali, scritti in linguaggio legale insieme a delle parole chiave comprensibili dalle macchine. Il documento viene poi firmato digitalmente da chi ha creato il contratto usando la sua chiave privata. Una volta firmato, viene generato il suo hash che lo identificherà e verrà usato e firmato dalle parti che useranno quel contratto come riferimento a una transazione.

Un Ricardian contract si differenzia da un normale smart contract per il fatto che quest’ultimo non contiene alcun documento contrattuale e il suo scopo è principalmente quello di eseguire codice che rispecchi il contratto. Al contrario, il Riccardian contract pone la sua attenzione alla ricchezza semantica. Questa semantica può essere divisa in due parti: semantica operazionale e semantica delle denotazioni. La semantica operazionale va a definire l’esecuzione del contratto, mentre la seconda va a “interfacciare” il contratto con il mondo reale.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *