Oracle
Een oracle is een dienst die blockchains voorziet van informatie uit de buitenwereld — prijzen, weer, sportuitslagen of data van andere ketens — die smart contracts zelf niet kunnen ophalen. Blockchains zijn bewust afgesloten systemen: elke node moet identieke resultaten berekenen, dus contracten kunnen geen webverzoeken doen of iets buiten de keten (off-chain) waarnemen. Oracles overbruggen die kloof door externe data in een vorm op de keten te schrijven die contracten kunnen lezen.
De inzet is hoog, want een contract is maar zo betrouwbaar als zijn input — het "oracle-probleem". Eén enkele databron is één enkel faalpunt, dus serieuze ontwerpen decentraliseren: Chainlink, het meest gebruikte oracle-netwerk, bundelt prijzen van veel onafhankelijke nodebeheerders en dataleveranciers tot on-chain feeds, en Pyth geeft prijzen door die worden aangeleverd door handelsbedrijven en exchanges. Een DeFi-leenmarkt als Aave leunt bijvoorbeeld op de prijsfeeds van oracles om te bepalen wanneer het onderpand van een kredietnemer genoeg is gedaald om liquidatie te starten; als de feed de prijs verkeerd doorgaf, zouden posities ten onrechte kunnen worden geliquideerd of het protocol kunnen worden leeggehaald.
Oracle-manipulatie is een echte aanvalscategorie — verschillende DeFi-exploits werkten door een dun verhandelde prijs te verstoren die een protocol naïef als oracle gebruikte, om vervolgens te lenen tegen de valse waarde. Een veelvoorkomende misvatting is dat oracles de waarheid verifiëren; ze geven alleen door en bundelen wat bronnen melden, dus hun beveiliging berust op de onafhankelijkheid en eerlijkheid van die bronnen. Naast prijzen leveren oracles ook verifieerbare willekeur voor games en NFT's, en activeren ze contracten bij gebeurtenissen in de echte wereld, zoals vliegtuigvertragingen voor parametrische verzekeringen.