In de wereld van Decentralized Finance wordt er steeds meer gewerkt met smart contracts. Hiermee kunnen twee partijen een overeenkomst sluiten zonder dat ze hiervoor elkaar hoeven te vertrouwen. Er kunnen voorwaarden worden meegegeven aan het contract zoals bijvoorbeeld de toekomstige prijs van Bitcoin of de uitslag van een verkiezing. Het probleem met smart contracts is alleen dat ze geen data kunnen ophalen van buiten de blockchain. Hier zijn oracles voor nodig.
Het probleem met blockchain
De ledger van een blockchain wordt verspreid over veel verschillende Nodes. Dit maakt het zeer geschikt als grootboek om financiële transacties vast te leggen. Alle Nodes beschikken over dezelfde data en hiermee zijn vertrouwde transacties gegarandeerd. Er ontstaan alleen problemen wanneer er data van buiten de blockchain nodig is.
Wil je bijvoorbeeld met behulp van een smart contract een variabel bedrag versturen afhankelijk van de prijs van ETH? Dan moet je bijvoorbeeld met behulp van een API sleutel de Ethereum prijs van dat moment ophalen. Op het moment dat de Nodes deze transactie willen controleren zullen ze dat in dit geval ook met een API moeten doen. De prijs van ETH is dan alleen alweer anders aangezien het niet op exact hetzelfde moment gecontroleerd is.
De Nodes kunnen in dit geval geen overeenstemming verkrijgen omdat ze niet over dezelfde data beschikken. Er kan dus geen consensus bereikt worden op de blockchain. Het is daarom belangrijk dat de data uit de buitenwereld op een goede manier verbonden wordt met de blockchain wereld. Hierbij gaat het niet alleen om de crypto koersen, maar ook bijvoorbeeld het weer of verkiezingsuitslagen. Alle externe data moet in principe te gebruiken zijn op de blockchain met behulp van Oracles.
Blockchain Oracles
Een blockchain Oracle is een service die smart contracts voorziet van data buiten de blockchain. Een Oracle legt als het ware de verbinding tussen de blockchain en de buitenwereld.
Een Oracle is de extra laag die de smart contracts voorziet van externe bronnen. Het is niet de informatiebron zelf. Er bestaan verschillende soorten Oracles en deze werken allemaal anders. Wat ze allemaal gemeen hebben is dat ze gemaakt zijn om geverifieerde externe informatie te kunnen gebruiken op de blockchain.
Een voorbeeld hiervan is bijvoorbeeld de uitslag van de verkiezingen. Wij zouden een weddenschap kunnen plaatsen op de Nederlandse verkiezingen. Hier spreken we een bedrag voor af voor de winnaar en sluiten de overeenkomst in een smart contract. Na de verkiezingen zal het smart contract met behulp van een oracle de juiste verkiezingsuitslag ophalen van geverifieerde bronnen en de overeenkomt sluiten. De winnaar krijgt in dit geval automatisch de winst uitgekeerd.

Het Oracle probleem
Een belangrijk probleem bij een Blockchain Oracle is de bronnen die geraadpleegd worden door het Oracle. Op het moment dat een bron ‘aangevallen’ wordt, is namelijk niet alleen de bron niet meer betrouwbaar. Ook alle smart contracts die vertrouwen op deze bron zijn in dit geval aangetast. In theorie zou een hacker dan ook een bron kunnen aanvallen om invloed uit te oefenen op de smart contracts en het geld dat hieraan verbonden zit.
Een uitdaging voor de projecten die dé blockchain Oracle willen maken zit hem dan ook in de manier waarop de informatie van de buitenwereld opgehaald wordt. Is dit slechts via een enkele bron, dan is de blockchain in feite niet meer decentraal. Meerdere Oracles, meerdere bronnen en een beloningsstructuur voor juiste informatie zijn onmisbaar voor goede Oracles.
Voorbeelden van blockchain Oracles
Er zijn verschillende projecten die werken aan blockchain Oracles. De vraag naar een goed mechanisme is groot met de opkomst van smart contracts en DeFi. Chainlink is een van deze projecten die het goed doet in de afgelopen maanden. Ook bijvoorbeeld Augur, Tellos en Band Protocol werken aan hetzelfde doel, namelijk het maken van een Blockchain Protocol voor de massa. Ieder project maakt de oracles op een andere manier, maar in feite proberen ze allemaal een zo’n goed mogelijk systeem te maken waarmee externe data gebruikt kan worden op de blockchain.