De blockchain en punniken 

Punniken, wie heeft het vroeger niet gedaan. Steekje voor steekje een lange string van wol maken. Ik vergelijk blockchain weleens met punniken of klosje breien. Met verschillende kleurtjes wol een ‘ketting’ breien die zich tot een steeds langere ketting ontwikkelt. Dat is precies wat blockchain doet: verschillende soorten data – gekoppeld per blokje – in een eindeloze string vastleggen. Hierbij maakt het niet uit wat die data is. Het vormt een lange ketting van ‘onmuteerbare vastlegging en oneindige herbruikbaarheid’. Aan elkaar gelinkt door een vanuit die data ‘gehusselde’ hashcode als fingerprint. Net als bij punniken is elk stukje en kleurtje wol en elke steek onuitwisbaar in de historie van de string terugvindbaar.

Datastromen en datameren

Data stroomt in beekjes en rivieren in steeds grotere ecosystemen en hoopt zich her en der op in datameren. De naam ‘datalake’ is niet voor niets ontstaan. Elke beek heeft een ingebouwde historie in zijn stroom. Als je op een brug staat en opvolgend blaadjes in het water laat vallen, worden deze door de beek ‘in de tijd afgevoerd’. Elk blaadje is als het ware een ‘timestamp’, afgegeven op de plaats van de brug, van alle data die door de beek stroomt en wordt meegenomen. De overeenkomst tussen een datastroom en blockchain is interessant, want een blockchain is immers ook een in de tijd weggeschreven ‘historie’ van blokken data in de tijd. Op die manier punniken we een onveranderlijke string van gekoppelde steken. 

Als beekjes samenkomen en rivieren vormen, voegen die verschillende histories zich samen tot één groter geheel. Verschillende ‘punnikstrengen’ komen samen en vormen historisch gezien één overview van het verleden. De in de tijd gemaakte datablokken blijven voor altijd onveranderlijk aan elkaar gekoppeld. Daarom mag een blockchain inhoudelijk niet te ‘zwaar’ worden. De blokken moeten snel encryptisch kunnen worden doorgerekend, dus veel meer dan metadata met lichtvoetige data, links en vingerprints, moet een blockchain niet bevatten. 

On-chain Data en off-chain Data

Men spreekt van ‘on-chain data’, informatie die in de blockchain wordt geplaatst en bewaard en ‘off-chain data‘, data die goed terugvindbaar op andere plekken is opgeslagen. Blockchain is het grootboek, de administratie, de onveranderlijke keten met metadata, waarvan elk blok een file beschrijft en de plaats duidt waar die volledige dataset is opgeslagen, de ‘off-chain data’. De plaats waar de gehele dataset na registratie, uiteindelijk naar toe is gestroomd. Het blaadje in de beek was het blok met de ‘timestamp’, de rest van het water omvat de file die met het blaadje mee het archief in stroomde. 

De opslag voor ‘off-chain data’ moet enorm schaalbaar zijn. Immers een bijbehorende dataset kan een transactie-afschrift van 100kB, een CAD-file van 10 GB of een video van 100 Gb zijn. Daarnaast moet die data ook weer snel en efficiënt kunnen worden opgehaald en aangeboden. Hierbij kan parallellisatie natuurlijk enorm helpen, als er veel verschillende datasets moeten worden opgehaald. Hier zien we snelle opkomst van objectstorage waarbij de lichtvoetige metadata op een andere plaats in een database is opgeslagen. Zoals in toenemende mate een blockchain.  

Indexeren, zoeken op kleurtjes wol

Blockchain slaat gegevens verspreid op, waardoor het moeilijk wordt om de gegevens specifiek op te halen. Zoals bij elke database is – om snel op blockchains te zoeken – het nodig om de blockchain te indexeren. Net zoals Google continu het internet indexeert, zijn deze functies ook voor Web3 nodig opdat eindgebruikers snel gegevens kunnen opvragen. The Graph is een zoekmachine voor Web3 voor de meest gebruikte blockchain protocollen. Een gedecentraliseerd indexing protocol om gegevens van Ethereum-blockchain-ketens te indexeren en samen te weven. De gegevens worden geëxtraheerd, verwerkt en opgeslagen door open-source API’s, subgraphes genoemd.

Net als bij een eindeloze punnikstring bevinden in een blockchain de gegevens zich vanwege de tijdgeordende structuur, willekeurig in talloze blokken. Er is geen vooraf ingebouwd mechanisme om deze te blokken te identificeren, categoriseren of op te vragen. Indexering moet dus op verschillende detailniveaus worden uitgevoerd waarbij de verschillende soorten data worden herkend. Zoals bij punniken de verschillende kleurtjes wol een specifieke stroom vastgelegde data voorstellen. Omdat een blockchain geen onderscheidt maakt in opgeslagen data, moeten essentiële elementen zoals rekeningen, blokken en transacties, in eerste instantie per blok op een laag niveau worden geïndexeerd om blockchain-query’s op hoog niveau mogelijk te maken. Dit vraagt om nieuwe indexing-technieken die dan ook de afgelopen jaren zijn ontwikkeld. 

Indexeren op subniveau

Hierbij bleek indexeren op vooraf gedefinieerde subniveaus een goede oplossing zijn. Eigenlijk net als in een punnikstring de verschillende kleurtjes wol in de hele keten van breisteken vaststellen. Op die manier weet de index in welke subblokken welke soort data is opgeslagen waardoor het uiteindelijke querypad korter wordt. Transacties die een relatie hebben worden zowel in hetzelfde blok als in andere blokken herkend en opgeslagen. 

Hier komt de grafentheorie uit de wiskunde ons te hulp. Met graphs kunnen abstracte gegevenstypes worden geordend en gelinkt en een hiërarchie met subgraphs worden gebouwd. The Graph’ is dan ook de naam geworden voor een zoekmachine voor Web3 voor de meest gebruikte blockchain protocollen. Een gedecentraliseerd protocol op open-source graph node-technologie om gegevens van Ethereum-blockchain-ketens te indexeren en samen te weven. Eigenlijk wordt op deze wijze ‘achteraf’ een logische structuur van de blockchain in kaart gebracht. De gegevens worden met gedecentraliseerde apps – Dapps – geëxtraheerd, verwerkt en via open-source API’s, subgraphs, opgeslagen.

Graph netwerken

Op deze wijze ontstaan naast de decentrale blockchain, als primaire database, een graph-netwerk dat netwerkdiensten en geïndexeerde data levert aan Web3-apps. Gebruikers hebben toegang tot deze apps en betalen met Graph Tokens (GRT), een werktoken op de Ethereum-blockchain. Deze tokens worden dus gebruikt om de netwerkbronnen te distribueren,  waardoor indexeerders, curatoren en delegators hun diensten kunnen leveren en inkomsten ontvangen van het netwerk in verhouding tot hun arbeid en belang.

Op deze wijze bouwen we een nieuw web dat volledig automatisch, gedecentraliseerd en zonder enige centrale inbreng van providers of tussenpersonen alle veiligheid, privacy, connectiviteit, verwerking, afhandeling en functionaliteit biedt voor de gebruiker. Met de blockchain voor onmuteerbare vastlegging en oneindige herbruikbaarheid, als ons geheugen en ‘de waarheid’ in de nieuwe virtuele metaverse. Met eigen ‘utility tokens’ waarmee intern kosten en inspanning wordt verrekend. Een spiegelwereld waar zelfs oude technieken – zoals punniken en klosbreien – op nieuwe creatieve wijze worden gebruikt.

Foto Hans Timmerman.