Wat is orakel architectuur?

Een database is een bepaalde hoeveelheid data. Een orakel-database slaat de data op in gecoördineerde bestanden op disk. De informatie is dus systematisch georganiseerd in de vorm van fysieke bestanden, die goed toegankelijk en eenvoudig te analyseren zijn.

 

Wat is een orakel database server?

Om dit goed te kunnen uitleggen wil ik beginnen met een voorbeeld. Het is wel een beetje een vreemd voorbeeld. Stel we hebben een man voor ons staan. Zijn naam is Tom. Hij heeft twee handen, twee benen en twee ogen – gelukkig maar. Tom heeft echter ook een geheugen. In zijn geheugen zitten ontzettend veel herinneringen opgeslagen. Tom is een beetje apart. Het is een hele slimme gast. Hij kon namelijk al schrijven vanaf de eerste dag dat hij geboren was. Een dergelijke situatie had inderdaad nog nooit eerder plaatsgevonden. De ouders van Tom waren natuurlijk ook heel erg verbaasd, maar besloten hun baby dan toch maar een notitieboekje te geven en een pen. Kleine Tom aarzelde geen moment en begon ook vrijwel direct te schrijven. Hij schreef over van alles en nog wat. Over alles wat er in en rond hem heen allemaal gebeurde.

 

Een persoon achter het stuur van een auto. Door de voorruit van de auto zien we de weg met bomen langs de zijkant. In de lucht hangen wolken. De tekst luidt in het Engels: "bronnen voor achtergrondinformatie". Een orakel is een bron van informatie.

Notitieboekjes

Na drie dagen was het notitieboekje vol. Tom kon “natuurlijk” nog niet praten, maar hij schreef een briefje aan zijn ouders waarin hij om een nieuw notitieboekje vroeg. Zijn ouders gaven Tom een nieuw boekje en binnen no time schreef hij het boekje weer vol. Op deze manier vult Tom in de eerste vier weken van zijn korte leventje wel meer dan honderd notitieboekjes. Tom heeft de afgelopen vier weken dus alle herinneringen uit zijn geheugen verplaats naar de notitieboekjes. Veel herinneringen van de eerste vier weken die in zijn geheugen zijn opgeslagen, zullen de komende jaren voor een groot deel verdwijnen. De notitieboekjes zullen blijven bestaan. Dit voorbeeld is misschien wel een beetje vreemd, maar deze analogie geeft eigenlijk precies aan wat de basis is, van een orakel database server.

 

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. Net zoals dat Tom een rechterhand heeft, heeft een Orakel Database Server een achtergrondproces. Tom gebruikt zijn hand om te schrijven. Het oracle maakt gebruik van een DB-writer. Een DB-writer schrijft naar de database, waar de files worden opgeslagen. Waarom begon ik nu met het voorbeeld van Tom? Tom is natuurlijk een mens. Je kunt in deze situatie dus een mens (Tom in dit geval) vergelijken met “instance” van het orakel. Het geheugen van Tom is te vergelijken met het geheugen van het orakel en de handen, benen, ogen en oren van Tom, kun je gelijkstellen met de achtergrondprocessen van het orakel. De notitieboekjes van Tom zijn op hun beurt dan weer te vergelijken met de files in de orakel database server.

 

Instance

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.

 

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.

 

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.

 

Wil je op de hoogte blijven van de blockchaintechnologie, slimme contracten of Ethereum? Meld je dan aan voor onze 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).