Genericamente la Blockchain rappresenta una struttura dati condivisa e immutabile. Essa rappresenta un registro digitale – ledger - aperto e distribuito, all’interno del quale le voci sono raggruppare in blocchi, uniti l’uno all’altro in ordine cronologico, in modo da creare una catena digitale di informazioni ordinate digitalmente.
In tal modo si distribuisce la gestione di un database superando lo schema tradizionale della gestione centralizzata dei dati.
Qualsiasi genere d’informazione o dato può essere digitalmente rappresentato, incluso uno smart contract ed essere contenuto e conservato all’interno di una piattaforma Blockchain.
Caratteristiche della blockchain e dello smart contract
Tra le caratteristiche della Blockchain vi rientrano l’immodificabilità, l’affidabilità e la sicurezza che, in tema di smart contract, rappresentano i punti chiave per l’adempimento corretto dello stesso.
Lo smart contract è basato sull’impostazione if-then. Il “codice informatico”, che utilizza un linguaggio alfa numerico, rappresenta un set di istruzioni con la descrizione di condizioni al verificarsi delle quali – if - then - vengono automaticamente attivate specifiche azioni, anch’esse definite nel codice informatico. Il codice informatico viene conservato sulla Blockchain, così come le transazioni sono preservate normalmente su altre catene di controllo.
Il segnale che determina l’esecuzione delle istruzioni registrate in uno smart contract, cioè l’adempimento dello stesso, può dipendere da variabili interne allo stesso, e cioè:
- dalla successione di avvenimenti già compresi all’interno del codice informatico (come, ad esempio, lo spirare di un termine), ma anche
- da circostanze esterne (per esempio, un tasso di interesse).
In tale seconda ipotesi è necessario l’intervento di un elemento esterno alla Blockchain (il c.d. “Oracolo”) che costituisce un collegamento tra la Blockchain e il mondo reale e permette la verifica del soddisfacimento delle condizioni esterne.
Cos’è l’oracolo
L’Oracolo quindi è una fonte di dati affidabile e certificata che fornisce sostegno per l’esecuzione (o la non esecuzione) dello smart contract, inviando alla Blockchain informazioni relative al mondo reale che riguardano circostanze dedotte nel codice informatico quali presupposti per l’esecuzione del contratto.
Esistono due grandi classificazioni per gli Oracoli Blockchain a seconda della fonte da cui ottengono questi dati.
Oracoli software
Questi sono gli Oracoli più popolari e funzionano collegati a fonti di informazioni online come database, server, pagine Web, ecc.
Oracoli hardware
Questi Oracoli funzionano collegati a fonti di informazione nel mondo fisico, come scanner di codici a barre o sensori elettronici, e “traducono” gli eventi del mondo reale in valori digitali in modo che possano essere compresi da uno smart contract.
Alcuni esempi
Evidenziamo alcuni esempi.
Smart contract per fornitura e pagamento energia elettrica
Uno smart contract può essere utilizzato nella fornitura e nel pagamento di energia elettrica: al consumo registrato dal contatore (che, in questo caso, rappresenta l’Oracolo che collega il codice informatico alla realtà esterna) ne consegue una bollettazione precisa e un puntuale pagamento della fattura.
Smart contract per pagamento automatico di una certa cifra post ricezione merce
Uno smart contract prevede il pagamento automatico di una certa cifra da A verso B come corrispettivo per una merce che B fornisce ad A.
In questo caso la gestione del pagamento è interamente effettuata sulla base di informazioni presenti sulla Blockchain stessa (verificare che A abbia abbastanza fondi per effettuare il pagamento).
Tuttavia la semplice logica presente in questo smart contract (se A riceve la merce si proceda al trasferimento delle somme da A a B) necessita di un’informazione che non è presente sulla Blockchain: il fatto che A abbia ricevuto la merce. Alcune piattaforme Blockchain utilizzano pertanto la figura dell’Oracolo per risolvere tale problema, in tal caso l’Oracolo potrebbe essere collegato all’informazione fornita dallo spedizioniere, il quale acquisisce la conferma di consegna tramite la firma di A.
Quindi lo smart contract dovrebbe verificare la firma di A, la firma dello spedizioniere, ecc…
Smart contract per stipulare o eseguire un contratto di assicurazione
Uno smart contract è utilizzato per stipulare ed eseguire un contratto di assicurazione antincendio su una casa.
Il contratto tra le due parti, proprietario della casa e compagnia di assicurazione, stabilisce che, se la casa va a fuoco, l’assicurazione pagherà al proprietario una certa cifra.
Da questa fattispecie si ricavano tre elementi: una polizza attiva, un controllo nei confronti dello stato della casa e, se si verifica la condizione di incendio, l’obbligo da parte della compagnia di assicurazione di indennizzare il contraente della polizza (if-then).
Nei contratti “ordinari” prima di liquidare la polizza è necessario accertare una serie di elementi come:
- Su quale conto bancario la compagnia assicuratrice deve pagare l’indennizzo
- Se la polizza è ancora attiva
- Se i contraenti hanno sempre rispettato i propri obblighi
- Se chi presenta il reclamo è veramente l’assicurato
- Se la compagnia assicurativa ha i fondi per indennizzare l’assicurato e, soprattutto, accertarsi se la casa è veramente bruciata.
Quest’ultima verifica richiederà l’attestazione di una fonte esterna e terza, che nello specifico potrebbero essere i vigili del fuoco.
Solo dopo tutte queste verifiche la polizza verrà liquidata all’assicurato.
Se invece il contratto di assicurazione assumerà la veste di uno smart contract esso sarà in grado di verificare in maniera autonoma tutti gli elementi che abbiamo elencato sopra in quanto:
- potrebbe garantire la presenza di fondi nel conto corrente della compagnia di assicurazione
- darà certezza dell’indirizzo della casa dell’assicurato che è bruciata
- darà conto dello stato dei pagamenti della polizza (sapere quindi se è attiva o meno)
Sussisterebbe però, comunque, un elemento incerto che deve essere verificato da una fonte esterna alla Blockchain ed è l’effettiva distruzione della casa a causa di un incendio.
In questo caso sarebbero i vigili del fuoco che, come fonte esterna e terza allo smart contract, costituirebbero l’Oracolo e darebbero l’input allo smart contract comunicando l’avvenuta distruzione della casa a causa dell’incendio dando così il via all’esecuzione finale del pagamento dell’indennizzo assicurativo.
Responsabilità per inadempimento dell'Oracolo
Potrebbe avvenire che un singolo Oracolo possa essere scorretto nel fornire le informazioni richieste ed agire in modo pregiudizievole nei confronti dello smart contract e dei soggetti parti dello stesso.
Se ciò si dovesse verificare tale comportamento andrebbe ad intaccare il concetto della fiducia diffusa che sta alla base della Blockchain e quindi, in questo caso, dello smart contract.
In questi casi “l’intelligenza” dello smart contract è direttamente proporzionale (o strettamente correlata) all’intelligenza/etica/onestà dell’Oracolo, che può fare prendere allo smart contract una direzione per adempiere oppure un’altra.
Nonostante la negatività derivante dal comportamento illecito dell’Oracolo, se si volesse trovare un dato positivo da questa situazione patologica, al di fuori della fattispecie singola, si deve far notare che la Blockchain su cui è inserito lo smart contract, allo stesso tempo traccia in modo indelebile l’attività dell’Oracolo ed i suoi input. Quindi se un Oracolo effettua più di una volta degli input falsi e sbagliati, tutto questo è scritto e salvato in modo ben in chiaro nella Blockchain così che la comunità della chain potrà segnalare l’Oracolo come fraudolento ed escluderlo da qualsiasi altro contratto.
Inoltre si avrebbero le prove incancellabili per denunciare l’Oracolo e chiedergli un risarcimento del danno per dolo o per colpa.
Consigli per una buona pratica di utilizzo degli smart contract
Nella pratica, per ridurre al minimo questa possibilità, è consigliabile che lo smart contract interroghi più Oracoli indipendenti allo scopo di verificare l’informazione richiesta da più fonti, avendo così maggiori garanzie di obiettività e veridicità.
Anche l’Oracolo stesso può essere strutturato per interrogare più fonti al fine di accertare il verificarsi di fattori esterni alla Blockchain (ad esempio, un data feed per ricevere dati aggiornati per esempio su un tasso di interesse, un sensore che trasmette dati atmosferici quali temperatura e umidità, un GPS che trasmette una posizione, oppure un organismo terzo che gestisce un conflitto).
La responsabilità personale dell’Oracolo dipende anche dal fatto se esso si sia reso o meno parte attiva nel fornire le informazioni necessarie allo smart contract.
- Se le parti dello smart contract hanno fatto semplicemente affidamento, ad esempio ad un sito istituzionale come quello della borsa valori – che in questo caso svolge la funzione di Oracolo istituzionale, che rimane di fatto estraneo al rapporto contrattuale, la responsabilità dei dati sussiste solo se si dimostra che erano falsi o scorretti.
- Se invece l’Oracolo è un imprenditore che svolgendo la propria attività, stipula un accordo con le parti dello smart contract e fornisce una prestazione non adeguata(colpa o volutamente scorretta, dolo) la responsabilità sulla fattispecie concreta è più immediata, diretta ed evidente a carico dell’Oracolo.
Nell’ambito del principio di conservazione del contratto, in tema di Integrazione del contratto ex art. 1374 c.c., l’Oracolo potrebbe avere una funzione determinante come fonte esterna che interviene sulla Blockchain per far sì che le lacune dello smart contract possano essere colmate senza che si possa determinare un’ipotesi di invalidità dello stesso.