Wat is orakel architectuur?

Een database is een gegevensbank waarin informatie digitaal wordt opgeslagen. Een orakel-database slaat de data op in gecoördineerde bestanden op disk. De informatie is systematisch georganiseerd in de vorm van fysieke bestanden, die goed toegankelijk en eenvoudig te analyseren zijn. Wanneer een smart contract op een blockchain wordt uitgevoerd, dan moet het netwerk kunnen beschikken over bepaalde informatie. Een deel van deze data is niet binnen het digitale ecosysteem zelf aanwezig en zal moeten worden verkregen van buitenaf. Met deze externe informatie (van buiten de blockchain) kan het smart contract zelf controleren of aan alle voorwaarden en criteria is voldaan, om op de gewenste manier te worden uitgevoerd. Deze voor de overeenkomst relevante data kan worden verkregen uit orakel databases. Deze orakels leveren de informatie aan het blockchainnetwerk aan en het smart contract-protocol kan vervolgens met deze data aan de slag. De informatie van het orakel triggert automatisch een aantal vooraf bepaalde acties, die het smart contract moet uitvoeren.

 

Waaruit bestaat een Orakel Database Server?

Eén van de belangrijkste factoren van een orakel is “instance”. Dit is een combinatie van geheugen en achtergrondprocessen. Het oracle maakt gebruik van een DB-writer. Een DB-writer schrijft naar de database, waar de files worden opgeslagen. Een database server bestaat dus uit een heleboel achtergrondprocessen en een geheugenstructuur. Dat is de “instance”. Daarnaast bestaat de database uit database files. De “instance” en de database files vormen samen de orakel database server. De “instance” en de database werken met elkaar samen op een zeer verfijnde manier. Het hele proces is bijzonder goed gecoördineerd. Orakel achtergrondprocessen zorgen ervoor dat alles wat er in het geheugen gebeurt, gesynchroniseerd blijft met de gegevens van bijvoorbeeld extern opgeslagen informatie. Deze externe opslag zou bijvoorbeeld kunnen bestaan in de vorm van een disc. Dus we kunnen de orakel architectuur nog uitbreiden met disc.

 

 

Geheugen is sneller

Geheugen is veel sneller dan informatie verkrijgen vanaf een disc, daarom zal een orakel eerst proberen om zoveel mogelijk met het geheugen aan de slag te gaan. Jammer genoeg is het niet mogelijk om onze gehele database in het geheugen op te slaan. Dat had een paar jaar geleden nog wel gekund, maar onze databases zijn zo enorm gegroeid dat het onmogelijk is, om de hele database in het geheugen te plaatsen.

 

Externe opslag

Een orakel zal delen van de informatie in het geheugen opslaan en zoveel mogelijk processen uitvoeren met behulp van het geheugen. Van tijd tot tijd zal het orakel echter toch de externe opslag moeten raadplegen. Achtergrondprocessen zijn programma’s die op de achtergrond draaien en het orakel ondersteunen. Ze houden bij wat er gaande is in het geheugen, maar ook wat er aan de hand is op de disc. Het grootste voordeel van geheugen is dus die snelheid. Dit is echt een heel groot voordeel ten opzichte van de informatie op de disc. Een nadeel van het geheugen zijn de hogere kosten. Opslaan in het geheugen is duurder dan informatie opslaan op disc. Geleidelijk aan worden de prijsverschillen wel kleiner. Informatie opslaan op disc is dus goedkoper, maar een nadeel is dat de informatie op disc veel langzamer is en alles min of meer behoorlijk vertraagd.

 

System Global Area

Een van de hoofdonderdelen van een orakel database server is de System Global Area (SGA). Dit is een stukje geheugen dat het orakel voor zichzelf gaat gebruiken, op het moment dat de database “instance” net is opgestart. De System Global Area is een “geheugengebied” waaruit het orakel informatie kan halen, die nodig is om de noodzakelijk processen uit te voeren. Op een gewone server ziet het geheugen er als volgt uit. Het besturingssysteem start op en “grijpt” dan direct een stuk geheugen.

Blok

Drivers

Dan zijn er nog de drivers die ervoor zorgen dat het besturingssysteem kan communiceren met het toetsenbord, de muis, het netwerk en met de geluids- en videokaart. Hierna starten er een aantal diensten op die het besturingssysteem ondersteunen. Er zijn natuurlijk nog veel meer programma’s die op een dergelijke server draaien. Bij een orakel database server zal de opstart niet veel verschillen van een gewone server en dezelfde stappen doorlopen, maar bij een orakel zal er een stuk informatie voor eigen gebruik – de SGA – “gepakt” worden. De parameters bepalen dan uiteindelijk hoeveel geheugen er precies door het orakel “gegrepen” wordt bij de opstart ervan.

 

DB-writer

De grootte van de SGA wordt niet beïnvloed door het aantal gebruikers dat is verbonden of door de hoeveelheid transacties die plaatsvinden op een zeker tijdstip. Orakel zal zoveel mogelijk gebruikmaken van het geheugen, voordat er ook nog maar iets naar een disc geschreven wordt. Als een orakel daarna naar de disc gaat, dan zal het gaan kijken naar alle data files en controleert het of alle files met elkaar in evenwicht zijn. Ook wordt er gekeken of er geen fouten aanwezig zijn. Hierna worden de achtergrondprocessen opgestart. Er zijn een heleboel verschillende achtergrondprocessen. Ik ga ze hier niet allemaal opnoemen maar één ervan is de eerdergenoemde DB-writer.

 

 

synchronisatie

Deze DB-writer schrijft aangepaste data van de SGA naar de orakel database files. Al de verschillende processen zorgen ervoor dat alles wat er gebeurt in de SGA en alles wat er gebeurt in de data files, met elkaar gesynchroniseerd blijft. De processen zijn zo ontworpen dat als er onverhoopt iets vervelends gebeurt met het systeem, de orakel database servers in staat zijn om de problemen relatief eenvoudig op te lossen. Je zou dan kunnen denken aan bijvoorbeeld een stroomstoring of een fout in een van de data files

 

Fysieke wereld

Als je een transactie wilt uitvoeren met bitcoins, Ethereum of andere blockchain platformen, dan is dat vaak gebaseerd op iets dat in de fysieke wereld gebeurt. Het “echte” leven. Er zal dus ergens informatie vandaan gehaald moeten worden, over hetgeen dat er speelt. Dit geldt dus ook voor de geprogrammeerde slimme contracten.

 

Externe informatiebron

Als je bijvoorbeeld een belegging wilt afsluiten in de vorm van derivaten, een weddenschap met iemand wilt afsluiten, een goed vriend wilt sponsoren die de Marathon van Rotterdam gaat lopen, of wat dan ook, dan kun je daar een contract voor opstellen. Er zal dan gebruikgemaakt moeten kunnen worden van informatie die niet ingebakken zit in de blockchain. Informatie bijvoorbeeld over de effectenbeurs, de waarde van beleggingen of opties. Ook zou het kunnen gaan om informatie over de looptijden van de deelnemers van de Marathon van Rotterdam. Er moet in deze situaties informatie kunnen worden verkregen van externe informatiebronnen.

Blockchainnetwerk

Hoe komen slimme contracten aan de juiste informatie?

Het is natuurlijk niet gezegd dat externe informatie altijd maar van één specifieke bron hoeft te komen. Er is bijvoorbeeld een mogelijkheid waarbij de data “gecrowdsourced” wordt. De informatie is dan afkomstig van verschillende kanalen. Er is dan geen afhankelijkheid van één enkele bron. Bepaalde informatie zal zeker in de slimme contracten zijn ingebouwd. Het zal dan gaan om informatie die vaststaat en in principe niet kan veranderen. We hebben het dan onder andere over de regels en voorwaarden waarmee dergelijke contracten zichzelf kunnen handhaven. Er zullen op den duur slimme contracten worden ontwikkeld die functioneren als volledig autonome notarissen.

 

Geprogrammeerde regels en voorwaarden

Slimme contracten zijn programma’s waarin bepaalde regels, voorwaarden en de gevolgen van die regels en voorwaarden zijn geprogrammeerd. De slimme contracten kunnen zichzelf handhaven. De partijen waarmee een slim contract zakendoet, moeten vooraf akkoord gaan met de voorwaarden uit het contract. Hierna zal het slimme contract betrouwbaar worden uitgevoerd door het neutrale systeem. Een systeem dat geen enkel belang heeft bij de desbetreffende transactie.

 

Drie belangrijke stappen

Er zijn drie belangrijke stappen bij de ontwikkeling en uitvoering van een slim contract. Ten eerste moeten de regels en voorwaarden worden vertaald in programmeertaal. Digitale systemen zijn deterministisch. Dat wil zeggen dat alle mogelijke uitkomsten van een contract, inclusief boetes bij contractbreuk, specifiek in het contract zijn opgenomen. Dit geldt ook voor een verwijzing naar eventuele bemiddeling in geval van geschillen.

 

Contract op maat

Ten tweede moet er een akkoord zijn over de precieze code die door de toepassingen zal worden uitgevoerd. Bij traditionele contracten in de “fysieke” wereld worden vaak aanpassingen gedaan en worden modules vervangen om een contract “op maat” te maken. Als het slimme contract is goedgekeurd, dan is het erg belangrijk dat precies dezelfde code wordt uitgevoerd, als de code waarmee men akkoord is gegaan. Als derde moet de uitvoering van de slimme contracten op een betrouwbare manier gebeuren. De code moet worden uitgevoerd door een neutrale partij of door een groep van onafhankelijke “entiteiten”, waarvan zeker is dat die niet met elkaar kunnen samenspannen.

 

 

Slimme contracten en het orakel

Hoe moeten we het orakel nu precies zien in het licht van de slimme contracten? De belangrijkste voordelen van slimme contracten zoals die van Ethereum zijn de toegenomen snelheid van de uitvoering ervan, meer efficiëntie en de garantie dat de contracten op de afgesproken manier worden uitgevoerd. Sommige slimme contracten, inclusief degene die zijn ingebouwd in de bitcoin, zijn helemaal deterministisch. De benodigde informatie is dus in het netwerk zelf aanwezig. Dat betekent dus dat de nodes in het blockchainnetwerk dezelfde resultaten moeten kunnen vinden naar aanleiding van dezelfde invoer. Als dat niet het geval zou zijn, dan zou iedere node die een transactie valideert, kunnen eindigen met een andere uitkomst. In zo’n geval zou er dus geen consensus bereikt kunnen worden. En juist het bereiken van consensus is bij de blockchain technologie essentieel.

 

Non-deterministisch

Als de informatie van buiten het netwerk moet komen, dan is er sprake van non-deterministische slimme contracten. De beslissingen moeten dan genomen worden op basis van informatie in de “echte wereld”. De slimme contracten kunnen dan een orakel raadplegen met behulp van cryptografische handtekeningen. Orakels zijn betrouwbare “entiteiten”. Omdat de verificatie van de handtekeningen op een deterministische manier (dus binnen de blockchain) kan plaatsvinden, is het dus mogelijk dat deterministische slimme contracten een interactie aangaan met de “non-deterministische” buitenwereld.

Blockchainnetwerk, cryptografische versleuteling

 

Op de hoogte blijven van de ontwikkelingen op het gebied van blockchaintechnologie? Meld je dan nu aan voor de blogpost!

 

Meld je aan voor de blogpost!
Ik ga ermee akkoord dat mijn naam en e-mailadres worden gedeeld met Mailchimp.
Met de blogpost van Uitleg Blockchain blijf je automatisch op de hoogte van de nieuwste ontwikkelingen omtrent de blockchain technologie.
We hebben een hekel aan spam. Uw e-mailadres zal niet worden verkocht of gedeeld met anderen (afgezien van het marketing automation platform dat wij gebruiken voor onze e-maillijst).