Cosa sono gli Oracoli sulla blockchain? In questo articolo ne parliamo in modo approfondito, citando ovviamente Chainlink. Scopri di più!
Gli oracoli blockchain sono entità che collegano blockchain a sistemi esterni, consentendo l’esecuzione di contratti intelligenti in base a input e output del mondo reale. Gli oracoli forniscono all’ecosistema Web 3.0 un metodo per connettersi a sistemi legacy esistenti, origini dati e calcoli avanzati.
Le reti Oracle decentralizzate consentono l’implementazione di smart contract ibridi, in cui l’infrastruttura off-chain e il codice on-chain sono accoppiati per fornire applicazioni decentralizzate complesse. Queste Dapp reagiscono agli eventi del mondo reale e interagiscono con i sistemi tradizionali. Leggi di più!
Table of Contents
Oracoli: ecco cosa sono
Diciamo che Alice e Roberto desiderano scommettere sull’esito di una corsa di cavalli. Scommettono un totale di 80 euro, trattenuti in deposito a garanzia da uno smart contract. Alice ha puntato 50 euro sul cavallo X e Roberto 30 euro sul cavallo Y. Come fa lo smart contract a sapere se dare i soldi ad Alice o Bob quando la gara sarà finita? La soluzione è che è necessario un meccanismo per recuperare i risultati delle partite off-chain – ovvero fuori dalla blockchain, nel mondo reale – e consegnarli in modo sicuro e affidabile alla blockchain.
Nel registro distribuito della blockchain, ogni nodo della rete deve ottenere lo stesso risultato con lo stesso input. Ad esempio, se un nodo tenta di convalidare la transazione di un altro nodo, otterrà un risultato diverso. Questa architettura è stata creata per essere deterministica: dato un certo input, restituisce sempre lo stesso output.
L’algoritmo di consenso serve ad avere una versione unica nella blockchain, ed è necessario il determinismo affinché i nodi raggiungano il consenso. Alcuni algoritmi sicuramente li conosci, come proof-of-work (PoW) ed il proof-of-stake (PoS). Uno dei principali fattori che in primo luogo fanno funzionare la blockchain è proprio il consenso.
Ma il mondo blockchain ha bisogno di connettersi con il mondo reale. Affinché la DeFi funzioni, dobbiamo disporre in tempo reale del prezzo di Ether (ETH) e di altre criptovalute in un contratto. Abbiamo bisogno dei dati meteorologici per fornire un’assicurazione decentralizzata e trustless. Per utilizzare la blockchain al massimo del suo potenziale, abbiamo bisogno di dati. Quindi – dato questo vincolo – come connettiamo i due mondi?
Questa guida punta a spiegare cosa fanno gli oracoli blockchain, il problema di tali oracoli ed alcuni casi reali. Immergiamoci.
Il problema degli oracoli su blockchain
Il dilemma dell’oracolo della blockchain evidenzia un limite chiave degli smart contract: non possono connettersi in alcun modo con dati e sistemi al di fuori del loro contesto blockchain nativo. Indicheremo le risorse esterne come “off-chain“, ed i dati attualmente registrati sulla blockchain come “on-chain“.
Le blockchain ottengono le loro qualità più vantaggiose proprio perché sono separate dai sistemi estern: prevenzione della cosiddetta doppia spesa, un forte consenso sull’autenticità delle transazioni da parte degli utenti e la riduzione dei tempi di inattività della rete. Per interagire in modo sicuro con i sistemi off-chain e colmare il divario tra due ambienti, avremo bisogno di un ulteriore pezzo di infrastruttura chiamato “oracolo“.
Poiché la grande maggioranza dei casi d’uso di contratti intelligenti – come la DeFi – richiede la conoscenza dei dati del mondo reale e degli eventi che si verificano off-chain, risolvere il problema dell’oracolo è fondamentale. Di conseguenza, gli oracoli ampliano i tipi di contratti digitali che le blockchain possono abilitare fornendo un gateway universale per le risorse off-chain, pur mantenendo le qualità chiave di sicurezza della blockchain.
I prezzi degli asset in ambito finanziario, la verifica dell’identità per il governo, la casualità per quanto riguarda i giochi, le informazioni meteorologiche per le assicurazioni sono solo alcuni dei settori che traggono profitto dall’integrazione di oracoli con contratti intelligenti.
Oracoli blockchain: perché sono utili
Qualsiasi dispositivo o entità che connette una blockchain deterministica a dati off-chain viene definito un oracolo blockchain. Ogni input di dati viene instradato in questi oracoli attraverso una transazione esterna.
Ma possiamo essere certi che la blockchain contenga tutte le informazioni necessarie per autenticarsi. Gli oracoli sono considerati middleware blockchain, perché fungono da collegamento tra i due spazi.
Chainlink è lo standard del settore per gli oracoli decentralizzati, perché supera sia l’accesso ai dati esterni sia la centralizzazione dei problemi degli smart contract. Ma cosa sono gli oracoli Chainlink?
Chainlink è una rete Oracle decentralizzata che fornisce dati del mondo reale ai contratti intelligenti sulla blockchain. LINK è il token utilizzato per pagare i servizi di rete.
D’altra parte, un singolo oracolo centralizzato causa proprio il problema che uno smart contract decentralizzato e protetto da blockchain dovrebbe risolvere: un singolo punto di errore. Quindi, come facciamo a sapere se i nostri dati sono accurati se l’oracolo è difettoso o è stato hackerato? A cosa serve un contratto sicuro, affidabile e intelligente sulla blockchain se i dati su cui si basa sono sospetti?
Il problema risolto da Chainlink
Questo problema viene risolto da Chainlink – ovvero una rete decentralizzata di nodi – che utilizza gli oracoli per fornire dati e informazioni da fonti off-blockchain a contratti intelligenti on-chain. Questa tecnica – insieme ad altre tecnologie sicure – elimina le difficoltà che potrebbero sorgere se si utilizza una sola fonte centralizzata.
Chainlink è indipendente dalla blockchain in quanto collega tutti i principali ambienti blockchain pubblici e privati utilizzando un unico framework, che fornisce un livello di astrazione tipico per la comunicazione tra reti.
Per questi motivi, puoi fare riferimento a dati decentralizzati on-chain che sono già stati estratti dal mondo reale e raccolti utilizzando servizi come Chainlink, che è simile a una biblioteca pubblica, ad eccezione dei dati decentralizzati. Puoi persino creare le tue reti Oracle modulari per ottenere tutte le informazioni specifiche di cui hai bisogno. Inoltre, puoi eseguire calcoli off-chain e trasferire dati nel mondo reale.
Altri importanti oracoli blockchain – nel momento in cui scrivo – sono Winklink, UMA, API3 e NEST Protocol. Questi servizi forniscono oracoli costituiti da uno smart contract e da alcuni componenti off-chain che possono interrogare le API (Application User Interface) e quindi inviare transazioni per aggiornare regolarmente i dati nello smart contract.
Tipi di oracoli blockchain
Gli oracoli forniscono una blockchain o un contratto intelligente per comunicare con dati esterni. Fungono da interfaccia con il mondo al di fuori della blockchain. I dati esterni devono in molte circostanze essere trasmessi al sistema blockchain chiuso, specialmente quando tali contratti sono collegati a eventi del mondo reale. I dati esterni vengono interrogati, verificati e autenticati da oracoli crittografici, che poi li inoltrano al sistema chiuso. Successivamente, i dati convalidati verrebbero utilizzati per convalidare uno smart contract. Vediamo quali sono i principali tipi di oracolo.
Oracoli hardware e software
Sebbene non sia sempre così, la maggior parte degli oracoli crittografici analizza i dati digitali. Gli oracoli hardware forniscono dati dal mondo fisico, mentre gli oracoli software forniscono dati da fonti digitali come siti Web, server o database. Inoltre, le informazioni provenienti dai sensori di movimento della telecamera e dai sensori di identificazione a radiofrequenza (RFID) possono essere fornite e trasmesse da oracoli hardware. I dati in tempo reale – come tassi di cambio, variazioni di prezzo e informazioni di viaggio – possono essere forniti tramite oracoli software.
Oracoli in entrata e in uscita
Gli oracoli stabiliscono un canale di comunicazione bidirezionale con le blockchain, inviando dati in entrata e in uscita. Mentre gli oracoli in uscita possono fornire dati blockchain al mondo esterno, è più probabile che gli oracoli in entrata forniscano dati off-chain – o del mondo reale – alla blockchain. Inoltre, i dati importati possono rappresentare quasi qualsiasi cosa, dalle oscillazioni dei prezzi delle attività alle condizioni meteorologiche fino alla verifica dei pagamenti completati.
Per gli oracoli in entrata, uno scenario programmabile comune potrebbe essere: se un asset raggiunge un prezzo specifico, inserire un ordine di acquisto. Invece gli oracoli in uscita avvisano il mondo esterno di un evento accaduto on-chain.
Oracoli centralizzati e decentralizzati
Un oracolo centralizzato è gestito da un’unica entità e funge da unica origine dati dello smart contract. L’utilizzo di una sola fonte di informazione può essere pericoloso perché l’efficacia del contratto dipende esclusivamente dall’entità responsabile dell’oracolo.
L’intervento ostile di un malintenzionato influenzerà direttamente anche lo smart contract. Il problema fondamentale con gli oracoli centralizzati è che hanno un singolo punto di errore, rendendo i contratti più vulnerabili agli attacchi e alle debolezze.
Alcuni degli obiettivi degli oracoli decentralizzati sono simili a quelli delle blockchain pubbliche, come ridurre al minimo i rischi. Ad esempio, rendono più affidabili le informazioni fornite ai contratti intelligenti non dipendendo da un’unica fonte di verità.
Lo smart contract consulta diversi oracoli per valutare la validità e l’accuratezza dei dati; questo è il motivo per cui gli oracoli decentralizzati sono anche conosciuti come oracoli di consenso. Altre blockchain possono utilizzare oracoli decentralizzati forniti da alcuni progetti oracle su blockchain.
Oracoli umani
Gli individui con conoscenze specializzate in un settore specifico talvolta possono fungere da oracoli. Possono raccogliere informazioni da varie fonti, verificarne la legittimità e convertirle in contratti intelligenti. Poiché gli oracoli umani possono utilizzare la crittografia per verificare la propria identità, le possibilità che un truffatore fornisca dati manomessi si riducono.
Oracoli specifici per contratti
Questi oracoli sono fatti per funzionare con contratti intelligenti singoli. Se lo sviluppatore intende distribuire numerosi contratti intelligenti, sarà necessario creare vari oracoli specifici del contratto.
Gli oracoli specifici del contratto non valgono il tempo e il lavoro necessari per mantenerli aggiornati: sono scomodi e dovrebbero essere utilizzati solo in situazioni specifiche.
Oracoli di calcolo
Finora abbiamo appena parlato di oracoli in termini di ricerca e fornitura di dati (noti anche come oracoli di supporto dati o oracoli automatizzati). Ma gli oracoli possono essere utilizzati per condurre qualsiasi soluzione di calcolo arbitraria “off-chain”, il che è particolarmente vantaggioso dato il vincolo del gas intrinseco di Ethereum e il costo molto elevato.
Gli oracoli di calcolo, anziché semplicemente trasmettere i risultati di una query, possono essere utilizzati per eseguire calcoli su un insieme di input e restituire un risultato calcolato che altrimenti sarebbe impossibile calcolare on-chain. Ad esempio, per stimare il rendimento di un contratto obbligazionario, un oracolo di calcolo potrebbe eseguire un calcolo molto complesso.
Modelli di progettazione Oracle
Per definizione, tutti gli oracoli discussi nell’articolo svolgono alcuni ruoli chiave. Questi includono le capacità di:
- Raccogliere i dati da una fonte non blockchain.
- Utilizzare un messaggio firmato, ed inviare i dati nella blockchain.
- Rendere accessibili i dati archiviandoli nella memoria di uno smart contract.
Una volta che i dati sono archiviati nella memoria di uno smart contract, le parti interessate possono accedervi invocando la funzione di “recupero” dello smart contract dell’oracolo. Può anche essere “chiamato” direttamente dai nodi Ethereum o dai client abilitati alla rete, “esaminando” lo spazio di archiviazione dell’oracolo stesso.
I tre modi principali per impostare un oracolo possono essere classificati come segue:
Immediate read – Lettura immediata
Gli oracoli a lettura immediata forniscono informazioni necessarie solo per una rapida decisione, ad esempio “questo studente ha più di 25 anni?” Coloro che vogliono interrogare questo tipo di dati di solito lo fanno su base “just-in-time“, il che significa che la ricerca viene eseguita solo quando le informazioni sono necessarie.
Esempi sono prefissi telefonici, certificati accademici, abbonamenti istituzionali, identificazione aeroportuale e simili.
Publish subscribe – Pubblica sottoscrivi
Questo oracolo fornisce un servizio di trasmissione per dati che potrebbero cambiare – in modo più o meno frequente – e viene interrogato da uno smart contract on-chain. I dati meteorologici, i feed dei prezzi, le statistiche economiche o sociali e i dati sul traffico sono solo alcuni esempi di publish subscribe.
Request response – Richiesta risposta
La categoria più impegnativa è richiesta-risposta: è qui che lo spazio dati è troppo grande per essere archiviato in un contratto intelligente. Pertanto si prevede che gli utenti utilizzeranno solo una piccola parte dell’intera informazione alla volta. È anche una valida strategia aziendale per quanto riguarda i fornitori di dati.
In pratica un oracolo come questo può essere implementato come sistema di smart contract on-chain e infrastruttura off-chain. Serve per il monitoraggio delle richieste e il recupero e la restituzione dei dati.
Oracoli nelle DApp
L’oracolo è un meccanismo per colmare il divario tra il mondo off-chain e gli smart contract utilizzati da molte DApp sul mercato. Di seguito sono riportati alcuni esempi di dati che può fornire:
- Dati su tempi ed intervalli: si utilizzano per i trigger di eventi basati su misurazioni temporali esatte.
- Finanza: pacchetti di prezzi di asset, titoli tokenizzati ed altro ancora.
- Dati di riferimento di benchmark, come i tassi di interesse, inclusi nei derivati finanziari intelligenti.
- I dati meteorologici: ad esempio vengono utilizzati per calcolare i premi assicurativi in base alle previsioni meteorologiche. Per i contratti assicurativi è richiesta la verifica dei danni.
- Dati di geolocalizzazione, come quelli utilizzati nel monitoraggio della supply chain.
- Gli eventi sportivi: vengono utilizzati per i mercati delle previsioni e i contratti di fantasport.
- Statistiche di volo, come quelle utilizzate da gruppi e club per raggruppare i biglietti aerei.
Attenzione ai problemi di sicurezza
Gli oracoli svolgono un ruolo fondamentale nell’esecuzione di contratti intelligenti, inserendo come abbiamo visto i dati esterni nell’equazione. D’altra parte, gli oracoli rappresentano un enorme pericolo. Se vengono hackerati, possono mettere a repentaglio l’esecuzione degli smart contract che alimentano.
In generale, pur considerando l’impiego di un oracolo, il modello che si utilizza deve essere attentamente considerato. Potremmo involonariamente sacrificare la sicurezza del contratto intelligente, esponendolo a input dannosi in modo irreparabile. Ma se i presupposti di sicurezza sono attentamente considerati, gli oracoli possono essere preziosi.
Alcune di queste preoccupazioni possono essere affrontate tramite oracoli decentralizzati, fornendo dati esterni affidabili agli smart contract di Ethereum. Bisogna selezionarlo attentamente per collegare Ethereum ed altre blockchain con il mondo reale.