Per entrare in piena funzione, gli smart contract che legano la propria attivazione a input dal mondo esterno, hanno bisogno degli oracoli. Un “trigger”, che dia la giusta spinta. Approfondiamo di che cosa si tratta.
Il dialogo tra smart contract e mondo esterno
Un contratto tradizionale, dato che si relaziona con soggetti “tradizionali”, ossia esseri umani e loro organizzazioni, opera il dialogo con il mondo esterno mediante metodi altrettanto tradizionali, noti e – si perdoni la semplificazione dell’espressione – analogici. Ebbene, uno smart contract ha la stessa esigenza di dialogo ed apertura verso il mondo degli agenti esterni: ad esempio, anche nel caso di utilizzo di uno smart contract dovrà verificarsi se una tale condizione si sia avverata e se quindi possa darsi, o meno, la relativa, e conseguente, previsione contrattuale. La particolarità dello smart contract, anche in relazione a come questo possa dialogare con l’esterno, è data, invero, dalla sua natura. Su questa è opportuno indagare prima di capire cosa sono gli oracoli in relazione agli smart contract.
È il Decreto Semplificazioni 2019, all’art 8-ter, a dare la definizione di smart contract: si tratta di un programma per elaboratore che opera su tecnologie basate su registri distribuiti e la cui esecuzione vincola automaticamente due o più parti sulla base di effetti predefiniti dalle stesse. Esso soddisfa il requisito della forma scritta previa identificazione informatica delle parti interessate, attraverso un processo avente i requisiti fissati dall’Agenzia per l’Italia Digitale (con linee guida da adottarsi). Bene, per capire il senso e l’utilità dell’oracolo si consideri che la blockchain (ossia la principale tra le tecnologie a registro distribuito richiamate dalla normativa sopra indicata e sulla quale vengono codificati gli smart contract) è a chiusura ermetica: è cioè impossibile, per un programma scritto su blockchain, ottenere dati non presenti tra i blocchi della catena.
Il trigger, che cos’è e a cosa serve
Ora, per attivare lo smart contract, si deve permettere che un flusso di informazioni arrivi sulla blockchain, in modo tale da fungere da c.d. trigger, ossia il grilletto che avvia il funzionamento del programma. Il trigger può essere azionato dalle parti o da un elemento terzo, che effettua tale operazione per il tramite di API, che hanno la funzione di oracolo, figura “terza” che fornisce allo smart contract l’input che attiva il programma, cioè il suddetto “trigger”.
Immaginiamo, per esempio, uno smart contract che deve attivarsi quando il livello di un determinato fiume sale al di sopra di un determinato livello: sorgeranno numerosi problemi relativi alla misurazione. Come potremo sapere se l’informazione recuperata è veritiera o corretta? Dovrebbe l’altezza essere comunicata ad intervalli regolari comunicando il valore di quel momento, oppure dovrà essere comunicata la media delle ultime misurazioni? Ebbene, sono gli oracoli a dover rispondere a queste domande: sono gli elementi che attivano il trigger dello smart contract; per altro verso, su di essi ricade la responsabilità riguardante il “trigger”. Ogni smart contract ha bisogno di un “trigger” diverso. Facciamo alcuni esempi pratici di servizi attivabili tramite pagamento in smart contract:
- Smart contract con trigger “switch ON/OFF”. È il caso più semplice, lo smart contract si attiverà appena l’input identificato come “ON” sarà trasmesso dall’Oracolo. Esempio: quando vengono pagati 10 € sul nostro sito, attiva automaticamente il servizio di streaming della durata di 1 mese sull’account del cliente che ha pagato.
- Smart contract con trigger “a multipli”. Leggermente più complesso del primo esempio, in questo caso l’input sarà un multiplo di una determinata somma, il numero sarà indice della quantità di prodotto acquistata. Esempio: qando viene pagato un valore di € multiplo “X” di 10 sul nostro sito, attiva automaticamente il servizio di streaming della durata di “X” mesi sull’account del cliente che ha pagato. (20/10=2 X=2 quindi 2 mesi pagati)
- Smart contract con trigger “multivalore”. L’input sarà uno tra i diversi valori prefissati (A, B, C) tutti gli input attivano lo smart contract, che però attiva operazioni differenti a seconda del trigger. Esempio: Qquando viene pagato un valore A B o C, lo smart contract attiverà sull’account del sito l’abbonamento che corrisponde a quella somma. A=10 € mensile B=25 € trimestrale C=45 € semestrale.
- Smart contract con trigger “a scaglioni”. In questo caso, lo smart contract si attiverà in modi diversi a seconda dello scaglione che includerà l’input. Questo sistema è stato usato per le donazioni con fini sociali. Eempio: scaglione 1 (da 5 a 9,99€) Mail ringraziamento, Scaglione 2 (da 10 a 24,99€) Mail di ringraziamento + foto con quadro Scaglione 3 (da 25 a 99,99€) Mail + Foto + Video di ringraziamento personalizzato.
Tali quattro esempi sono solo una minima parte dei possibili tipi di input che possono attivare uno smart contract. Se si pensa che gli oracoli non forniscono solo valori monetari, diventa subito chiaro che i tipi di trigger e quindi di oracoli sono, in pratica, infiniti. Gli oracoli non si limitano solo a permettere agli smart contract di ottenere informazioni dal mondo esterno dalla blockchain, ma, vista la garanzia e certezza richiesti da tutto ciò che utilizza la tecnologia blockchain, ricoprono un ruolo fondamentale, ossia garantiscono che le informazioni siano giuste e veritiere.
L’impiego degli oracoli IoT
Per tale motivo che vengono preferiti sempre più spesso sistemi che utilizzano come oracoli sistemi IoT dotati di sensori e piccoli sistemi di elaborazione. Questi sistemi permettono di garantire l’imparzialità dei dati che interagiranno con lo smart contract, permettendo al sistema di essere davvero auto eseguibile in autonomia completa. I sistemi IoT sono molto utilizzati anche perché permettono di ricevere diversi input. Immaginiamo un sistema IoT che faccia da oracolo per uno smart contract che gestisce la qualità, e quindi il prezzo di vendita, dei prodotti coltivati in un determinato terreno. Il sistema sarà in grado di elaborare tantissime variabili, come la temperatura e l’umidità, e poi trasmettere le informazioni allo smart contract.
Cosa succederebbe, però, se si volesse utilizzare un sistema del genere facendogli al contempo anche valutare la quantità di pesticidi ed antibiotici usati? Qui ci si troverebbe, invero, davanti al reale problema degli oracoli: determinati input non possono essere registrati da sensori imparziali e quindi devono essere inseriti dall’uomo. È quindi ben chiaro che se le informazioni verranno inserite da un soggetto umano, questi le potrà modificare, così facendo decadere la garanzia data dal sistema. Lo smart contract infatti elaborerà e certificherà tutte le operazioni partendo da un dato che non sarà mai attendibile al 100%, proprio per la possibilità che il dato sia falso o manomesso. Il problema diventa enorme quando si parla di utilizzare sistemi DLT ed in particolare smart contract auto eseguibili per rendere tracciabile la filiera degli alimenti.
Oracoli e banche dati pubbliche
Altri tipi di oracoli che forniscono un alto livello di sicurezza, garanzia ed imparzialità dei dati sono quelli che sfruttano le banche dati pubbliche. L’esempio più conosciuto è quello della polizza assicurativa auto eseguibile che protegge dai ritardi aerei o dal cattivo tempo. In entrambi i casi, lo smart contract, una volta attivato tramite il pagamento della polizza, risarcirà automaticamente il cliente in caso di ritardo o cattivo tempo rilevato attraverso le banche dati online, poiché queste informazioni sono gestite da enti terzi ed imparziali, non vi è quindi nessuna necessità di controllo verso le informazioni pubblicate.
Come già detto, gli oracoli diventano tanto più importanti quando gli smart contract hanno bisogno di un elevato livello di garanzia. Proprio per questo stanno nascendo delle società che garantiscono elevatissimi livelli di “trust” dei propri oracoli, accostando all’azione del uomo una lunga serie di sensori e “prove” della veridicità dei dati che raccolgono ed inviano agli smart contract.