Il termine oracolo, nel contesto della blockchain, può sembrare alquanto arcano.
Nell’antichità gli oracoli erano degli esseri o degli enti ai quali si riconosceva la prerogativa di riuscire a interpretare il volere divino. Si trattava di una forma di divinazione volta a ottenere un “responso” sui comportamenti da adottare, oppure su questioni ignote non riguardanti il presente.
Nell’ambito della blockchain, la locuzione “oracolo” è attribuita alla funzione di somministrazione dei dati (esterni!) alla blockchain.
L’oracolo è quell’entità (persona, software ecc.) che reperisce (all’esterno) e fornisce alla blockchain i dati necessari per l’esecuzione di logiche, più comunemente note come smart contract.
Chainlink è un progetto che dà vita a una rete decentralizzata di oracoli.
Non potevi non notarlo
Non è necessario essere un esperto del settore blockchain, oppure un attento osservatore delle caratteristiche e delle dinamiche che ruotano intorno all’architettura blockchain.
Che Chainlink sia candidato a essere una componente fondamentale di questo escosistema, lo si comprende anche limitandosi a osservare le performance registrate sul mercato dal token che rappresenta questo progetto.
LINK è stato quotato sul mercato negli ultimi mesi del 2017, vale a dire nel pieno della bolla del mondo cripto.
C’è però un particolare di non poco conto.
Se la stragrande maggioranza delle cripto (anche le regine, come bitcoin e ether) sono ben lontane dai rispettivi massimi storici, LINK è ritornato sulla vetta. Ha addirittura registrato nuovi massimi storici!
Su CoinMarketCap risultano listati oramai migliaia e migliaia tra token e criptovalute.
La stragrande maggioranza non raggiungerà mai un utilizzo realmente utile. Né rivedrà più i top storici segnati nella fase di massimo entusiasmo.
Nella fase di pulizia del mercato, che ha abbracciato tutto il 2018 e parte del 2019, molti token sono stati sbalzati in direzione di quello che verosimilmente rappresenterà il loro fair value, cioè zero.
In maniera piuttosto stupefacente, nella stessa fase, LINK ha avuto un movimento solo laterale-ribassista, quasi di consolidamento, prima di esplodere verso nuovi massimi.
Ma l’aspetto interessante è che ha stracciato al rialzo, nel rapporto di forza relativa, anche le due cripto leader.
Nei due grafici che seguono, LINK è al numeratore della coppia di scambio, mentre BTC e ETH sono posti al denominatore.
I grafici in salita indicano che, nel periodo di riferimento, avere in portafoglio LINK, in luogo di bitcoin o ether, avrebbe fatto guadagnare di più, o comunque perdere di meno, a seconda poi del più stretto timing temporale di riferimento.
Che un progetto abbia dimostrato forza sul mercato in un certo arco temporale, non vuol dire necessariamente che debba essere vincente nel lungo termine.
Le salite di prezzo possono essere dettate anche da manipolazione, oppure da semplice speculazione da parte di trader e investitori non corrisposta da reale adoption.
Non è scritto nelle stelle che LINK debba continuare a salire di prezzo. Non si può neppure escludere che un giorno questo token vada a zero.
I movimenti di mercato possono essere utilizzati come primo filtro per la selezione di progetti dal valore fondamentale potenzialmente solido. Ma non sempre ai buoni indizi provenienti dal grafico di borsa segue una reale adoption che consolida e rende effettive le buone premesse.
Questa esposizione non costituisce alcun consiglio finanziario di acquisto del token. È invece finalizzata all’analisi del progetto Chainlink, per provare a comprendere se si tratta a tutti gli effetti di una componente vitale della blockchain.
Il pezzo mancante del puzzle
Per recepire il senso di Chainlink, bisogna avere ben chiaro cosa è la blockchain e qual è la sua funzione. Un’idea distorta o limitata dello scopo della blockchain potrebbe sminuire l’importanza di un progetto come Chainlink.
Da un punto di vista strettamente tecnico, la blockchain può essere definita come una struttura dati condivisa, composta da un elenco crescente di registrazioni, chiamate blocchi, che sono crittograficamente collegati.
Una definizione tanto asettica ci dice obiettivamente poco!
L’informatico e crittografo Nick Szabo, negli anni ’90 pubblicava un articolo nel quale descriveva quello che egli definiva “il protocollo di Dio”:
Immagina il protocollo ideale. Avrebbe la più affidabile terza parte che si possa immaginare, una divinità che sta dalla parte di tutti. Tutte le parti invierebbero i loro input a Dio. Dio determinerebbe in modo affidabile i risultati e restituirà gli output. Essendo Dio l’estremo della discrezione confessionale, nessuna parte saprebbe qualcosa di più sugli input delle altre parti di quanto possa sapere dai propri input e dall’output.
Nick Szabo, 1997 (https://nakamotoinstitute.org/the-god-protocols/#selection-25.5-29.297)
Nell’articolo citato Nick Szabo immaginava quella che poi, a partire dal 2009 con Bitcoin, è diventata la blockchain.
La blockchain di Bitcoin costituisce il prototipo del protocollo divino, la perfetta unione di una serie di tecnologie precedenti che ha consentito di spazzare via la funzione dell’intermediario.
Szabo immaginava questo protocollo esattamente come una divinità: una terza parte alla quale sarebbero stati forniti dei dati (input) che avrebbe elaborato senza pregiudizi, per poi restituire una risposta (output) totalmente imparziale.
La blockchain è stata a lungo utilizzata principalmente per inviare pagamenti in criptovalute.
Quando invii una transazione di trasferimento di bitcoin, non c’è un intermediario sul quale riponi la tua fiducia per la verifica dei presupposti della transazione e l’aggiornamento dello stato della blockchain in seguito all’esecuzione del pagamento.
La blockchain riceve un input (la richiesta di trasferimento dei fondi) e in maniera automatica e “affidabile” restituisce l’output atteso, senza il rischio di valutazione discrezionale sull’esito dipendente dall’input.
Se il codice eseguito dai nodi della blockchain prevede che al verificarsi di una data condizione verrà restituito uno specifico output, non c’è il rischio che i nodi eseguano una logica diversa.
Quanto detto, però, è valido per i dati nativi della blockchain, come ad esempio il saldo di un wallet.
In una transazione di pagamento, i nodi della blockchain hanno accesso diretto (interno alla blockchain) ai dati necessari per l’elaborazione della richiesta di pagamemto, come il saldo dell’account del mittente e la firma della transazione.
I nodi che compongono la blockchain eseguono un software. Un sistema informatico non può conoscere i dati che non sono già codificati, quindi i dati del mondo esterno.
Questo limite era già stato sollevato anche da Nick Szabo nel suo articolo sul “protcollo di Dio”. Il protocollo non assurge a vera divinità se il suo responso può essere facilmente falsato dalla somministrazione di dati devianti rispetto alla realtà.
Prima di addentrarci nei concetti di smart contract e di “oracle problem”, vediamo quali sono i limiti della blockchain rispetto a un normale database e a quali condizioni ha realmente senso utilizzare una blockchain.
Blockchain quando?
Detto in termini molto generici, la blockchain è più lenta e molto meno efficiente di un normale database, come ad esempio quello amministrato centralmente da un ente bancario.
Una rete blockchain è meno efficiente perché è molto più complessa. La complessità della sua struttura e dei meccanismi alla sua base deriva dall’esigenza di eliminare l’elemento dell’intermediario.
Eliminare l’intermediario vuol dire che, per l’approvazione delle transazioni, non ci si può affidare a un’autorità centrale che abbia il privilegio di scrittura in un database.
Utilizzare la blockchain implica di pervenire a un “settlement decentralizzato”, ossia escogitare dei meccanismi che consentano di ottenere un “consenso decentralizzato”, non dipendente dall’approvazione di un’autorità centrale.
Ma pervenire a un consenso in maniera decentralizzata non è così semplice come scrivere in un database da parte di un’entità che, in via autoritativa, abbia il privilegio di farlo.
Il funzionamento di una rete blockchain è molto più macchinoso, richiede l’implementazione di un complesso sistema di incentivi e disincentivi per generare consenso sullo stato del ledger pubblico.
Quando un utente vuole inviare una transazione, deve innanzitutto trasmettere i dati su una rete p2p:
- l’utente prepara e firma una transazione;
- l’utente invia una transazione alla rete;
- la rete replica le informazioni tra i partecipanti alla rete;
- alcuni partecipanti generano nuovi blocchi che includono la transazione dell’utente;
- il creatore del blocco propaga l’informazione ai partecipanti alla rete;
- l’utente riceve l’informazione su un nuovo blocco con la sua transazione, quindi sul nuovo stato della blockchain.
La partecipazione a una rete blockchain costa anche in termini di lavoro che ricade sul client:
- ogni richiesta di cambiamento di dati comporta il pagamento di una fee (i costi di transazione sulla blockchain sono più elevati rispetto ai database standard);
- il controllo della firma richiede tempo e lavoro di calcolo;
- una maggiore dimensione della transazione ricade sulla larghezza di banda (bandwidth);
- ogni cambio di stato sulla blockchain incide sullo spazio di archiviazione.
Infine una rete blockchain opera sulla base di un algoritmo di consenso, le cui regole richiedono un dispendio di energia – in particolare in un sistema PoW – da parte di quei nodi (miners) che sono responsabili della creazione dei blocchi e devono concordare circa i blocchi validi e quelli che devono essere scartati.
La complessità e la minore efficienza della blockchain dipendono dal fatto che viene utilizzata per pervenire a un consenso tra i partecipanti alla rete, che non deve richiedere l’intervento di un’autorità (settlement decentralizzato).
Da quanto detto di desume che ha senso utilizzare la blockchain solo per quelle applicazioni per cui serve davvero decentralizzazione, ma a condizione che si possa garantire effettiva decentralizzazione.
Non c’è bisogno di decentralizzazione per tutte le applicazioni della vita. Ci sono invece delle applicazioni per le quali sarebbe davvero utile l’eliminazione della figura dell’intermediario (per ragioni di efficienza, sicurezza, privacy ecc.), ma non si riesce ancora a garantire lo stesso carattere di decentralizzazione che permea la blockchain.
Alcune applicazioni dipendono da dati esterni alla blockchain per la cui veridicità bisogna fare affidamento su una parte fidata. E la blockchain è sicura tanto quanto il suo anello più debole.
Se un’applicazione su blockchain si basa su dati del mondo esterno che possono essere facilmente forniti alla rete in maniera distorta, allora la blockchain non è più sicura.
Oracle problem
Bitcoin è stata la prima blockchain. Almeno fino ad oggi la sua funzione è limitata al trasferimento di valore, o denaro che dir si voglia.
Questa blockchain funziona egregiamente in maniera “trustless”, senza la presenza di elementi di centralizzazione che possano costituire un “single point of failure”. Quando si invia una transazione di pagamento, la rete dispone già internamente di tutti i dati per verificarla ed approvarla.
I nodi possono direttamente verificare che l’utente abbia sufficiente “saldo” per inviare quella transazione e che sia legittimato a farlo, avendo firmato con la chiave privata corrispondente all’indirizzo pubblico dal quale provengono i fondi.
Ma Ethereum è andato oltre, aggiungendo un ulteriore livello al “protocollo divino”: gli smart contract.
Uno smart contract è programmato per: ricevere un input → eseguire una logica → aggiornare di conseguenza lo stato della blockchain.
Uno smart contract è automazione di esecuzione in parallelo ad opera dei nodi che compongono la rete, al verificarsi di condizioni predeterminate.
Lo smart contract è considerato inarrestabile perché, anche se venissero bloccati uno o più (anche tanti!) nodi della rete, ce ne saranno sempre altri che continueranno a eseguire le logiche dello smart contract e a replicare le informazioni alla rete.
Un esempio spicciolo di smart contract può essere quello di tipo assicurativo di protezione dai ritardi dei voli aerei. Uno smart contract di questo tipo potrebbe prevedere che al passeggero venga corrisposto tempestivamente un indennizzo se il volo aereo ritarda di oltre trenta minuti.
In un’ipotesi del genere il passeggero verrebbe indennizzato immediatamente, al verificarsi della condizione (ritardo superiore a trenta minuti), ricevendo i fondi sul proprio wallet, e senza che debba presentare reclami e compilare moduli.
Ma chi comunica alla blockchain se l’aereo sia davvero partito con un ritardo superiore a trenta minuti?
Gli smart contract che fanno leva su dati esterni alla blockchain (come gli orari di partenza dei voli aerei), si imbattono in quello che è noto come “oracle problem”.
Per oracle problem si intende la difficoltà di acquisire dati esterni alla blockchain senza dover riporre fiducia in qualcuno. Nel caso dello smart contract di tipo assicurativo sul volo aereo:
- se viene fornita una notizia falsa sul ritardo dell’aereo, si compromette l’intero utilizzo della blockchain;
- se viene somministrato un dato corretto, ma proveniente da un elemento di centralizzazione della cui autorevolezza bisogna fidarsi, allora tutto il complesso meccanismo della blockchain non ha senso. Meglio ritornare a un database tradizionale!
Fino a poco tempo fa, i dati esterni necessari per l’innesco degli smart contract, venivano forniti esclusivamente da oracoli “in house” o attraverso servizi di oracolo centralizzati.
Gli oracoli in house costituiscono dei meccanismi di somministrazione dei dati, costruiti internamente dallo stesso progetto che fornisce un servizio di smart contract.
Ad esempio, la prima forma di oracolo utilizzata dal progetto MakerDAO era di tipo in house.
Quattoridici nodi fornivano il prezzo di ether a uno smart contract detto “medianizer”. Lo smart contract prendeva il dato mediano, il quale veniva considerato nel sistema di MakerDAO come il prezzo “ufficiale” di ether.
Un sistema di questo tipo resta immune da attacchi fino a quando più del 50% dei nodi sono onesti. Il problema però è che tali nodi non hanno alcun palese incentivo a essere onesti.
Vengono selezionati internamente e in maniera non trasparente dalla fondazione Maker. Verosimilmente sono dei grossi detentori del token MKR, che hanno tutto l’interesse alla buona tenuta del sistema. Ma si tratta di una situazione che non è comunque sufficiente a garantire un sistema davvero trustless.
Accanto agli oracoli in house troviamo dei servizi di oracolo centralizzati (come Oraclize), che forniscono un servizio general purpose per tutti gli smart contract che vogliono avvalersene.
Questi servizi somministrano i dati alla blockchain insieme a delle “authenticity proof”. Sono delle garanzie (ad esempio consistenti in una firma da parte della fonte dei dati) volte a dimostrare che i dati non sono stati alterati durante la consegna.
È un escamotage che non rimuove integralmente l’elemento della fiducia, e che non risolve il problema della compromissione della fonte stessa dei dati: l’oracolo è onesto ma è compromessa la fonte (ad esempio il sito web delle quotazioni di una criptovaluta) dalla quale l’oracolo attinge.
In generale, gli oracoli in house e i servizi centralizzati presentano una serie di limiti e rischi che possono essere così riassunti:
- se l’oracolo si disconnette, lo smart contract cessa di funzionare;
- l’oracolo potrebbe fornire dati falsi allo smart contract;
- anche se non fosse compromesso l’oracolo, potrebbe esserlo la fonte di dati;
- mancanza di praticità: l’oracolo è progettato per lavorare con uno specifico smart contract, fornendo solo un tipo di connessione con il mondo esterno;
- nessuna misura della reputazione, un indicatore che rivela l’accuratezza delle risposte dell’oracolo a terze parti;
- un oracolo in house, costruito per il proprio specifico servizio, potrebbe avere maggiori incentivi a fornire dati inesatti, se la posta in gioco è elevata (ad es. uno smart contract di assicurazione).
Per ottenere un sistema di oracoli veramente utile alla causa, bisogna replicare gli stessi incentivi e disincentivi che sono alla base della decentralizzazione e dei meccanismi non fiduciari della blockchain.
Una cosa è chiara: nel mondo della decentralizzazione non esistono pasti gratis. Per far sì che gli attori adottino un comportamento conforme alle regole, è necessario premere sul sentimento dell’avidità umana.
I nodi minatori di una blockchain tendono a non assumere comportamenti malevoli – consistenti nell’approvazione di transazioni di doppia spesa – perché dal loro lavoro di messa in sicurezza della rete ne ricavano un guadagno.
La perpetrazione di attacchi alla blockchain distruggerebbe il valore del frutto (premio per il blocco + fee) di un intenso lavoro di messa in sicurezza della rete.
Gli attori della rete non si comportano in maniera conforme al protocollo per spirito di buon senso. Lo fanno per la brama di guadagno, perché il profitto dell’attacco non compenserebbe la perdita del premio di mining e la distruzione del valore della moneta della rete.
Una rete di oracoli può essere veramente decentralizzata e protetta da azioni malevole solo se riesce a replicare gli stessi meccanismi di incentivi e disincentivi che sono alla base del carattere trustless della blockchain.
Una rete decentralizzata di oracoli
Chainlink è stato ideato con l’obiettivo di risolvere – o quantomeno mitigare al massimo – il noto oracle problem. La buona riuscita di un progetto come Chainlink è vitale per il successo della blockchain su larga scala.
Chainlink è una rete decentralizzata di oracoli che si pone l’obiettivo di creare un ponte tra la blockchain e il mondo esterno.
Connette tramite API una blockchain, come Ethereum, Bitcoin e Hyperledger, a risorse esterne, come dati di mercato, pagamenti bancari, pagamenti retail, sistemi di backend, dati di eventi, altre blockchain e qualsiasi API web esistente.
Chainlink svolge due funzioni:
- connessione degli smart contract a input (dati) esterni (offchain);
- inserimento dei dati nello smart contract per produrre output esterni alla blockchain (pagamenti, trasferimenti di proprietà, trasferimenti di dati).
Chainlink non solo si occupa di reperire i dati esterni alla blockchain per darli in pasto agli smart contract – dinamica essenziale per l’operatività di molti smart contract -, ma anche di generare output esterni alla blockchain, che uno smart contract non ha la capacità di produrre.
Poniamo come esempio uno smart contract che si occupa di tracciare il percorso di consegna di merci da un produttore a un venditore al dettaglio. Lo smart contract prevede che il pagamento venga effettuato solo alla consegna dei beni.
La consegna della merce costituisce per lo smart contract un input, che viene utilizzato per promuovere il pagamento (output) dalla banca del compratore a quella del venditore.
Ma di cosa si compone Chainlink per la sua operatività?
La componente on chain di Chainlink consiste di tre principali smart contract:
- uno per l’abbinamento delle richieste (order-matching contract);
- uno smart contract di aggregazione dei risultati (aggregating contract);
- e un altro per la misurazione della reputazione degli oracoli (reputation contract).
Il flusso di lavoro della rete Chainlink è costituito da tre fasi:
- selezione degli oracoli;
- somministrazione dei dati allo smart contract;
- aggregazione dei risultati.
Lo smart contract di abbinamento raccoglie una richiesta (di fruizione del servizio di oracoli di Chainlink) proveniente da uno smart contract (nota come SLA o “service level agreement”), registra i parametri SLA e raccoglie dai fornitori di oracoli le offerte compatibili con le condizioni poste dal creatore dello smart contract attraverso lo SLA.
L’order-matching contract seleziona le offerte, tenendo conto della reputazione dei fornitori di oracoli (attingendo ai dati del reputation contract) e finalizza lo SLA.
Una volta che gli oracoli selezionati abbiano reperito i dati richiesti, i loro risultati vengono forniti allo smart contract di aggregazione. Questo elabora i dati collettivi e calcola un risultato medio o ponderato, a seconda delle previsioni dello SLA.
La validità (o falsità) della risposta di ciascun oracolo viene segnalata allo smart contract di reputazione.
Infine, il risultato ponderato dell’elaborazione da parte degli oracoli di Chainlink viene restituito allo smart contract (utente) che ha richiesto il servizio di Chainlink.
Principi alla base di Chainlink
Il funzionamento di Chainlink è basato su una serie di principi attraverso i quali si tenta di bissare gli stessi ingranaggi che sono alla base della decentralizzazione e del carattere trustless della blockchain.
Chainlink fa perno su:
- Molteplicità delle fonti di dati
Gli oracoli che operano nel sistema di Chainlink devono, per quanto possibile, reperire i dati non da un’unica fonte, bensì da multiple fonti.
L’unicità della fonte costituisce un singolo elemento di vulnerabilità, anche se gli oracoli sono tutti onesti: se la fonte è generatrice di dati falsi, gli oracoli in buona fede finiranno col somministrare allo smart contract dei risultati che non rispecchiano la realtà, con tutte le conseguenze negative del caso.
Se invece gli oracoli attingono i dati da multiple fonti, la compromissione di una o più fonti (purché non siano la maggioranza) non sarà di ostacolo alla corretta risoluzione dello smart contract. Questo perché le risposte fornite dagli oracoli vengono elaborate e mediate, prima di fornire il risultato allo smart contract richiedente.
- Pluralità di oracoli
La risoluzione di uno smart contract non deve dipendere da un singolo oracolo, il quale potrebbe essere compromesso. Lo smart contract deve ricevere input da diversi oracoli, in modo da rendere ininfluente l’eventuale comportamento malevolo di un oracolo.
La quantità di oracoli dipende comunque dal service level agreement. Il creatore dello smart contract potrebbe richiedere un numero abbondante di oracoli, dato l’elevato valore economico dello smart contract che bisogna risolvere.
Potrebbero esserci però dei casi in cui, data l’esigua importanza economica dello smart contract, sarebbe sufficiente un numero ridotto di oracoli oppure addirittura soltanto uno.
- Aggregazione dei risultati (media aritmetica, media pesata, eliminazione dei risultati estremi dalla media)
Uno dei punti di forza di Chainlink è l’aggregazione dei risultati.
I dati raccolti dagli oracoli non vengono forniti direttamente allo smart contract utente. I dati sono dapprima indirizzati verso uno smart contract di aggregazione, che provvede a elaborarli in base alle previsioni dello SLA.
Per evitare distorsioni derivanti da eventuali dati falsi foniti da oracoli compromessi, o che siano incorsi in errore, si provvede ad elaborare una media, che può essere anche ponderata in base a specifici parametri previsti nello SLA. Si potrebbe prevedere, per il calcolo della media, anche l’eliminazione dei due risultati più estremi.
La funzione di aggregazione dei risultati costituisce un ulteriore filtro, volto a garantire che il corretto operato di uno smart contract non venga compromesso dall’esistenza di un single point of failure.
Gli strumenti utilizzati da Chainlink per favorire la presenza sulla rete di soli oracoli onesti sono:
- sistema di reputazione;
- servizi di certificazione;
- incentivi e disincentivi economici per gli oracoli.
Il sistema di reputazione consente di classificare gli oracoli in base alle loro performance passate.
Questo strumento induce i nodi ad agire onestamente, onde evitare di ricevere valutazioni negative da altri utenti, che verrebbero poi visualizzate dai futuri clienti.
Una reputazione negativa provocherebbe la perdita delle potenziali entrate derivanti dalla possibilità di offrire il servizio a futuri smart contract.
La prima fase del flusso di lavoro nel sistema di Chainlink consiste nella selezione – soprattutto in base alla reputazione maturata -, da parte dello smart contract di abbinamento, degli oracoli che rientrano nei parametri definiti dallo smart contract che richiede il servizio di Chainlink.
Il sistema di reputazione classifica i nodi in base a determinati criteri, come:
- il numero totale di richieste assegnate;
- il numero totale di richieste completate;
- il numero totale di richieste accettate;
- il tempo medio di risposta;
- la quantità delle sanzioni pagate.
I servizi di certificazione hanno l’obiettivo di prevenire gli attacchi che non possono essere identificati attraverso i sistemi automatici on-chain.
La circostanza che un oracolo tenti di barare è facilmente verificabile attraverso i meccanismi on chain descritti in precedenza. Si noterà che la risposta dell’oracolo disonesto è nettamente scostata da quella degli altri oracoli, dove lo smart contract di aggregazione provvederà a segnalarla al reputation contract, che costruirà una reputazione negativa per l’oracolo disonesto.
Esistono dei potenziali vettori d’attacco che non sono rilevabili attraverso i suddetti meccanismi, come gli attacchi di Sybil e i comportamenti di mirroring.
Gli attacchi di Sybil consistono nel controllo da parte di un attaccante di multipli oracoli, apparentemente indipendenti. L’avversario tenta di dominare il gruppo di oracoli della rete, facendo partecipare multipli oracoli malevoli per fornire dati falsi in momenti strategici, ad esempio al fine di influenzare le transazioni in smart contract di alto valore.
Un attacco di Sybil può derivare non solo dalla circostanza che la maggioranza di oracoli malevoli siano sotto il controllo di un singolo avversario, ma anche dalla collusione tra più attaccanti che controllano oracoli malevoli.
I servizi di certificazione vengono impiegati anche per prevenire i comportamenti di mirroring.
Per ridurre i costi operativi, un attaccante può adottare un comportamento chiamato mirroring, con cui fa sì che gli oracoli inviino risposte individuali basate sui dati ottenuti da una singola interrogazione di una fonte di dati.
Vuol dire che gli oracoli disonesti possono condividersi i dati al di fuori della blockchain, ma fingendo di reperirli e fornirli in modo indipendente. Questo comportamento annichilisce i principi di molteplicità delle fonti e pluralità degli oracoli.
Il mirroring beneficia un avversario, che egli scelga o meno di fornire dati falsi. Pone una minaccia meno grave rispetto alla falsificazione dei dati, ma degrada comunque la sicurezza perché elimina la correzione degli errori risultante dall’interrogazione di multiple fonti di dati.
Per quanto riguarda la certificazione degli oracoli, il team di Chainlink o altri servizi esterni possono sponsorizzare i fornitori di oracoli di alta qualità. L’endorsement potrebbe derivare dal monitoraggio delle statistiche, condotto al fine di individuare i nodi ritenuti più affidabili.
Abbiamo già parlato a più riprese di incentivi economici. Chainlink implementa dei meccanismi volti a favorire il corretto comportamento da parte dei nodi oracolo.
Un oracolo non può fornire i dati ad uno smart contract senza avere “skin in the game“. Vuol dire che prima di essere autorizzato a servire lo smart contract, l’oracolo deve mettere in stake delle somme.
Mettere in stake vuol dire vincolare delle somme di denaro (nel token LINK). Il vincolo funge da garanzia sul corretto comportamento dell’oracolo, in modo che se l’oracolo fornisce dati falsi perderà la garanzia che ha vincolato, registrando una perdita.
Non è l’oracolo a determinare la somma da mettere in stake. Altrimenti potrebbe vincolare una somma per egli irrisoria, rendendo conveniente la perpetrazione di un attacco.
Il creatore dello smart contract stabilisce la somma a garanzia che il nodo oracolo deve vincolare per poter risolvere lo smart contract.
La garanzia funge sia da penalità che da assicurazione sullo smart contract, nel caso in cui il nodo agisca in modo dannoso o non professionale, in particolare se i suoi dati risultano essere errati quando confrontati con quelli forniti da altri nodi che lavorano sullo stesso smart contract.
Il nodo malevolo dovrà pagare al creatore dello smart contract la quantità di garanzia concordata al momento dell’ingaggio, come definita nello SLA, se i suoi dati presentano dei valori palesemente anomali.
Gli smart contract di valore esiguo potrebbero non richiedere elevate garanzie, ma gli smart contract di alto valore e/o di rilevante importanza richiederanno maggiori garanzie per assicurarsi che l’oracolo svolga il proprio lavoro secondo i più elevati standard.
Ad esempio, per uno smart contract che regola un’assicurazione del valore di milioni di euro, all’oracolo verrebbe richiesto di presentare delle garanzie quantomeno pari al valore dello smart contract che deve servire.
Le dinamiche economiche della rete Chainlink vengono regolate attraverso il token LINK.
LINK
LINK è un token ERC20, con alcune funzioni addizionali dello standard ERC223, che funge da “moneta” della rete Chainlink. Il numero totale di token LINK è di 1.000.000.000, di cui 350.000.000 in circolazione.
Il 19 settembre 2017 si è tenuta una ICO (initial coin offering), attraverso la quale sono stati raccolti 32.000.000 di dollari:
- 29.000.000 USD sono stati venduti a VC privati, con un investimento minimo di 100 ETH;
- i restanti 3.000.000 sono stati venduti al pubblico con un investimento minimo di 7 ETH.
Il token LINK è utilizzato per una duplice funzione:
- remunerare gli oracoli che forniscono i dati;
- fungere da garanzia per il corretto comportamento da parte degli oracoli nel risolvere gli smart contract.
Abbiamo evidenziato a più riprese che gli oracoli sono disincentivati ad assumere comportamenti scorretti attraverso la sanzione consistente nella perdita dei LINK vincolati a garanzia.
LINK non ha solo funzione di garanzia, è utilizzato anche per pagare gli oracoli che forniscono i dati. Nessuno svolgerebbe del lavoro gratuitamente, perciò gli smart contract che richiedono dei dati devono anche corrispondere un compenso agli oracoli che glieli forniscono.
La remunerazione comprende il recupero dei dati da fonti esterne alla blockchain, la formattazione dei dati in formati leggibili alla blockchain e la computazione offchain.
I prezzi vengono stabiliti dagli operatori dei nodi e sono soggetti al mercato. L’oracolo non può pretendere somme spropositate, non in linea con i prezzi del particolare mercato di riferimento e/o con la propria reputazione, altrimenti non verrebbe scelto dagli smart contract.
LINK non solo viene corrisposto agli oracoli come compenso per il lavoro di somministrazione dei dati, ma funge anche da garanzia sulla correttezza del loro operato.
Il sistema di garanzia/sanzionatorio – ampiamente descritto in precedenza – implica che i nodi oracoli debbano fornire la copertura assicurativa richiesta dal creatore dello smart contract.
La risoluzione dello smart contract con dati non validi comporta la perdita della garanzia vincolata.
Per garantirsi maggiore fiducia e sicurezza, in particolare per smart contract di alto valore e/o elevata importanza, il creatore dello smart contract richiederà garanzie di maggior valore (si pensi ai pagamenti di elevati importi riguardanti obbligazioni, contratti derivati di elevato valore, trasferimento di dati sensibili e trasferimento di beni costosi, come una casa).
Considerando come è architettato il sistema di Chainlink, si potrebbe elaborare una proiezione speculativa sulla futura capitalizzazione di LINK.
Poiché viene utilizzato come collaterale sul valore degli smart contract, in linea di principio la capitalizzazione totale del token LINK dovrebbe essere pari al valore complessivo dell’assicurazione richiesta su tutti gli smart contract che utilizzano il servizio in un dato momento.
Maggiore è il valore del token maggiore è la sicurezza e l’affidabilità della rete Chainlink, poiché gli smart contract sarebbero supportati da elevato valore assicurativo che genera maggiore fiducia nella rete.
Si tratta comunque di sole speculazioni sul possibile futuro valore di LINK, in ragione del fondamentale ruolo esercitato in questo sistema. Resta che la forte crescita di prezzo registrata nei mesi precedenti non deve essere attribuita ad un aumento dell’adozione di pari grado, ma piuttosto a proiezioni speculative da parte di trader e investitori.
La maggior parte dei creatori di smart contract che utilizzeranno gli oracoli di Chainlink, verosimilmente, non interagiranno nemmeno con il token.
Sono in fase di realizzazione dei relay fiat per consentire al cliente di pagare in qualsiasi valuta desideri, mentre il pagamento in LINK agli operatori dei nodi avverrà in background tramite exchange decentralizzati e semplici protocolli.
Corsa all’or…acolo
Spero che questo focus su Chainlink sia stato utile per offrire una visione più chiara del contesto in cui si cala una rete decentralizzata di oracoli e dell’essenzialità della sua funzione nel servire la blockchain.
Ho volutamente tralasciato alcune questioni più tecniche, come l’utilizzo dei TEE (trusted execution environment) e la visione a più lungo termine di trasferimento dei flussi di Chainlink principalmente offchain. Ho preferito soffermarmi sul concetto generale.
Non resta che riflettere su come la blockchain sia forse la più grande invenzione dell’ultimo decennio.
Prima che il famigerato Satoshi Nakamoto calasse fuori l’asso dalla manica, non era possibile scambiare denaro in forma digitale in maniera libera e senza la supervisione di un intermediario.
Gli intermediari finanziari hanno rappresentato – e continuano a costiture – dei centri di accumulazione di potere, in spregio della libertà, della privacy e infine anche dell’efficienza.
A partire dal 2009, attraverso questo protocollo divino, siamo capaci di scambiarci valore in maniera totalmente libera e inarrestabile.
Ma se Bitcoin ha costituito l’ariete per sfondare le pareti di una fortezza apparentemente inespugnabile, con Ethereum si è andati oltre.
Ethereum ha elaborato un modello di blockchain con finalità non limitata al solo scambio di valore. Con Ethereum si è aperta la possibilità di creare smart contract general purpose per l’esecuzione di complesse funzioni.
Attraverso Ethereum si può ingegnare su blockchain non solo un nuovo sistema monetario decentralizzato, ma addirittura piu complessi sistemi finanziari ed economici.
Si pensi solo alla tokenizzazione degli asset.
Vari tipi di asset del mondo reale (azioni delle società, immobili, oggetti d’arte, proprietà intellettuale) possono essere convertiti in token digitali, divenendo delle astrazioni basate sulla blockchain.
Il processo di tokenizzazione degli asset del mondo reale è sul punto di rivoluzionare la maniera in cui operano svariati business, migliorando la velocità delle transazioni, garantendo trasparenza, responsabilità e soprattutto elevando la liquidità.
Lo sdoganamento del commercio su blockchain – che non conosce soluzione di continuità – sarà la causa scatenante di un nuovo boom economico.
Per rendere la blockchain davvero utile e funzionale a questo scopo, è necessario che tali processi avvengano in maniera effettivamente decentralizzata e trustless, altrimenti la blockchain diventa un’inutile complicazione.
Bisogna affrontare l’oracle problem per prevenire la presenza di single point of failure nei complessi processi che si innervano nell’economia basata su blockchain.
Che sia Chainlink o qualcos’altro, chi riuscirà a risolvere definitivamente il problema dell’oracolo darà vita a qualcosa di maggior valore delle cripto stesse..
DISCLAIMER: Il presente articolo non costituisce alcun invito/sollecitazione all’investimento. Ha finalità esclusivamente didattiche, di discussione delle caratteristiche e delle finalità di un progetto del panorama blockchain. L’autore non possiede alcun token LINK.
Commenti
2 Responses
Ottima spiegazione!
Complimenti
Complimenti davvero per l’ottima esposizione.
Anche se letta dopo mesi è di grande valore.