Ga naar de hoofdinhoud

Aan de slag met Streams

Bijgewerkt op
1 juli 2026

Overzicht

Streams is een krachtige oplossing voor gegevensverzameling en -streaming, speciaal ontworpen voor Web3-toepassingen. Hiermee kun je zowel onbewerkte als gefilterde blockchain-gegevens efficiënt verzamelen, verwerken en opslaan, zowel in realtime als historisch. Of je nu indexers, analyseplatforms of realtime dashboards bouwt: Streams biedt de infrastructuur om robuuste gegevenspijplijnen te creëren met functies zoals batchverwerking, backfill en continue streaming.

Waarom Streams?

Streams zorgt voor een revolutie in de toegang tot blockchain-gegevens door een op push gebaseerde architectuur te implementeren die gegevens rechtstreeks naar uw opslag- of indexeringssystemen stuurt. Dit gebeurtenisgestuurde model biedt een aantal belangrijke voordelen:


  • Efficiënte gegevenslevering: zorg voor een ‘exactly-once’-levering van blockchaingegevens in de volgorde van definitieve vaststelling (tijdens blockchain-reorganisaties kunnen de betrokken blokken opnieuw worden gestreamd met gecorrigeerde gegevens — zie ‘Reorg Handling’)
  • Realtime verwerking: krijg direct toegang tot blockchain-gegevens, ideaal voor het bouwen van live dashboards en realtime analyses
  • Toegang tot historische gegevens: vul historische gegevens eenvoudig aan met configureerbare batchgroottes
  • Filtering aan de serverzijde: verwerk en bewerk gegevens op de infrastructuur van Quicknode met behulp van JavaScript-filters voordat deze uw systeem bereiken
  • Naadloze integratie: maak rechtstreeks verbinding met je favoriete gegevensopslag of webhook-backend

Hoewel traditionele JSON-RPC-pollingmethoden ingewikkeld kunnen zijn om te implementeren en te onderhouden, biedt Streams een elegantere oplossing die de complexiteit van de toegang tot blockchaingegevens voor u uit handen neemt.

Functies van Streams


  • Filtering op basis van JavaScript – Definieer aangepaste filters in JavaScript om blockchain-gegevens op de infrastructuur van Quicknode te verwerken en om te zetten voordat deze uw bestemming bereiken. Deze filtering aan de serverzijde vermindert de overhead voor gegevensoverdracht en -verwerking.
  • Flexibele gegevensopname – Streams ondersteunt zowel onbewerkte blockchaingegevens als gefilterde datasets. Gebruik JavaScript-filters om precies die gegevens te extraheren die u nodig hebt voor uw indexering of analyse, verwerkt op onze infrastructuur.
  • Verwerking van historische en realtime gegevens – Bouw uitgebreide datapijplijnen die zowel historische gegevensaanvullingen als realtime streaming verwerken, ideaal voor indexerings- en analyseplatforms.
  • Gegarandeerde gegevensoverdracht – Streams zorgt ervoor dat blokken, ontvangstbevestigingen en traces precies één keer worden verzonden in de volgorde van definitieve vastlegging, waardoor de gegevensintegriteit voor uw indexerings- en analysesystemen gewaarborgd blijft.
  • Efficiënte batchverwerking - Stel gegevensbatches van meerdere blokken samen voor een optimale opname van historische gegevens.
  • Ondersteuning voor realtime analyses – Stuur consistente, realtime gegevens door om live dashboards en analyseplatforms te voeden.
  • Operationele transparantie – Houd uw datapijplijnen in de gaten via gedetailleerde logbestanden en prestatiestatistieken, met gebruiksstatistieken voor kostenoptimalisatie.

Levenscyclus van streams

Streams zijn datapijplijnen die blockchain-gegevens ophalen, verwerken en doorsturen naar uw opslag- of indexeringssystemen. Elke stream kan worden geconfigureerd voor specifieke gegevenstypen (blokken, ontvangstbewijzen, traces, enz.) en kan met filters worden aangepast aan uw indexerings- of analysebehoeften. De levenscyclus van een stream bestaat uit de volgende fasen:


  • Actief: Streams neemt continu gegevens op en verwerkt deze volgens uw configuratie, waarna ze naar uw opslag- of backendsysteem worden doorgestuurd.
  • Gepauzeerd: Je kunt de gegevensinvoer en -verwerking tijdelijk onderbreken, terwijl je streamconfiguratie behouden blijft.
  • Beëindigd: De gegevensinvoer is gestopt vanwege fouten bij de overdracht.
    • Automatisch herstel: Wanneer een stream wordt beëindigd, probeert het systeem deze automatisch opnieuw te starten met steeds langere tussenpozen binnen een periode van 24 uur: 1 minuut, 2 minuten, 3 minuten, 5 minuten, 15 minuten, 30 minuten, 1 uur, 6 uur, 12 uur, 18 uur en ~24 uur.
    • Als het probleem met de bestemming tijdens een van de herhalingspogingen wordt opgelost, wordt de stream hervat vanaf het punt waar deze was onderbroken.
    • Als alle pogingen binnen 24 uur mislukken, blijft de stream onderbroken en wordt er een e-mailbericht verstuurd.
  • Voltooid: De stream heeft alle gegevens binnen het gedefinieerde bereik (voor historische aanvullingen) met succes verwerkt.

JavaScript-filtering

Met Streams kun je aangepaste JavaScript-filters definiëren die blockchain-gegevens op de infrastructuur van Quicknode verwerken voordat deze je bestemming bereiken. Deze filterfunctie aan de serverzijde biedt verschillende voordelen:


  • Stream de gegevens die u wilt: alleen de gefilterde gegevens die aan uw criteria voldoen, worden naar uw bestemming verzonden, waardoor er minder bandbreedte, opslagruimte en rekenkracht nodig is.
  • Aangepaste transformaties: Verwerk en verrijk de gegevens met behulp van JavaScript voordat ze je systeem bereiken, onder meer door:
    • Bepaalde transactietypen of gebeurtenissen filteren
    • Specifieke velden extraheren en transformeren
    • Het berekenen van afgeleide waarden
    • Gegevenspunten samenvoegen
  • Prestatieoptimalisatie: Door gegevens te verwerken op de infrastructuur van Quicknode wordt de rekenbelasting op uw systemen verminderd.
  • Flexibele filterfunctie: Maak complexe filterlogica met behulp van alle functies van JavaScript, waaronder:
    • Reguliere expressies voor patroonherkenning
    • Wiskundige bewerkingen voor het berekenen van waarden
    • Bewerking van arrays en objecten voor gegevenstransformatie
    • Voorwaardelijke logica voor complexe filterregels

Streams verzenden de payload-gegevens in stream.data en de metagegevens in stream.metadata.

Opmerking: De parameternaam in je filterfunctie (bijv., stream, nuttige lading, gegevens) is willekeurig — het gaat om de vorm van het doorgegeven object, dat altijd .data en .metadata eigenschappen.

Voorbeeldfilters

Filter voor het Solana-stakeprogramma

Dit filter zoekt in elk blok alle geslaagde transacties die ten minste één opdracht bevatten die naar het Solana Stake-programma is verzonden — zoals staken, unstaking of het verplaatsen van een inzet:

function main(stream) {
const STAKE_PROGRAM = "Stake11111111111111111111111111111111111111";
const matches = [];

for (const block of stream.data) {
for (const tx of block.transactions) {
if (!tx.meta || tx.meta.err) continue;

const stakeInstructions = (tx.transaction.message.instructions || []).filter(
ix => ix.programId === STAKE_PROGRAM
);

if (stakeInstructions.length) {
matches.push({
signature: tx.transaction.signatures[0],
blockTime: block.blockTime,
instructionCount: stakeInstructions.length,
programId: STAKE_PROGRAM
});
}
}
}

return matches.length ? matches : null;
}

Ethereum ERC-20-overdrachtsfilter

Dit filter verwerkt ERC-20-overdrachtsgebeurtenissen aan de hand van de dataset met blokken en ontvangstbewijzen, waarbij de logbestanden worden gedecodeerd met behulp van de ERC-20 ABI:

function main(stream) {
const ERC20_ABI = [{
name: "Transfer",
type: "event",
anonymous: false,
inputs: [
{ name: "from", type: "address", indexed: true },
{ name: "to", type: "address", indexed: true },
{ name: "value", type: "uint256", indexed: false }
]
}];

const receipts = stream.data.flatMap(block => block.receipts || []);
const decoded = decodeEVMReceipts(receipts, [ERC20_ABI]);

const erc20Transfers = decoded.filter(r =>
r.decodedLogs?.some(log => log.name === "Transfer")
);

return erc20Transfers.length ? { receipts: erc20Transfers } : null;
}

Dit filter laat zien hoe je:

  • Gebruik de dataset ‘blok met bonnen’
  • Een ABI definiëren en gebruiken voor het decoderen van gebeurtenissen
  • Verwerk gedecodeerde logbestanden om ERC-20-overdrachtsgebeurtenissen te extraheren
  • Geef alleen bonnen weer die relevante gebeurtenissen bevatten

Beschikbaarheid van functies

Streams is beschikbaar voor alle gebruikers met een Quicknode-abonnement. Voor teams met specifieke behoeften bieden we op maat gemaakte datasets, speciale ondersteuning en integraties op maat. Neem contact op met ons team voor meer informatie. Ga naar de prijspagina voor een volledig overzicht van de functies van Streams per abonnement. \

Solana Streams met gratis proefabonnementen

Met gratis proefaccounts kunnen alleen Solana Streams worden aangemaakt die de tip van de blockchain in realtime volgen (d.w.z. een abonnement op nieuwe blokken zodra deze worden geproduceerd). Historische aanvullingen op Solana Streams zijn alleen beschikbaar bij betaalde abonnementen.

Deze beperking geldt alleen voor Solana Streams. Alle andere blockchains zijn beschikbaar in de gratis proefabonnementen, inclusief volledige historische gegevens.

Toegang

Je hebt toegang tot Streams via het Quicknode Developer Portal en via de Streams REST API.

Ondersteunde blockchains

Streams kunnen snel worden ingesteld voor elk van de hieronder genoemde ondersteunde blockchains en netwerken. Teams met specifieke vereisten kunnen contact opnemen met ons team voor meer informatie. Voor alle andere gevallen kunt u gebruikmaken van onze zelfbedieningsoptie voor de volgende blockchains:

KettingMainnetTestnetten
0gGalileo-testnet
SamenvattingTestnet
ArbitrumSepolia
Arbitrum Nova
BoogTestnet
AultTestnet
Avalanche C-ChainFuji
B3Sepolia
BasisSepolia
BeraBepolia
BitcoinTestnet4
Bitcoin CashTestnet
ExplosieSepolia
BNB Smart ChainTestnet
Celo
CyberSepolia
Dogecoin
EthereumHoodi, Sepolia
Fantom
FlareTestnet
StroomTestnet
VloeiendTestnet
Fraxtal
Gnosis
Zwaartekracht
HederaTestnet
HemiTestnet
Hyperliquid EVMTestnet
Hyperliquid Hypercore
Onveranderlijke zkEVMTestnet
InjectiefTestnet
InktSepolia
Japan Open Chain
KaiaTestnet
Katana
LensTestnet
Linea
Lisk
LitecoinTestnet
MantelSepolia
MegaETH
MocaTestnet
Modus
MonadeTestnet
MorphHoodi
OptimismeSepolia
Peaq
PlasmaTestnet
PolygonAmoy
Polygon zkEVMCardona-testnet
RobinhoodTestnet
SaharaTestnet
ScrollenTestnet
SeiTestnet
SolanaDevnet, Testnet
Soneium
Sonic
Sophon
StellarTestnet
GEGEVENSAeneid Testnet
TempoTestnet
Tron
UnichainSepolia
VanaMoksha-testnet
WorldchainSepolia
Laag XTestnet
XaiSepolia
XRP-ledgerTestnet
XRPL EVMTestnet
zkSyncSepolia
Zora

Je datapijplijn optimaliseren


  • Bestemmingsoptimalisatie: Zorg ervoor dat uw opslag- of indexeringssysteem correct is geconfigureerd om de binnenkomende gegevensstroom aan te kunnen. Dit omvat:
    • Database-indexen en schrijfpatronen optimaliseren
    • De juiste buffergroottes instellen
    • Het opzetten van efficiënte strategieën voor gegevenspartitionering
    • Belangrijk: Streams verwerkt blokken achtereenvolgens en gaat pas door naar het volgende blok of de volgende batch nadat het de bevestiging heeft ontvangen dat het huidige blok of de huidige batch met succes bij uw bestemming is afgeleverd. Dit waarborgt de consistentie van de gegevens, maar betekent wel dat uw bestemming in staat moet zijn om elk blok of elke batch binnen een redelijke termijn te verwerken en de ontvangst ervan te bevestigen.
  • Prestatiebewaking: Controleer regelmatig uw Streams-dashboard om uw verbruik bij te houden en uw streams indien nodig aan te passen.
  • Uw pijplijn opschalen: Als u merkt dat uw gegevensbehoeften toenemen en verder gaan dan wat uw huidige abonnement dekt, kunt u overwegen om over te stappen naar een hoger abonnement.

Inzicht in de facturering van Streams

Streams verbruikt API-credits op basis van het aantal blokken dat door je Stream wordt verwerkt, afhankelijk van de vermenigvuldigingsfactor voor het netwerk en de dataset. Streams verbruikt API-credits uit dezelfde gedeelde creditpool als RPC.

Het aantal verbruikte studiepunten hangt af van:

  • Netwerk — Verschillende blockchains hebben verschillende blokproductiesnelheden
  • Type dataset — Complexere datasets (zoals traces) verbruiken meer credits dan eenvoudige datasets (zoals blokken)

Maak een schatting van uw kosten

Gebruik de API-kostencalculator om je maandelijkse kosten te schatten op basis van je specifieke configuratie. De calculator helpt je bij het volgende:

  • Vergelijk de kosten van verschillende netwerken en soorten datasets
  • Bereken zowel de kosten voor tipstreaming (in realtime) als voor backfill (historisch)

De juiste configuratie kiezen

  • Selecteer de juiste dataset: Kies de kleinste dataset die aan je behoeften voldoet (bijvoorbeeld: gebruik blok in plaats van blokkeren_met_bonnen (als je geen transactiegegevens nodig hebt). De keuze van de dataset heeft direct invloed op het kredietverbruik.
  • Gebruik filters om je gegevens te structureren: pas JavaScript-filters toe om alleen de gegevens door te sturen die je applicatie nodig heeft, waardoor je je gegevenspijplijn en de verdere verwerking optimaliseert.
  • Houd je verbruik in de gaten: bekijk regelmatig je dataverbruik om inzicht te krijgen in je verbruikspatronen en pas je streaminggebruik indien nodig aan.

Veelgestelde vragen

Wat is Quicknode Streams?
Streams is een oplossing voor gegevensverzameling en -streaming voor Web3-toepassingen, waarmee u zowel onbewerkte als gefilterde blockchain-gegevens efficiënt kunt verzamelen, verwerken en opslaan, zowel in realtime als historisch.
Hoe krijg ik toegang tot Quicknode Streams?
Je kunt Streams openen via het Quicknode Developer Portal of via de Streams REST API.
Wat is JavaScript-filtering in Streams?
Met JavaScript-filtering kun je aangepaste filters definiëren die blockchain-gegevens op de infrastructuur van Quicknode verwerken voordat deze je bestemming bereiken, waardoor de gegevensoverdracht en de verwerkingsbelasting op je systemen worden verminderd.

Lees meer over het gebruik van filters met Streams.
Welke soorten bestemmingen ondersteunt Streams?
Streams kunnen gegevens rechtstreeks naar uw voorkeursopslag, indexeringssystemen of webhook-backends verzenden, met ondersteuning voor batchverwerking en realtime verzending.
Hoe waarborgt Streams de betrouwbaarheid van de gegevens?
Streams zorgt ervoor dat blokken, ontvangstbevestigingen en traceringen precies één keer worden afgeleverd in de volgorde van definitieve bevestiging, en verwerkt blokken achtereenvolgens, waarbij het wacht op bevestiging dat elk blok of elke batch met succes is afgeleverd alvorens verder te gaan.
Welke blockchain-netwerken worden door Streams ondersteund?
Streams ondersteunt meer dan 50 blockchains, waaronder Ethereum, Solana, Bitcoin, Arbitrum, Base, Polygon, Avalanche en vele andere, zowel op mainnets als op testnets. Bekijk hierboven de volledige lijst met ondersteunde blockchains.

We ❤️ feedback!

Mocht je opmerkingen of vragen hebben over deze documentatie, laat het ons dan weten. We horen graag van je!

Deel dit document