Anatomia di uno smart contract

Come "si fa" uno smart contract?

Servono:
1) Lingua codice per comporre il contratto
2) Un network di registri distribuiti per "inviarlo"
3) Elaborazione/Esecuzione 

Gli smart contracts funzionano attraverso dei software per la codificazione, quindi è molto importante programmarli in modo che il contratto rifletta la volontà delle parti. Il codice non ha le sfumature del linguaggio umano e, per gli smart contracts, si usa una logica "if-this-than-that". Una volta composto, il codice è inviato attraverso un network di registri distribuiti (distributed ledgers), come usa ad esempio la tecnologia blockchain.
Quando uno dei computer di questa rete di registri riceve il codice, verifica i risultati dell'esecuzione del codice e così fa ogni computer della rete. Se il 50% +1 dei computer della rete concorda sulla verifica, allora la rete aggiorna i registri. 


Il Libro Bianco sugli smart contracts identifica sei caratteristiche tipiche.

1) IDENTIFICARE L'ACCORDO
Più parti identificano un'opportunità cooperative e un risultato condiviso
2) IMPOSTARE LE CONDIZIONI
Gli smart contracts potrebbero essere iniziati dalle parti stesse oppure al verificarsi di certe condizioni come, ad esempio il raggiungimento di un certo indice in un mercato finanziario, un disastro naturale, un evento che si verifica a certe coordinate GPS
3) METTERE IN CODICE LA LOGICA DEL BUSINESS
Il programma è scritto in modo tale per cui l'esecuzione dell'accordo si avvierà al verificarsi delle condizioni prestabilite


4) CRITTOGRAFIA E TECNOLOGIA BLOCKCHAIN

La crittografia assicura l'autenticazione e la verifica dei messaggi tra le parti di uno smart contract
5) ESECUZIONE ED ELABORAZIONE
In una iterazione blockchain, quando si raggiunge il consenso sull'autenticazione e la verifica, lo smart contract viene scritto in un blocco. Il codice viene eseguito e i risultati vengono fissati per consentire verifiche 
6) AGGIORNAMENTI DEL NETWORK
Dopo l'esecuzione di uno smart contract, tutti i computer del network aggiornano i propri registri al nuovo stato. Una volta che il record è verificato e postato nel blockchain, non può essere alterato.

Per capire come funziona uno smart contract, ci serve un minimo di lessico specifico, niente di terrificante.
Copio da Wikipedia: "una blockchain è un database distribuito che mantiene in modo continuo una serie crescente di records, i quali fanno riferimento ai records precedenti presenti nella stessa lista. E' fatto di blocchi che memorizzano blocchi di transazioni valide recenti correlate da un marcatore temporale (timestamp). Ogni blocco include l'hash del blocco precedente, collegando i blocchi insieme. I blocchi collegati formano una catena, con ogni blocco addizionale che rinforza quelli precedenti"


Quindi, per iniziare uno smart contract, la tecnologia blockchain usa una chiave crittografica pubblica e, allo stesso tempo, genera una chiave crittografica privata per l'iniziatore del contratto (o meglio per il suo indirizzo ip). 

Se l'iniziatore vuole far partire uno smart contract, usa il suo indirizzo per inviare un messaggio di avvio, criptato con la sua chiave privata. Il messaggio è raccolto dai computer della rete, chiamati nodi.
I messaggi che partono dall'indirizzo dell'iniziatore possono essere autorizzati solo dalla sua chiave privata, mentre gli altri usano la chiave pubblica per verificare che lo smart contract sia stato iniziato dall'iniziatore in possesso della chiave privata e per autenticarne il contenuto.

Come sempre, un'immagine vale più di mille parole:
Credit: White Paper on Smart Contracts





Secondo Nick Szabo, uno smart contract è ”un insieme di promesse specificate in forma digitale che includono dei protocolli all’interno dei quali le parti adempiono le promesse”.

Nel Libro bianco sugli smart contracts viene offerta una piccola esegesi di questa definizione che mi sembra utile riportare qui di seguito.
-          Un insieme di promesse
A seconda del modello di smart contract impiegato, tali promesse possono essere contrattuali o non-contrattuali (ecco perché non ho tradotto promises con obbligazioni). Alcune di queste promesse sono nient’altro che operazioni basate su alcune regole predefinite, concepite secondo una logica di business.
-          Specificate in forma digitale
Uno smart contract è formato da linee di codice e dal software in cui il codice è incorporato (embedded). Le clausole contrattuali e,o i risultati funzionali sono incorporati nel software.
-          protocolli
Un protocollo, in questo caso, è un algoritmo, cioè un insieme di regole che stabiliscono come le parti dovrebbero processare i dati relativi a uno smart contract e quali devono essere gli output di determinati input.
-          All’interno dei quali le parti adempiono le promesse
L’idea di esecuzione automatica è il cuore dello smart contract. Smart contract, anche grazie alla tecnologia sottostante (ovvero al blockchain) sono normalmente considerati irrevocabili. Una volta iniziato, i risultati per i quali uno smart contract è stato codificato non possono generalmente essere fermati.

D'accordo. Ma siamo sicuri che uno smart contract sia legalmente vincolante?
Cosa succede se concludo uno smart contract scritto interamente in codice? E' vincolante?

Immaginate i possibili smart contracts come su uno spettro. Da un lato c'è un contratto che incorpora dei meccanismi di pagamento automatici. Questo è il tipo di contratto che va verso l'automazione. Pensate insomma ad una vending machine ed evolvetela.
Dall'altra parte dello spettro però c'è un contratto che alterna lingua corrente al codice (lingua umana e lingua macchina), quindi un contratto scritto in due versioni, una in lingua corrente, una in codice, ed infine un contratto scritto interamente in codice.
Ecco lo schema:
Credit White Paper on smart contracts

Mentre un contratto scritto interamente in codice pone nuove sfide all'ermeneutica giuridica, gli altri tipi di contratti sono decisamente più semplici da qualificare giuridicamente perché la lingua corrente è la lingua del contratto.
In entrambi i casi, mi sembrerebbe avventato sostenere che gli smart contracts faranno piazza pulita del codice civile e dei principi generali dei contratti. Alcune nozioni fondanti come, ad esempio, offerta, accettazione, esecuzione, non saranno verosimilmente modificate, ma andranno interpretate in un nuovo campo d'azione.

Pensate a cosa ci viene in mente quando pensiamo ad un'obbligazione.
E lasciatemi citare Giustiniano che, per una giurista, non fa mai male: l'obbligazione è un vincolo giuridico in forza del quale si può costringere taluno all'adempimento di una prestazione, secondo le leggi del nostro Stato
Per i puristi: obligatio est juris vinculum quo necessitate adstringimur alicuius rei solvendae secundum nostrae civitatis jura.

E adesso guardate qua: un'obbligazione!

La figura mostra il micro-processo per lo sviluppo di un'obbligazione usando il BPMN Business Process Modeling Notation. 
E' abbastanza intuitivo, comunque il cerchiolino verde segna l'inizio del processo, quello rosso la fine. i rettangoli sono i task e i rombi con le X rappresentano delle scelte alternative.

Quindi, qual è l'anatomia di uno smart contract?

Ecco cosa si trova sul web e, a questo punto, spero che riusciate a leggerlo.








Nessun commento:

Posta un commento