In dit artikel beschrijven we het Cosmos Cyber Reality-platform vanuit een technisch perspectief. We zullen uitleggen hoe we een echt gedistribueerd en gedecentraliseerd systeem gaan realiseren (lees hier meer over de verschillen tussen gedistribueerd en gedecentraliseerd). De gebruikersinterface is beschikbaar voor iedereen in de browser, maar achter deze interface zitten netwerken en worden verschillende technieken gebruikt om de gegevens en de beveiliging van het platform te aan te bieden. Door beschikbare technologieën te combineren, bereiken we een echte verdeling van taken door het hele systeem.

Zolang het systeem in ontwikkeling is, kunnen details in het ontwerp van het systeem worden gewijzigd wegens prestatieproblemen of door de beschikbaarheid van nieuwe oplossingen voor bestaande problemen. Sommige problemen worden pas zichtbaar als ze in een productieomgeving worden uitgevoerd, maar hiervoor zullen delen van het systeem opnieuw moeten worden ontworpen. Het high level ontwerp blijft hetzelfde, terwijl de implementatie kan worden aangepast aan de best mogelijke oplossing.

Drielaags system

Het platform kan onderverdeeld worden in drie lagen

  • de client laag
  • de blockchain laag
  • de server laag

De client laag

De client laag is het deel van het systeem dat wordt uitgevoerd in de webbrowser van de gebruiker. Het geeft de 3D-interface weer met behulp van webstandaarden en maakt het beschikbaar in alle moderne browsers die WebVR ondersteunen. Dit kan op een pc / Mac, tablet, mobiele telefoon of VR-headset zijn. Met een VR-headset of een mobiele telefoon in een VR-bril kun je de metaverse in virtual reality ervaren. Op een monitor of zonder het gebruik van een VR-bril, wordt de interface weergegeven in een driedimensionale weergave.

De software draait volledig in de browser van de gebruiker. Dit betekent dat, zodra de software in de browser is geladen, er geen afhankelijkheid is van een webserver. Het blockchain-netwerk en torrent-netwerk zullen de gegevens leveren die nodig zijn in de gebruikersomgeving.

De gebruikersinterface wordt geleverd via de webportal op cosmoscr.io, maar je kan deze ook downloaden van de repository en openen vanaf de lokale schijf. Dit maakt het onafhankelijk van een enkele server of website. De client heeft echter nog steeds een internetverbinding nodig omdat alle modellen en andere gegevens alleen online beschikbaar zijn. Een voorbeeld hiervan is te zien in de MyEtherWallet-software. De interface staat op de website https://www.myetherwallet.com/ , maar de code kan ook gedownload worden van de github repository en gestart worden deze zonder de website te gebruiken of gehost worden op uw eigen website. Het gebruikt gegevens van de Ethereum-blockchain om in de browser te tonen.

De blockchain laag

De blockchain laag vervult meerdere use-cases op het platform. Het is het grootboek voor het betalingssysteem op het platform, maar het houdt ook eigendomsgegevens voor de land percelen en andere activa in het systeem bij. Met behulp van smart contracts kan in deze laag logica of geautomatiseerde taken, zoals toegangsbetaling of betaald modelgebruik, worden geprogrammeerd.

De blockchain biedt een open en betrouwbare gedecentraliseerde datastructuur voor de toestand van het platform. Dit kan op verschillende manieren worden gebruikt.

Allereerst wordt de verdeling van de $CYBR-tokens opgeslagen in de portefeuilles die in het systeem worden gebruikt. Vervolgens worden alle transacties van deze ERC20-standaard fungible-token gevalideerd bij betalingen op het platform. Dit biedt een uniforme manier om betalingen in de Cosmos te doen. Of het nu gaat om het betalen van land, modellen of andere eigendommen, betalen voor toegang tot planeten met unieke ervaringen of om echte goederen te kopen in een winkel, het kan allemaal met dezelfde digitale valuta.

Daarnaast beheert de blockchain unieke activa op het platform met behulp van een ERC721 token of een equivalente non-fungible token (NFT). Deze token kan unieke items bevatten die kunnen worden verhandeld of verruild op het platform. Het wordt onder andere gebruikt voor landpercelen (zie het artikel over Cosmos virtueel land) en voor modellen. De land-tokens worden opgeslagen met de locatie op het vasteland en zijn eigendom van een portefeuillehouder. Deze portefeuillehouder kan vervolgens 3D-modellen op dat land toevoegen, zodat een uniek zichtbaar gebouw op het land verschijnt. Voor alle modellen op het perceel wordt een token opgeslagen in de blockchain, samen met de link naar de data die nodig zijn om de objecten weer te geven. Deze link is een magnet-link naar een bron die is opgeslagen in het torrent-netwerk dat wordt aangeboden door de serverlaag van het platform. In sommige gevallen, waar de gegevens een betalingsmodel gebruiken, slaat het ook het adres op van het smart-contract dat de gegevens kan ontgrendelen.

De derde use-case is gerelateerd aan de smart-contracts. Smart-contracts zijn gecodeerde programma’s die op de blockchain kunnen worden uitgevoerd. Dit kan taken automatiseren of controles op aanvraag uitvoeren om de toegang tot of het gebruik van modellen in toepassingen verifiëren. Sommige standaardcontracten zullen op het platform beschikbaar worden gesteld, maar gebruikers kunnen ook hun eigen contracten programmeren die de logica van hun specifieke behoeften bevatten.

De server laag

De serverlaag is het laatste gescheiden onderdeel van de software die op het platform wordt gebruikt. Het levert een gedistribueerde data backbone voor het systeem. Het zal ook worden gebruikt voor het uitvoeren van interactietaken voor de clients en kan worden gebruikt in het governancesysteem voor het platform.

De privéservers worden voornamelijk gebruikt voor het opslaan en distribueren van data voor het platform. Dit is een belangrijke taak omdat er geen centraal systeem zal zijn om alle gegevens voor het platform op te slaan. Een gecentraliseerde oplossing moet om verschillende redenen worden voorkomen, de belangrijkste zijn:

  • Geen centrale autoriteit die alle gegevens beheert
  • Het opslaan van grote hoeveelheden data is duur
  • Risico op falen van het hele systeem
  • Voorkomen van ongeautoriseerde wijziging van gegevens

Om de data te adresseren en te distribueren, gebruiken servers het BitTorrent-netwerk. Met behulp van het BitTorrent-protocol maken de servers een mesh-netwerk aan, waarbij de gegevens nooit allemaal op één locatie aanwezig zijn, maar wordt verdeeld over meerdere machines. Zo wordt tegelijk redundantie van de gegevens gecreëerd. De client kan de vereiste gegevens tegelijkertijd downloaden van meerdere knooppunten. Dit verhoogt de prestaties voor toegang tot de gegevens, maar biedt ook een systeem dat niet afhankelijk is van een enkele server. Wanneer meer mensen met privéservers deelnemen, wordt het systeem stabieler.

Naast de datadistributietaak van de privéservers zullen ze worden gebruikt om de prestaties van het hele systeem te verbeteren. Dit wordt gedaan door enkele datastructuren die in de blockchain zijn opgeslagen rechtstreeks aan de clients aan te bieden en transacties op die data te valideren. De servers fungeren als een light node in het Ethereum-netwerk. Het kan gezien worden als een caching-systeem voor de database in de blockchain die snel en betrouwbaar toegankelijk is. Dit cachen wordt alleen gebruikt voor gegevens die niet vaak veranderen, zoals het land raster. De server zal de gegevens bijwerken wanneer veranderingen plaatsvinden in de blockchain en kan deze aan meerdere clients uitleveren.

Dan is er de interactie tussen clients. Om directe toegang van client naar client te voorkomen, wat een ongewenste situatie is omdat hackers op clients kunnen targeten, zullen de servers als tussenpersoon fungeren. Communicatie zal van begin tot eind gecodeerd zijn, maar zal altijd worden geleid via een of meer serverknooppunten. Op deze manier kunnen clients elkaars IP-adres niet bemachtigen.

Waarom zou iemand een privéserver draaien?

We vertrouwen op het gebruik van privéservers om een echt gedistribueerd systeem te creëren. Door deel te nemen help je het systeem gedistribueerd en betrouwbaar te houden. Maar er is ook persoonlijk gewin.

Wanneer je een server start en het adres van een digitale portefeuille koppelt, verzamelt de server de eigendommen en beveiligt deze de gegevens voor u. Op deze manier garandeert het de beschikbaarheid van de gegevens op het netwerk wanneer uw server online is. Het torrent-systeem van de server zal uiteindelijk gegevens verwijderen als de opslaglimiet wordt bereikt en er nieuwe data wordt opgevraagd. Door uw portefeuille te koppelen, gebeurt dit niet voor de gegevens die u bezit. U kunt meerdere servers gebruiken die uw gegevens bevatten om redundantie te creëren in een persoonlijke setup.

De kosten voor het draaien van een privéserver zijn beperkt. De enige vereisten voor het runnen van een server zijn een internetverbinding en beschikbare opslagcapaciteit. Als u een planeet beheert die u geld kan opleveren, vanwege entreegelden of betalingen in een winkel of casino, is het rendabel om uw eigen server te gebruiken om de beschikbaarheid van uw applicatiedata te garanderen. Wanneer u grote applicaties host die grote hoeveelheden geld kunnen verdienen, zorgt u ervoor dat uw servers hun eigen redundantie veiligstellen.

Hoe start je een server?

De serversoftware wordt geleverd als een Docker-image. Dit is een gebruiksklaar microservice-systeem dat kan worden uitgevoerd op elke machine en op elk besturingssysteem dat door Docker wordt ondersteund. Ga voor meer informatie over Docker naar https://www.docker.com.

Om een Docker uit te voeren, kunt u cloud-systemen gebruiken die Docker-containers ondersteunen of u kunt deze op uw eigen systeem uitvoeren, zelfs op uw pc. Installeer gewoon Docker en gebruik de startopdracht voor de Cosmos-image van de privéserver. Het zal op de achtergrond worden uitgevoerd en de taken uitvoeren waarvoor het is geprogrammeerd.

Open source software

Om het platform open, transparant en beschikbaar voor verbetering te houden, is alle software die voor het platform wordt gebruikt open source en voor iedereen beschikbaar. Dit omvat de clientsoftware die wordt uitgevoerd in de browser, de serversoftware die wordt uitgevoerd in Docker-containers en de smart contracts voor het blockchain-platform.

The repository will be maintained by the Cosmos CR team but everyone can help building the system and making it better. Guidelines for software development and testing will be presented in the repositories.

We moedigen mensen aan om open source software op het platform te creëren. We zullen dit echter niet vereisen voor applicaties die voor het platform zijn gemaakt. We denken dat gebruik en creativiteit moeten worden beloond, dus alle toepassingen en modellen mogen worden gepubliceerd in de Cosmos Cyber Reality-metaverse. Iedereen die wil bouwen en profiteren moet dat ook kunnen!

De stichting zal ook ontwikkelaars en ontwerpers belonen voor hun bijdragen aan het platform. Taken voor algemene doeleinden kunnen aan de community worden toegewezen in ruil voor $CYBR tokens. Het kan worden gezien als gecontracteerd werk ten gunste van de stichting en de hele gemeenschap.


Casper Karreman

Casper is een 42-jarige software-ingenieur uit Nederland en werkt al meer dan 18 jaar als softwareontwikkelaar, maar codeert al bijna 30 jaar. Begonnen als een hobby op 12-jarige leeftijd groeide hij uit tot een full-stack multidisciplinaire DevOps professional. Onlangs voegde hij machine learning en blockchain technologie toe aan zijn portfolio. Als hij niet achter een computer zit, is hij waarschijnlijk bergklimmen, mountainbiken of snowboarden.