Un oracolo (blockchain oracle) è un servizio di terze parti che collega gli smart contract con il mondo esterno, principalmente per alimentarsi con informazioni prese da fuori. L’oracolo è il livello che interroga, verifica e autentica le fonti di dati esterne, solitamente tramite API affidabili, feed di dati aziendali proprietari e feed di Internet of Things e quindi inoltra tali informazioni.

Molte applicazioni Ethereum utilizzano oracoli. Ad esempio, Augur utilizza ed elabora dati e informazioni per capire come regolare il suo servizio di scommesse. Chainlink fornisce invece servizi di rete Oracle decentralizzati a molte blockchain diverse (Chainlink viene citata molto spesso come il miglior esempio di oracolo nel mondo cripto).
Esempi di dati trasmessi dagli oracoli agli smart contract includono informazioni sui prezzi, il completamento con successo di un pagamento, la temperatura misurata da un sensore, i risultati delle elezioni, ecc. I dati possono essere forniti da altri software (database, server o essenzialmente qualsiasi fonte di dati online) o tramite hardware (sensori, lettori di codici a barre, ecc.). Questi sono i cosiddetti “oracoli in entrata” (inbound oracle).
Gli “oracoli in uscita” (outbound oracle) inviano invece informazioni dagli smart contract al mondo esterno. Ad esempio, uno smart contract che riceve un pagamento potrebbe inviare informazioni tramite un outbound oracle a un meccanismo che sblocca una serratura intelligente.
Se un oracolo si basa su un’unica fonte di verità (centralizzata), può essere un problema: la fonte di dati potrebbe essere violata da un attacco man-in-the-middle o modificata dal suo proprietario, al fine di influenzare lo smart contract. Da ciò nasce il concetto degli oracoli decentralizzati (consensus oracle), che aumentano l’affidabilità delle informazioni fornite agli smart contract interrogando più fonti di dati, distribuendo in questo modo la fiducia tra i partecipanti.