Antwoorden>Meer informatie over indexering en blockchain-gegevens>RPC versus indexering: wat is het verschil?
RPC versus indexering: wat is het verschil?
// Tags
RPC versus indexeringwanneer moet je de indexer gebruiken?
TL;DR: RPC en indexering zijn twee fundamenteel verschillende manieren om toegang te krijgen tot blockchain-gegevens. Met RPC-eindpunten kun je de huidige status van de blockchain in realtime opvragen, één verzoek per keer. Bij indexering worden blockchain-gegevens geëxtraheerd, getransformeerd en opgeslagen in een doorzoekbare database, zodat je applicatie complexe zoekopdrachten kan uitvoeren op historische records. RPC is te vergelijken met het vragen aan een bibliothecaris om één specifiek boek te zoeken. Indexering is te vergelijken met het opzetten van een kaartenbak voor de hele bibliotheek. De meeste productieapplicaties hebben beide nodig.
De eenvoudige uitleg
Elke blockchain-toepassing heeft gegevens nodig. Een wallet heeft rekeningsaldi nodig. Een DeFi-dashboard heeft tokenprijzen en de status van liquiditeitspools nodig. Een NFT-marktplaats heeft eigendomsgegevens en transactiegeschiedenis nodig. Een analyseplatform heeft geaggregeerde statistieken nodig over duizenden contracten en miljoenen transacties. De vraag is hoe je die gegevens uit de blockchain in je toepassing kunt krijgen.
RPC-eindpunten vormen de native interface van de blockchain. Wanneer je applicatie een JSON-RPC-verzoek naar een node stuurt, stelt deze een directe vraag over de huidige of recente toestand van de blockchain: wat is het saldo van deze wallet op dit moment, wat is er gebeurd bij deze specifieke transactie, wat bevat bloknummer 20.000.000? Het knooppunt zoekt het antwoord op en stuurt het terug. RPC is direct, nauwkeurig en eenvoudig voor het opzoeken van specifieke gegevens. Maar het heeft een cruciale beperking: RPC-methoden zijn ontworpen voor het ophalen van specifieke, bekende gegevens, niet voor het doorzoeken of samenvoegen van gegevens in de hele keten. Er bestaat geen RPC-methode voor „zoek alle transacties van deze wallet in de afgelopen 30 dagen” of „toon mij de top 10 liquiditeitspools op basis van volume”.
Indexering vult deze leemte door een doorzoekbare database op te bouwen op basis van ruwe blockchain-gegevens. Een indexer leest elk blok zodra het wordt geproduceerd, decodeert transacties en gebeurtenislogboeken, zet de ruwe gegevens om in gestructureerde records en schrijft die records naar een database met de juiste indexen. Zodra de gegevens zijn geïndexeerd, kan uw applicatie de gegevens opvragen met behulp van SQL, GraphQL of een andere querytaal die uw database ondersteunt. Complexe filters, aggregaties, sortering, joins en full-text zoeken worden allemaal mogelijk.
Wanneer moet je RPC gebruiken?
RPC is de juiste keuze wanneer je applicatie in realtime specifieke, bekende gegevens moet lezen of schrijven. Het controleren van het huidige ETH-saldo van een wallet gebeurt met één enkele "eth_getBalance"-aanroep. Het indienen van een ondertekende transactie bij de mempool vereist "eth_sendRawTransaction". Het uitlezen van de retourwaarde van de view-functie van een smart contract gebeurt met "eth_call". Dit zijn allemaal puntquery's waarbij u precies weet wat u wilt en de RPC-methode dit direct kan retourneren.
RPC is ook de enige optie voor schrijfbewerkingen. Je kunt geen transactie via een indexer indienen. Indexers zijn alleen-lezen systemen die gegevens verwerken nadat deze in de blockchain zijn vastgelegd. Telkens wanneer je applicatie een transactie moet verzenden, een token moet goedkeuren, moet communiceren met een smart contract of een bewerking moet doorgeven die de status wijzigt, moet dit via een endpoint gebeuren.
Realtime statuscontrole is een ander sterk punt van RPC. Wanneer een DeFi-protocol de onderpandratio van een gebruiker moet controleren voordat een liquidatie wordt uitgevoerd, of wanneer een bridge moet verifiëren of een storting is bevestigd, vraagt het via RPC de huidige status van het knooppunt op. Het antwoord weerspiegelt het meest recente canonieke blok, waardoor de gegevens zo actueel mogelijk zijn.
Waar RPC tekortschiet, is bij elke query waarbij gegevens over meerdere blokken of contracten moeten worden gescand, gefilterd of samengevoegd. „Toon mij alle ERC-20-overdrachten waarbij dit adres betrokken is” vereist het doorlopen van elk blok en het controleren van elk transactiebewijs, wat computationeel onhaalbaar is via RPC alleen. "Wat is het totale handelsvolume op Uniswap V3 in de afgelopen 24 uur?" vereist het decoderen en optellen van gebeurtenislogboeken uit duizenden blokken verspreid over tientallen poolcontracten. Dit zijn indexeringsproblemen.
Wanneer moet je indexering gebruiken?
Indexering is essentieel wanneer je applicatie blockchain-gegevens moet doorzoeken, filteren, sorteren of samenvoegen. Portefeuille-trackers die de volledige transactiegeschiedenis van een gebruiker over meerdere tokens en blockchains weergeven, zijn afhankelijk van geïndexeerde gegevens. Analysedashboards die handelsvolumes, TVL-trends, gasverbruikspatronen en protocolstatistieken weergeven, zijn volledig gebaseerd op geïndexeerde databases. Block explorers zoals Etherscan indexeren de volledige blockchain, zodat gebruikers naar elk adres, elke transactie of elk contract kunnen zoeken.
Historical analysis is another core indexing use case. If a compliance team needs to trace the flow of funds through a series of wallets over six months, that requires querying indexed transaction data with complex joins and filters. If a research firm wants to analyze MEV extraction patterns across a year of Ethereum blocks, it needs a comprehensive index of transactions, traces, and event logs with the computational weight of those queries handled by a database, not a blockchain node.
Ook gebeurtenisgestuurde architecturen profiteren van indexering. In plaats van RPC-eindpunten te pollen om te detecteren wanneer een specifieke smart contract-gebeurtenis plaatsvindt, kan een indexer continu nieuwe blokken verwerken en overeenkomende gebeurtenissen in realtime naar je applicatie doorsturen. Dit is betrouwbaarder dan WebSocket-abonnementen (waarbij de verbinding kan worden verbroken en gebeurtenissen kunnen worden gemist) en efficiënter dan HTTP-polling (waarbij verzoeken worden verspild aan lege antwoorden).
Beide samen gebruiken
De meeste blockchain-toepassingen voor productiedoeleinden maken gebruik van een combinatie van RPC en indexering. De leeservaring voor de gebruiker wordt doorgaans gevoed door geïndexeerde gegevens: portefeuillewaarden, transactiegeschiedenis, analytische dashboards en zoekresultaten. Wanneer de gebruiker een actie uitvoert (een transactie verzenden, tokens ruilen, een NFT slaan), schakelt de toepassing over naar RPC om de transactie naar het netwerk te verzenden en de opname ervan te bevestigen. Nadat de transactie is bevestigd, haalt de indexer deze uit het nieuwe blok en werkt de database bij, waarna dit wordt weergegeven in de gebruikersinterface.
Deze architectuur zorgt voor een duidelijke scheiding van verantwoordelijkheden. RPC verzorgt realtime schrijfbewerkingen en puntleesbewerkingen. Geïndexeerde databases verwerken complexe leesbewerkingen en historische zoekopdrachten. Het resultaat is een applicatie die voor gebruikers snel en responsief aanvoelt, terwijl achter de schermen geavanceerde patronen voor gegevenstoegang worden ondersteund.
Wat is het verschil tussen RPC en indexering?
Kort gezegd beantwoordt een endpoint directe vragen over de huidige of specifieke status, terwijl blockchain-indexering de keten vooraf verwerkt tot een database waarin je kunt zoeken en gegevens kunt samenvoegen. In de onderstaande tabel worden de praktische verschillen naast elkaar weergegeven.
Aspect
RPC
Indexering
Toegangspatroon
Eén vraag, één antwoord
Zoeken, filteren en samenvoegen
Actualiteit van de gegevens
Realtime, meest recente blok
Een lichte vertraging achter de kettingpunt
Historische diepgang
Er is een archiefknooppunt nodig
Opgeslagen en direct doorzoekbaar
Schrijfondersteuning
Ja, de enige manier om te schrijven
Nee, alleen-lezen
Inrichtingsinspanning
Low, roep een endpoint aan
Hoger, een pijpleiding aanleggen of kopen
Het meest geschikt voor
Live-uitlezingen en transacties
Analyses, geschiedenis en zoeken
Is een indexer sneller dan RPC bij het opvragen van historische gegevens?
Voor alles wat zich over meerdere blokken uitstrekt, ja. Als je een RPC-knooppunt vraagt om de volledige geschiedenis van een wallet, moet dat blok voor blok worden doorzocht, terwijl een indexer die gegevens al heeft gedecodeerd en opgeslagen, zodat hetzelfde verzoek met één snelle query wordt beantwoord. Hoe verder terug in de geschiedenis, hoe groter het verschil: lees waarom het opvragen van blockchain-gegevens zo moeilijk is en hoe realtime- en historische gegevens in tegengestelde richtingen werken.
Type zoekopdracht
Beste hulpmiddel
Waarom
Huidige stand of toestand
RPC
Direct en in realtime
Een transactie indienen
RPC
Alleen RPC kan schrijven
Transactiegeschiedenis van de portemonnee
Indexeerder
Zoeken over meerdere blokken heen is nodig
Protocolvolume of TVL
Indexeerder
Er is een aggregatie over de tijd nodig
Live-evenementen rond de opvoering van nieuwe blokken
RPC of streaming
Push met lage latentie
Kun je een blockchain-indexer bouwen op basis van RPC?
Ja, en bijna elke indexer doet dat. Een indexer leest de blockchain via RPC of een streamingfeed, decodeert elk blok en schrijft gestructureerde rijen naar zijn eigen database. Het lastige zit hem in het betrouwbaar afhandelen van reorganisaties, herhalingspogingen en hiaten; daarom maken veel teams gebruik van een beheerde blockchain-datastreamingpijplijn in plaats van zelf RPC-pollingloops te programmeren.
Vervangt indexering RPC?
Nee. Indexering en RPC zijn complementaire lagen binnen de Web3-infrastructuurstack. RPC blijft de enige manier om transacties in te dienen en de actuele status op te vragen, terwijl indexering de basis vormt voor zoekfuncties, geschiedenis en analyses. Productie-apps leiden schrijfbewerkingen en live-opvragingen naar RPC en leiden complexe opvragingen naar een index.
Veelgestelde vragen
Kun je transacties via een indexer indienen?
Nee. Indexers zijn alleen-lezen systemen die gegevens verwerken nadat deze in de blockchain zijn vastgelegd. Elke transactie moet via een endpoint worden ingediend.
Waarom werkt RPC traag bij analytische query's?
RPC levert per aanroep één stuk bekende data op en kan niet filteren of gegevens over de hele keten samenvoegen. Om een analytische vraag met RPC te beantwoorden, moet je duizenden opeenvolgende aanroepen doen en de resultaten zelf combineren, wat traag en duur is.
Hoe actueel zijn de geïndexeerde gegevens in vergelijking met RPC?
Geïndexeerde gegevens lopen meestal enkele seconden tot enkele minuten achter op de kettingtip, afhankelijk van de indexer. RPC geeft het meest recente canonieke blok weer, dus voor actualiteit binnen een seconde moet je nog steeds rechtstreeks van een node lezen.
Heb je een archiefknooppunt nodig voor het indexeren?
Om de geschiedenis terug te vullen, heb je archiefgegevens nodig, afkomstig van een archiefknooppunt of een backfill-pijplijn. Zie ‘volledig knooppunt versus archiefknooppunt’ voor het verschil.
Is The Graph een indexer of een RPC-provider?
The Graph is een indexeringsprotocol. De eigen indexers lezen de blockchain via RPC en stellen het verwerkte resultaat beschikbaar in de vorm van doorzoekbare subgrafen. Het kan zelf geen transacties indienen of realtime gegevens met een responsduur van minder dan een seconde leveren.
Hoe Quicknode beide Quicknode
Quicknode infrastructuur voor beide kanten van deze vergelijking. De Core API biedt wereldwijd gedistribueerde RPC-toegang met lage latentie over meer dan 80 blockchains, waarbij realtime leesbewerkingen en transactieverzendingen worden afgehandeld met een uptime van 99,99% en responstijden die 2,5 keer sneller zijn dan die van concurrenten. Verbeterde API-methoden verminderen het aantal afzonderlijke RPC-aanroepen dat nodig is voor veelvoorkomende bewerkingen, zoals het ophalen van tokensaldi of NFT-collecties.
Quicknode Streams overbrugt de kloof tussen RPC en indexering door een push-gebaseerde datapijplijn te bieden die ruwe of gefilterde blockchain-gegevens rechtstreeks naar uw database, datawarehouse of webhook levert. In plaats van een aangepaste RPC-polling-infrastructuur te bouwen en te onderhouden om uw indexer te voeden, configureert u een Stream en Quicknode de gegevensextractie, filtering, levering, reorg-correctie en herhalingslogica. Streams zowel realtime streaming als het aanvullen van historische gegevens, zodat u uw index vanaf het begin kunt vullen en actueel kunt houden met één enkele tool. Voor teams die hun eigen indexer moeten bouwen, Quicknode een stapsgewijze handleiding waarin wordt uitgelegd hoe u met behulp van Streams een complete blockchain-indexer kunt maken op basis van PostgreSQL.