Wat is een DAG?

Wanneer we geïnteresseerd zijn in de werking van blockchains en in het bijzonder in de innovaties die door projecten of nieuwe vormen van consensus tot stand worden gebracht, kunnen we geconfronteerd worden met de term DAG. We leggen je graag uit wat een DAG is en hoe het werkt!

DAG

Een DAG (afkorting voor Directed Acylic Graph) is een oude wiskundige structuur waarvan het gebruik vaak wordt toegepast op het gebied van informatica. Deze grafieken zijn modellen van netwerken die de knooppunten waaruit zij zijn opgebouwd met elkaar verbinden. In deze grafieken vind je verschillende soorten bomen, maar ook ketens van knooppunten (nodes), of blokken in het kader van Bitcoin. Een DAG is dus een structuur die alleen directe links tussen zijn knooppunten heeft en geen cycli. Dat wil zeggen dat je niet op hetzelfde knooppunt kunt terugvallen als je door de grafiek navigeert. Hierdoor kan rechtstreeks van knoop tot knoop worden genavigeerd door de knooppuntrelaties.

DAG's zijn absoluut niet per se gekoppeld aan blockchains en werden net als veel andere technologieën al lang voor de komst van cryptoprojecten gebruikt. Zij worden gebruikt bij de organisatie van een heleboel gegevens, zoals Git bijvoorbeeld.

Hoe werken DAG's?

DAG's zijn dus structuren die bestaan uit twee verschillende soorten elementen; de knooppunten en de links tussen die knooppunten. Dit kan worden gebruikt om een geschiedenis bij te houden van gegevens zoals softwareversies of interacties tussen gebruikers. Hierdoor worden de conflicten vermeden die gepaard gaan met het gebruik van een lineaire geschiedenis, waarbij de toevoeging van een nieuw element direct moet worden gekoppeld aan het oudste element (en alleen aan dit laatste). In de context van softwareversies kan versie 5 alleen in een lineair kader aan versie 4 worden gekoppeld. Door gebruik te maken van een DAG kan deze versie worden gekoppeld aan versie 3, terwijl versie 6 de versies 4 en 5 zal koppelen.

Wat het pad van een DAG betreft, bestaan er verschillende algoritmen die elk hun eigen specifieke kenmerken hebben. Het gebruik van DAG's vergemakkelijkt het gebruik van bepaalde algoritmen in vergelijking met andere meer generalistische grafieken, zoals het zoeken naar de kortste of langste paden tussen twee specifieke knooppunten.

DAG's in de context van blockchains

Een DAG wordt ook volop gebruikt in de cryptowereld. Al zijn er maar relatief weinig blockchains die een DAG in hun architectuur gebruiken. Toch zou het gebruik ervan problemen in verband met de schaalbaarheid van blockchains kunnen oplossen. Het is belangrijk te begrijpen wat kan worden vervangen door een DAG en welke bewerkingen niet relevant zijn.

In tegenstelling tot wat algemeen wordt aangenomen, is het gebruik van een DAG niet gekoppeld aan de verificatie van transacties, uitgifte of andere soorten protocollen zoals die nu bestaan. In de context van de schaalbaarheid van blockchains zijn er veel knelpunten en beperkingen die worden opgelegd door technische middelen zoals de kracht van de machines of door de werking van de protocollen. De verspreiden van transacties over het netwerk is er één van. Wat voor zin heeft het immers om de omvang van blokken of de stroom transacties te vergroten als deze niet correct over het netwerk kunnen worden verspreid? Dit kan neveneffecten hebben en na verloop van tijd het netwerk meer gecentraliseerd maken.

Het gebruik van een DAG vervangt niet het netwerk van de miner, want Proof of Work biedt kenmerken die rechtstreeks verband houden met de precieze werking ervan, zoals onveranderlijkheid.

Voor- en nadelen van het gebruik van een DAG

Hoewel sommige cryptocurrency netwerken string-systemen gebruiken, zoals Bitcoin, is het ook mogelijk om transacties in een DAG te organiseren: dit is wat bijvoorbeeld de IOTA of Nano projecten doen. Maar dit zijn niet de enige veranderingen in de blockchain-architectuur: sommige protocollen maken gebruik van consensusprotocollen voor Proof of Stake of Proof of Authority om transacties te valideren alvorens ze toe te voegen aan de DAG. Als het netwerk niet afhankelijk is van Proof of Work om transacties te valideren, heeft het geen blokken en dus geen blockchain nodig. Het gebruik van DAG’s is dus interessant omdat het veel voordelen biedt voor het beheer ervan.

Het gebruik van een DAG biedt voordelen wat betreft de snelheid van de uitvoering van transacties. Zoals hierboven uiteengezet, zijn het echter niet de DAG's die er het meest gebruik van maken en zijn het andere parameters die het gebruikscomfort ervan verhogen, zoals vergoedingen die dicht bij nul liggen. Dit kan de verwarring in de gemeenschap verklaren over de essentie van DAG’s, die geen ‘blockchains 3.0’ vertegenwoordigen en niet noodzakelijk gebaseerd zijn op een validatie van transacties door middel van Proof of Work.

De blokDAG's

Bitcoin heeft een architectuur geleverd die de ontwikkeling mogelijk maakt van een volledig open netwerk waarop de uitwisseling van waarde mogelijk is door de toepassing van verschillende mechanismen die de geschiedenis van de transacties onveranderlijk maken. Maar deze architectuur verliest haar beveiligingseigenschappen wanneer de blokgrootte wordt vergroot of de stroom van blokken in zekere mate zwaader wordt belast. Daarom proberen veel projecten Bitcoin te verbeteren, hetzij door de architectuur aan te passen, hetzij door te werken aan overlayers zoals het Lightning Network. Dit is het geval met de blockDAGs, die worden vertegenwoordigd door projecten als SPECTRE.

Het idee is niet langer om blokken van transacties te groeperen in ketens, waarvan de langste bij consensus worden geselecteerd, maar in DAG's. Elk blok zou op een historische manier worden georganiseerd. Dat wil zeggen dat elk blok in de hashes van zijn headers altijd verwijst naar zijn voorgangers. De grootste moeilijkheid zou zijn dat de miners niet noodzakelijk dezelfde versie van de DAG op hetzelfde ogenblik zouden hebben, aangezien nieuwe blokken veel frequenter worden toegevoegd. Dit kan leiden tot conflicterende transacties, omdat ze parallel worden gevalideerd zonder dat de miners zich daarvan bewust zijn.

Deze structurele wijziging in het systeemontwerp kan het systeem sneller maken, aangezien de bevestiging van transacties in enkele seconden kan worden bereikt. Ook is de stroom van deze transacties niet beperkt tot een specifiek aantal blokken per minuut, en wordt deze alleen beperkt door de netwerkbandbreedte, waardoor de transactiekosten worden beperkt.