Antwoorden>Meer informatie over de infrastructuurarchitectuur van Web3>Hoe Web3-infrastructuur werkt
Hoe de Web3-infrastructuur werkt
// Tags
Web3-infrastructuurdApp-architectuur
TL;DR: Web3-infrastructuur is het geheel van tools, diensten en protocollen waarmee applicaties gegevens kunnen lezen uit en schrijven naar blockchain-netwerken. In tegenstelling tot traditionele webapplicaties, die steunen op gecentraliseerde databases die door één enkel bedrijf worden beheerd, gebruiken Web3-applicaties (dapps) de blockchain als hun ‘source of truth’ en hebben ze een gespecialiseerde infrastructuurstack nodig om hiermee te communiceren. Deze stack omvat wallet-verbindingen voor gebruikersauthenticatie en het ondertekenen van transacties, RPC-eindpunten voor communicatie met blockchain-knooppunten, indexers om on-chain gegevens doorzoekbaar te maken, gedecentraliseerde opslag voor grote bestanden en Layer 2-netwerken voor schaalbaarheid. Inzicht in hoe deze onderdelen in elkaar passen, is essentieel voor elke ontwikkelaar die op blockchain bouwt.
De eenvoudige uitleg
Een traditionele webapplicatie heeft een eenvoudige architectuur: een gebruiker opent een browser, de browser laadt een frontend vanaf een webserver, de frontend communiceert met een backend-API en de backend leest uit en schrijft naar een database. Het bedrijf dat de applicatie beheert, heeft de controle over elke laag: de servers, de database, de API en de regels voor wie toegang heeft tot wat.
Een Web3-applicatie vervangt de gecentraliseerde database door een blockchain. Maar blockchains zijn geen databases. Je kunt er geen SQL-query’s op uitvoeren. Je kunt er geen verbinding mee maken via een standaard databasedriver. Je kunt er geen gegevens naar schrijven door een API aan te roepen met een geheime sleutel. Om met een blockchain te kunnen werken, is een fundamenteel andere infrastructuurstack nodig, en inzicht in die stack is de eerste stap naar het bouwen van dapps van productiekwaliteit.
Het belangrijkste verschil zit hem in het transactiemodel. In een traditionele app schrijft de backend naar de database met behulp van zijn eigen inloggegevens. In een Web3-app schrijft de gebruiker naar de blockchain door transacties te ondertekenen met zijn eigen privésleutel, via zijn eigen wallet. De applicatie faciliteert dit proces, maar heeft nooit directe schrijftoegang tot de on-chain-status van de gebruiker. Deze verschuiving van door de server beheerde gegevens naar door de gebruiker beheerde gegevens is wat Web3 "gedecentraliseerd" maakt, en het is ook wat de infrastructuur complexer maakt.
Waarin verschilt de Web3-infrastructuur van die van Web2?
De duidelijkste manier om de Web3-infrastructuur te begrijpen, is door deze te vergelijken met de Web2-stack die de meeste ontwikkelaars al kennen. De gegevens worden op een andere plek opgeslagen, en de manier waarop ze worden gelezen en geschreven, verandert dienovereenkomstig.
Aspect
Web2
Web3
Bron van de waarheid
Gecentraliseerde database
Blockchain
Wie voert de gegevens in?
App-backend met eigen inloggegevens
Gebruiker via portemonneehandtekening
Identiteit
Gebruikersnaam en wachtwoord
Portemonnee-adres
Toegang tot gegevens
Directe databasequery's
RPC-eindpunten en indexers
Bestandsopslag
Cloudservers
IPFS soortgelijke netwerken
Omdat je een blockchain niet op dezelfde manier kunt doorzoeken als een database, verlopen de meeste leesbewerkingen via een endpoint voor eenvoudige zoekopdrachten en via blockchain-indexering voor complexe, gestructureerde zoekopdrachten.
De architectuur van een dapp
Een typische productie-dapp bestaat uit verschillende lagen, die elk een eigen functie vervullen. De frontend is de gebruikersinterface, meestal een webapplicatie die is gebouwd met React, Next.js of vergelijkbare frameworks. De frontend zorgt voor de weergave, gebruikersinvoer en interactie met de wallet. Deze maakt verbinding met de wallet van de gebruiker (MetaMask, Phantom, enz.) via een provider-API (zoals ethers.js of wagmi), waardoor de dapp walletadressen kan opvragen, saldi kan weergeven en om transactiehandtekeningen kan vragen.
De wallet fungeert als identiteit en authenticatiemechanisme van de gebruiker. In plaats van in te loggen met een gebruikersnaam en wachtwoord, koppelen Web3-gebruikers hun wallet. De wallet verstrekt het openbare adres van de gebruiker (zijn identiteit) en biedt de mogelijkheid om transacties te ondertekenen (zijn autorisatie). Wanneer de dapp gegevens op de blockchain moet schrijven (tokens verzenden, communiceren met een smart contract, een NFT slaan), stelt deze een transactie samen, stuurt deze naar de wallet voor ondertekening, waarna de wallet de ondertekende transactie naar het netwerk verzendt.
RPC-eindpunten vormen de schakel tussen de dapp en de blockchain. Elke leesbewerking (het controleren van een saldo, het opvragen van de status van een smart contract, het ophalen van een transactiebewijs) en elke schrijfbewerking (het indienen van een ondertekende transactie) verloopt via een endpoint. Het endpoint met een blockchain-knooppunt dat het verzoek verwerkt en het resultaat terugstuurt. De keuze van de RPC-provider heeft een directe invloed op de snelheid, betrouwbaarheid en nauwkeurigheid van de gegevens van je applicatie.
De backend (optioneel, maar gebruikelijk in productieomgevingen) verwerkt off-chain-logica die niet thuishoort op de blockchain: beheer van gebruikerssessies, API-aggregatie, caching, analyse, verwerking van webhooks en integratie met traditionele diensten. Veel dapps maken ook gebruik van een backend om het verzenden van transacties aan de serverzijde te beheren voor bewerkingen waarvoor geen handtekening van de gebruiker nodig is (zoals administratieve bewerkingen of gasloze metatransacties).
Indexers zetten ruwe blockchain-gegevens om in doorzoekbare databases. De blockchain zelf ondersteunt geen complexe zoekopdrachten. Je kunt de blockchain niet vragen om "alle NFT's te tonen die eigendom zijn van dit adres" of "wat het totale handelsvolume is op deze DEX vandaag" met behulp van standaard RPC-methoden. Indexers (zoals The Graph, of aangepaste pijplijnen gebouwd met Quicknode Streams) verwerken elk blok, decoderen transacties en gebeurtenissen, en slaan de resultaten op in een database die SQL- of GraphQL-zoekopdrachten ondersteunt. Deze geïndexeerde gegevens vormen de basis voor portefeuilleweergaven, transactiegeschiedenissen, analysedashboards en zoekfunctionaliteit.
Slimme contracten vormen de on-chain logica van de applicatie. Ze bepalen de regels voor het overdragen van tokens, DeFi-transacties, het slaan van NFT’s, stemmingen over governance en alle andere programmeerbare on-chain-processen. Slimme contracten worden eenmalig geïmplementeerd en worden bij elke aanroep op deterministische wijze uitgevoerd. Ze vormen de „backend-logica” die op de blockchain draait in plaats van op de server van een bedrijf.
Wat zijn de belangrijkste onderdelen van de Web3-infrastructuur?
Hoewel de architecturen verschillen, zijn de meeste dapps in productie gebaseerd op dezelfde bouwstenen. In de onderstaande tabel wordt voor elke laag de rol en een veelvoorkomend voorbeeld weergegeven.
Laag
Functie
Voorbeeld
Portemonnee
Gebruikersidentiteit en ondertekening van transacties
MetaMask, Phantom
RPC-eindpunten
Lees- en schrijftoegang tot ketens
Quicknode API
Indexeerders
Zorg ervoor dat on-chain-gegevens doorzoekbaar zijn
The Graph, Streams
Gedecentraliseerde opslag
Sla grote bestanden off-chain op
IPFS, Arweave
Slimme contracten
Toepassingslogica op de blockchain
Solidity-contracten
Layer 2-netwerken
De doorvoer opschalen en de kosten verlagen
Arbitrum, Base
Schaalbare lagen, zoals een Layer 2 -netwerk, de slimme contracten waarin je logica is vastgelegd, en een realtime-pijplijn zoals Streams kunnen allemaal worden geïntegreerd in dezezelfde architectuur.
Gegevens lezen versus gegevens schrijven
De lees- en schrijfprocessen in een dapp verschillen fundamenteel van elkaar.
Het ophalen van gegevens is relatief eenvoudig. De frontend (of backend) stuurt een RPC-verzoek naar een node waarin om specifieke gegevens wordt gevraagd: een saldo, de status van een contract, de inhoud van een blok. De node zoekt het antwoord op en stuurt dit terug. Bij eenvoudige leesbewerkingen duurt deze roundtrip bij een goede provider tientallen milliseconden. Bij complexe gegevensverzoeken (zoals „toon mij de volledige transactiegeschiedenis van deze wallet voor alle tokens”) vraagt de dapp de database van een indexer op in plaats van rechtstreeks de blockchain, omdat de indexer het zware werk van het verwerken en structureren van de gegevens al heeft gedaan.
Het schrijven van gegevens is wat ingewikkelder. De gebruiker start een actie (zoals het ruilen van tokens). De dapp stelt een transactie samen waarin wordt gespecificeerd welk smart contract moet worden aangeroepen, welke functie moet worden uitgevoerd en welke parameters moeten worden doorgegeven. De dapp maakt een schatting van de gaskosten en legt deze voor aan de gebruiker. De gebruiker controleert en keurt de transactie goed in zijn wallet, die de transactie vervolgens ondertekent met zijn privésleutel. De ondertekende transactie wordt via een endpoint naar het netwerk verzonden. De transactie komt in de mempool terecht en wacht tot een validator deze in een blok opneemt. Zodra de transactie is opgenomen, wordt deze bevestigd. De dapp detecteert de bevestiging (hetzij door middel van polling, hetzij via een WebSocket-abonnement) en werkt de gebruikersinterface bij om de nieuwe status weer te geven.
Dit meerstaps schrijfproces, waarbij de wallet van de gebruiker, de gasberekening, de verspreiding via de mempool, de opname door validators en de detectie van bevestigingen een rol spelen, is de reden waarom schrijfbewerkingen in Web3 trager aanvoelen dan het klikken op een knop in een traditionele app. Het is ook de reden waarom een betrouwbare RPC-infrastructuur met lage latentie van cruciaal belang is: elke stap, van de gasberekening tot het indienen van de transactie en de detectie van de bevestiging, verloopt via het endpoint.
Multi-Chain-realiteit
Moderne dapps draaien zelden op slechts één blockchain. Een DeFi-protocol kan bijvoorbeeld worden geïmplementeerd opmainnet, Arbitrum, Base, Optimism en Polygon. Een NFT-marktplaats kan ondersteuning bieden voor Ethereum, Solana en meerdere L2’s. Een wallet-app moet saldi weergeven en transacties over tientallen blockchains tegelijk mogelijk maken.
Deze multi-chain-omgeving zorgt ervoor dat de infrastructuurvereisten aanzienlijk toenemen. Elke keten heeft zijn eigen RPC-eindpunten, zijn eigen indexeringspijplijn en moet rekening houden met keten-specifieke eigenaardigheden (verschillende finaliteitsmodellen, verschillende gasmechanismen, verschillende transactieformaten). Het beheren van deze complexiteit voor 5, 10 of meer dan 80 ketens vormt een aanzienlijke technische uitdaging, die de meeste teams oplossen door gebruik te maken van een infrastructuurprovider in plaats van voor elke keten hun eigen knooppunten te draaien.
Moet je je eigen node draaien om een dapp te bouwen?
In de meeste gevallen niet. Je kunt een productieve dapp uitrollen via een beheerde RPC-provider zonder ooit zelf een node te hoeven beheren. Het draaien van je eigen node biedt je maximale controle en privacy, maar het betekent ook dat je hardware moet aanschaffen, chains moet synchroniseren, upgrades en hard forks moet afhandelen en de uptime 24 uur per dag moet bewaken, en dat voor elke chain die je ondersteunt. Daarom valt de afweging tussen ‘zelf bouwen’ en ‘inkopen’ meestal in het voordeel van een provider uit voor teams die zich liever op het product dan op de operationele aspecten willen richten. Als je wel volledige controle wilt, kun je in ons overzicht over het draaien van je eigen node de kosten en baten tegen elkaar afwegen.
Hoe Quicknode de Web3-infrastructuur Quicknode
Quicknode de infrastructuur waarop dapps steunen. De Core API biedt RPC-eindpunten van productiekwaliteit voor meer dan 80 blockchain-netwerken vanaf één enkel platform, met wereldwijd verspreide knooppunten, een uptime van 99,99% en responstijden die 2,5 keer sneller zijn dan die van concurrenten. Dit betekent dat ontwikkelaars meerdere blockchains kunnen ondersteunen zonder voor elke blockchain een aparte knooppuntinfrastructuur te hoeven beheren.
Quicknode Streams een op maat gemaakte indexeringsinfrastructuur door een op push gebaseerde datapijplijn die gefilterde blockchain-gegevens rechtstreeks naar uw database of datawarehouse verzendt, met gegarandeerde levering en automatische afhandeling van reorganisaties. In plaats van voor elke keten afzonderlijk polling-scripts te moeten bouwen en onderhouden, configureert u één Stream, waarna Quicknode het extraheren, filteren, leveren en waarborgen van de gegevensconsistentie.
Voor de bredere dapp-stack Quicknode IPFS en pinning voor gedecentraliseerde opslag, Marketplace-add-ons voor uitgebreide API’s (tokensaldi, NFT-gegevens, DeFi-analyses) en de Quicknode SDK een gestroomlijnde integratie in JavaScript en TypeScript. Samen vormen deze tools een compleet infrastructuurplatform voor het bouwen, opschalen en beheren van Web3-applicaties in productieomgeving.
Veelgestelde vragen
Wat is het verschil tussen een endpoint een indexer?
Een endpoint directe vragen over de huidige toestand van de blockchain, zoals het saldo of een afzonderlijke transactie. Een indexer verwerkt de volledige geschiedenis in een database, zodat je complexe zoekopdrachten kunt uitvoeren – zoals de volledige transactiegeschiedenis van een wallet – die RPC alleen niet efficiënt kan verwerken.
Kan een dapp zonder backend werken?
Ja. Veel dapps werken volledig aan de clientzijde: de frontend communiceert rechtstreeks met RPC-eindpunten en de wallet van de gebruiker. Een backend is optioneel en wordt toegevoegd voor off-chain-taken zoals caching, analyse en gasloze transacties.
Hoe verifieert een gebruiker zich in een Web3-app?
Gebruikers koppelen een wallet in plaats van een account aan te maken. Het walletadres fungeert als identiteit, en het ondertekenen van een bericht of transactie bewijst dat men de controle over dat adres heeft, waardoor gebruikersnamen en wachtwoorden overbodig worden.
Waarom maken de meeste teams gebruik van een infrastructuurprovider?
Om meerdere ketens betrouwbaar te kunnen ondersteunen, is het nodig om voor elke keten nodes, indexers en opslag te beheren en in stand te houden. Een provider brengt dit allemaal samen op één platform, dat sneller in gebruik kan worden genomen en goedkoper is in het beheer dan wanneer men dit zelf zou opzetten.
Is de Web3-infrastructuur volledig gedecentraliseerd?
Sommige onderdelen wel, andere niet. De blockchains en smart contracts zijn gedecentraliseerd, maar ondersteunende diensten zoals RPC-providers en frontends draaien vaak op gecentraliseerde cloudplatforms. Ook realtime gegevensstromen, zoals blockchain-datastreaming, zijn doorgaans afkomstig van beheerde providers.