Pionieri della blockchain
Accedi

Oracle problem: una tra le più grandi sfide del mondo blockchainTempo di lettura: 6 min.

Una tra le sfide più grandi che la blockchain sta intraprendendo è quella di trovare una soluzione all'oracle problem. In questo articolo scopriamo insieme di cosa si tratta e qualche spunto in merito.

Negli ultimi due articoli che ho scritto riguardanti “tutta la verità sugli smart contract” (parte 1 e parte 2), avevamo visto una questione molto ostica legata agli smart contract ovvero quella dell’oracle problem che possiamo tradurre in italiano come “problema dell’oracolo“.

Si tratta di una questione abbastanza spinosa che tende a minare una delle caratteristiche fondamentali della blockchain e dei suoi smart contract ovvero il concetto di trustless.

Prima di addentrarci nel merito capiamo insieme di cosa si tratta.

Cos’è l’oracle problem?

Dal momento che uno smart contract non ha conoscenza della realtà esterna, in alcuni casi deve fare affidamento su una fonte che gli dia un input per poter procedere e in determinate condizioni.

Questo è legato al fatto che qualsiasi sistema informatico non può in alcun modo conoscere il mondo esterno, l’unico modo che ha per agganciarsi alla realtà che viviamo fuori dai pc è quella di fare affidamento su degli input.

Nel caso della blockchain e più nello specifico negli smart contract questo implica interporre una terza parte esterna al contratto e alle sue parti che lo hanno stipulato.

Questa terza parte darà degli input al contratto per permettergli di eseguire dei comandi successivi, ed è in quel preciso momento che prende vita il problema dell’oracolo.

Facciamo subito un esempio pratico.

Immagina un contratto di assicurazione di una casa.

Il contratto tra le due parti, proprietario della casa ed assicurazione, attesta che: se la casa viene incendiata, l’assicurazione pagherà al proprietario 2 milioni di euro.

In questo contratto ci sono fondamentalmente 3 elementi: una polizza attiva, un controllo nei confronti dello stato della casa e, se si verifica la condizione di incendio, pagare il contraente della polizza.

Semplice giusto?

Nei contratti ordinari, intesi come quelli cartacei firmati su carta con penna, prima di vedersi pagata la nostra polizza esistono decine di punti interrogativi come:

  • Verso quale conto bancario deve pagare la compagnia assicuratrice?
  • La polizza è ancora attiva?
  • Il contraente ha sempre rispettato i propri oneri?
  • Chi presenta il reclamo è il contraente?
  • La compagnia assicurativa ha i fondi per pagare il contraente?

Solo dopo aver avuto le risposte a tutte queste ed altri interrogativi allora possiamo giungere al nocciolo della questione, ovvero: la casa è bruciata veramente?

Questa risposta richiederà l’attestazione di un ente terzo, che nello specifico potrebbero essere i vigili del fuoco, e a quel punto il cerchio si chiuderà.

Nel mondo blockchain tutto invece si “riassume” ad uno smart contract.

Il contratto intelligente è in grado di verificare in maniera autonoma tutte le condizioni che abbiamo citato sopra, garantisce la presenza di fondi nell’address dell’assicurazione, conosce l’address del contraente, conosce lo stato dei pagamenti della polizza (sa quindi se è attiva o meno), l’unica cosa che può variare la sua esecuzione facendogli effettuare l’operazione successiva è il cambio del valore legato allo stato della casa (integra/bruciata).

In quel caso sono i vigili del fuoco che dando un input al contratto possono cambiare tale stato e far scattare l’operazione successiva che è il pagamento della polizza.

Come proteggersi dagli oracoli corrotti o sleali

Ora la domanda sorge spontanea: cosa fare se l’oracolo è corrotto e poco leale?

Come potrai capire questa condizione se si verifica va ad intaccare completamente l’intero sistema degli smart contract che cercano di agganciarsi al mondo reale.

L’acronimo GIGO (Garbage In Garbage Out) riassume perfettamente il problema degli oracoli, ovvero se l’input esterno è spazzatura l’output sarà spazzatura.

Quindi se si alimentano gli smart contract con dati errati, i contratti elaborano le informazioni così come sono, restituendo quindi un risultato errato e non previsto.

Possiamo dire che in questi casi “l’intelligenza” degli smart contract è direttamente proporzionale (o strettamente correlata) all’intelligenza/etica/onestà degli oracoli, che possono fargli cambiare il loro stato e fargli eseguire azioni successive al cambio di stato.

Tutto sommato lasciami dire che la blockchain allo stesso tempo traccia l’oracolo ed i suoi input.

Se infatti un oracolo effettua più di una volta degli input falsi e sbagliati, tutto questo è scritto e salvato ben in chiaro nella blockchain.

A questo punto la comunità potrà marcarlo come fraudolento ed escluderlo da qualsiasi altro contratto.

Se questo dovesse accadere, quello che potremmo fare è impugnare tali prove per denunciare l’oracolo, nello specifico esempio citato sopra un oracolo poco disonesto potrebbe essere accusato di frode assicurativa.

Conclusione

Arrivati a questo punto spero che il problema dell’oracolo ti sia chiaro.

Per quanto all’atto pratico sia un elemento che mette alcuni dubbi sugli smart contract, sulla loro diffusione ed utilizzo, lasciami dire che non tutti i mali vengono per nuocere.

Infatti nonostante l’oracle problem esista, mi affiderei con molto più piacere ad uno smart contract piuttosto che ad un contratto classico, questo perchè gli smart contract isolano i cambiamenti di stato in maniera chiara.

Mi spiego meglio.

In un contratto ordinario se dovessi ricorrere alla richiesta di riscatto della polizza assicurativa, nel momento in cui eseguo la richiesta non so in che stato mi trovo, ovvero se sto aspettando che un agente intervenga, se sto aspettando il pagamento, se l’assicurazione ha i fondi per pagarmi o altre possibili situazioni.

Con uno smart contract tutti questi fattori vengono eliminati e l’unica cosa che dovrò monitorare è l’input dell’oracolo, input che poi potrò anche verificare.

A fronte di quanto detto in questo articolo, azzarderei nel dire che la soluzione all’oracle problem è da ricercare più nel sociale che nel tecnico, tutto sommato esistono aziende che hanno intrapreso questa grande sfida a livello tecnico, una su tutte ChainLink supportata anche da Google in questa impresa, che sta introducendo il sistema di Proof of concept (PoC).

Spero questo articolo abbia ampliato ulteriormente la tua visione sul mondo blockchain. Se l’hai trovato utile aiutami a condividerlo con i tuoi amici e colleghi e come sempre se hai dubbi o domande lascia pure un commento qui sotto e ti risponderò quanto prima.

Condividi su facebook
Condividi su twitter
Condividi su linkedin
Condividi su telegram
Condividi su whatsapp
Condividi su reddit
Daniele Della Corte

Daniele Della Corte

Nasco come programmatore, per poi passare al marketing e alla SEO. Amo gestire e coordinare progetti online e seguire da vicino l'innovazioni tecnologiche. Da qualche anno sto focalizzando le energie sul progetto Ethereum.

Vuoi approfondire le dinamiche di questo articolo?

Prenota una consulenza con un esperto del team di EtherEvolution che saprà rispondere alle tue domande.
Daniele Della Corte

Daniele Della Corte

Nasco come programmatore, per poi passare al marketing e alla SEO. Amo gestire e coordinare progetti online e seguire da vicino l'innovazioni tecnologiche. Da qualche anno sto focalizzando le energie sul progetto Ethereum.

Vuoi approfondire le dinamiche di questo articolo?

Prenota una consulenza con un esperto del team di EtherEvolution che saprà rispondere alle tue domande.

6 risposte

    1. Grazie Pierluigi, sono felice che ti sia stato utile, se ti fa piacere aiutaci a far conoscere queste tematiche condividendolo con 5 amici 🙂

  1. Non ho capito in base a cosa un oracolo si reputa affidabile e se è possibile trovarsi nella condizione che si mettano tutti daccordo x prendere una decisione a sfavore del b
    eneficiario. Grazie

    1. Ciao Maria,
      non possiamo sapere a monte se un oracolo è affidabile o meno, almeno se è la prima volta che viene scelto per tale ruolo, lo potremmo definire solo in funzione della reputazione che si costruirà nel tempo, per questo concludevo dicendo che la soluzione è da trovare più nel sociale che nel tecnico.

      All’atto pratico un oracolo sleale potrebbe dichiarare il falso, ma in quel caso la traccia della sua falsità rimarrebbe salvata nella blockchain e potrebbe essere impugnata legalmente quindi sotto questo aspetto non avrebbe neanche tutti questi vantaggi.

      C’è augur che è un sistema di scommesse che fa uso di oracoli, che incentiva l’oracolo a dire la verità dando lui una fee.

  2. il principio portante su cui poggia il mondo Blockchain sembra voler essere quello della FIDUCIA e personalmente è qualcosa di potentissimo e che nel lungo termine otterrà risultati. Come facevi presente nell’articolo anche secondo me la complicazione più grossa deriverà dal sociale più che dal tecnico. L’ottenimento di risultati sarà meno impossibile di come sembrava fino a qualche anno fa e mi auguro potrà essere lo stimolo di coinvolgimento comune e sociale.. Complimenti per l’articolo

    1. Grazie Stefano, sono felice che l’articolo sia stato apprezzato.

      Permettimi di precisare, sarebbe più corretto dire che il principio portante è l’assenza di fiducia (trust-less), immagino tu indendevi questo, visto che appunto con la blockchain non ci dovrebbero essere enti terzi di cui fidarci per svolgere le transazioni, qualunque esse siano, economiche o sociali.

      Credo fortemente che la blockchain ci responsabilizza sotto tanti aspetti, il punto è che ad oggi si vede solo quello finanziaro, ma c’è un intero mondo dietro.

      Grazie ancora e continua a seguirci!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ricevi 4 video dall'evento EtherEvolution LIVE

e altre informazioni utili per capire la blockchain ed il mondo di Ethereum

Ricevi 4 video dall'evento EtherEvolution LIVE

e altre informazioni utili per capire la blockchain ed il mondo di Ethereum