Een blockchain-oracle is een third-party dienst die het mogelijk maakt om smart contacts te voorzien van externe data. Dit resulteert in een link tussen verschillende blockchains en de buitenwereld.
Smart contracts en blockchains kunnen geen connectie maken tussen off-chain gegevens (oftewel data die zich buiten het eigen netwerk of de blockchain bevindt). Voor de meeste overeenkomsten is het echter nodig om relevante data vanuit de buitenwereld te krijgen om een overeenkomst (ook wel contract genoemd) af te sluiten. Precies hiervoor bieden blockchain-oracles een oplossing. Zij vormen namelijk de link tussen off-chain en on-chain gegevens. Oracles zijn van cruciaal belang voor het uitbreiden van blockchain data en daarmee het ecosysteem. Ze vergroten namelijk de reikwijdte en functies van smart contracts.
Het is overigens belangrijk om te begrijpen dat een blockchain-oracle niet de bron van de gegevens is. Het functioneert als een tussenlaag die juist de externe gegevens opvraagt, verifieert en authenticeert. Oracles communiceren verschillende soorten data, bijvoorbeeld: transacties, prijsinformatie of een bepaalde temperatuur die gemeten is door een slimme sensor.
Om externe data voor een smart contact op te roepen, moeten smart contracts openstaan voor gegevens van derde. Sommige blockchain-oracles kunnen niet alleen data versturen naar een smart contract, maar ook data terugsturen naar een externe bron. Zo functioneren oracles dus als tussenpersoon voor data tussen smart contracts en externe data bronnen.
Er zijn veel soorten verschillende oracles en je kunt ze in veel opzichten ook niet goed met elkaar vergelijken. Ieder oracle werkt namelijk op een andere manier. In dit artikel bespreken we de verschillende soorten blockchain-oracles.
Voorbeeld van een blockchain-oracle
Om een beeld te krijgen van een blockchain-oracle, gaan we kijken naar een weddenschap tussen twee vrienden: Alice en Bob. Zij sluiten een weddenschap af over de Amerikaanse presidentsverkiezingen. Alice is overtuigt dat de republikeinse presidentskandidaat de verkiezingen gaat winnen, terwijl Bob juist gelooft dat de democratische kandidaat het meeste kans maakt. Om de weddenschap in goede banen te leiden, sluiten de twee vrienden voorwaarden voor de weddenschap af.
De voorwaarden en het geld dat ze beide dienen in te leggen, zetten ze cast in een smart contract. Dit contract al automatisch het geld uitkeren aan aan de winnaar van de weddenschap. Het smart contact kan echter niet weten wanneer de presidentsverkiezingen af zijn gelopen en wie de winnaar is. Hiervoor heeft het contract dus externe data nodig, oftewel een blockchain-oracle. Zodra de verkiezingen zijn afgelopen en er bekend is geworden wie de nieuwe Amerikaanse president wordt, vraagt de oracle aan een trusted API wie de winnaar is. D oracle geeft vervolgens de informatie door aan de smart contract van Alice en Bob. Het contract stuurt de winnaar het geld, afhankelijk van de uitkomst.
Zonder een blockchain-oracle was het dus niet mogelijk geweest om een weddenschap af te sluiten en een winnaar te kiezen. Oracles vervullen dus in veel gevallen een cruciale rol voor smart contracts.
De verschillende soorten blockchain-oracles
Zoals we hierboven al schreven, zijn er een aantal verschillende soorten blockchain-oracles. Grofweg zijn ze in drie categorieën in te delen, maar om dit te doen moeten er eerst drie vragen worden gesteld:
- Is de bron van de data software of hardware?
- Is de data binnenkomend of uitgaand?
- Is het gecentraliseerd of gedecentraliseerd?
Het is natuurlijk mogelijk dat een blockchain-oracle binnen meerdere categorieën valt. Zo is een oracle die informatie van een overheidssite haalt, een gecentraliseerde inkomende software-oracle.
Software oracles
Software-oracles halen hun informatie op bij online bronnen en versturen deze data naar de blockchain. Deze data is bijvoorbeeld afkomstig uit online databases, servers en websites.
Een software-oracle is altijd verbonden met het internet. Hierdoor is een oracle altijd instaat om realtime informatie op te halen bij informatiebronnen of data terug te sturen vanuit een smart contract. Software-oracles komen in de praktijk het meeste voor.
Voorbeelden van data die software-oracles ophalen bij informatiebronnen zijn: wisselkoersen, reisinformatie of uitslagen van sportwedstrijden.
Hardware oracles
Er zijn smart contracts die gebruik maken van elektronische sensoren, barcodescanners en andere apparaten die data verzamelen. Om deze informatie op te halen, maken deze contracten gebruik van hardware-oracles. Deze zijn speciaal ontworpen om informatie uit de fysieke wereld te halen en beschikbaar te maken voor smart contracts.
Het doel van een hardware-oracle is het ‘vertalen’ van gebeurtenissen in de ‘echte wereld’ en hiervan digitale waardes te maken. Deze waardes worden vervolgens omgezet in data die gebruikt kunnen worden door smart contracts.
Denk bijvoorbeeld aan een slimme sensor die gecontroleerd of een vrachtwagen goederen heeft opgehaald bij een laadperron. Indien dit is gebeurd, stuurt de sensor deze data door naar de desbetreffende smart contract en op basis van deze data kan het contract een bepaalde handeling uitvoeren.
Inkomende en uitgaande oracles
Zogeheten ‘inkomende oracles’ versturen data van externe bronnen naar smart contracts. ‘Uitgaande oracles’ doen juist precies het tegenovergestelde: zij versturen informatie van smart contracts naar de buitenwereld.
Een voorbeeld van een uitgaande oracle kan het gebruik van een slim slot (smart lock) zijn. Stel je Sturt ethers naar een adres van een smart lock zodat je deze kunt ontgrendelen en bijvoorbeeld gebruik kan maken van iemands auto. Het smart lock zal doorgeven aan een smart contract dat het een bepaald aantal ethers heeft ontvangen en vervolgens zal het contract, het slimme slot ontgrendelen.