4 minutes
Substreams-Powered Subgraphs FAQ
Vad är Substreams?
Substreams is an exceptionally powerful processing engine capable of consuming rich streams of blockchain data. It allows you to refine and shape blockchain data for fast and seamless digestion by end-user applications.
Specifically, it’s a blockchain-agnostic, parallelized, and streaming-first engine that serves as a blockchain data transformation layer. It’s powered by Firehose, and enables developers to write Rust modules, build upon community modules, provide extremely high-performance indexing, and sink their data anywhere.
Substreams is developed by StreamingFast. Visit the Substreams Documentation to learn more about Substreams.
Vad är Substreams-drivna subgrafer?
Substreams-powered subgraphs combine the power of Substreams with the queryability of subgraphs. When publishing a Substreams-powered Subgraph, the data produced by the Substreams transformations, can output entity changes that are compatible with subgraph entities.
If you are already familiar with subgraph development, note that Substreams-powered subgraphs can then be queried just as if it had been produced by the AssemblyScript transformation layer. This provides all the benefits of subgraphs, including a dynamic and flexible GraphQL API.
Hur skiljer sig Substreams-drivna subgrafer från subgrafer?
Subgraphs are made up of datasources which specify onchain events, and how those events should be transformed via handlers written in Assemblyscript. These events are processed sequentially, based on the order in which events happen onchain.
By contrast, substreams-powered subgraphs have a single datasource which references a substreams package, which is processed by the Graph Node. Substreams have access to additional granular onchain data compared to conventional subgraphs, and can also benefit from massively parallelised processing, which can mean much faster processing times.
Vilka fördelar har användning av Substreams-drivna subgrafer?
Substreams-powered subgraphs combine all the benefits of Substreams with the queryability of subgraphs. They bring greater composability and high-performance indexing to The Graph. They also enable new data use cases; for example, once you’ve built your Substreams-powered Subgraph, you can reuse your Substreams modules to output to different sinks such as PostgreSQL, MongoDB, and Kafka.
Vilka fördelar har Substreams?
Det finns många fördelar med att använda Substreams, inklusive:
-
Sammansättbarhet: Du kan stapla Substreams-moduler som LEGO-block och bygga på gemenskapsmoduler för att ytterligare förädla offentliga data.
-
Högpresterande indexering: Ordervärden snabbare indexering genom storskaliga kluster av parallella operationer (tänk BigQuery).
-
Utdata var som helst: Du kan sänka dina data var som helst du vill: PostgreSQL, MongoDB, Kafka, subgrafer, platta filer, Google Sheets.
-
Programmerbarhet: Använd kod för att anpassa extrahering, utföra transformationsbaserade aggregeringar och modellera din utdata för flera sänkar.
-
Tillgång till ytterligare data som inte är tillgänglig som en del av JSON RPC
-
Alla fördelar med Firehose.
Vad är Firehose?
Utvecklat av StreamingFast, är Firehose ett blockkedjedata-extraktionslager som är utformat från grunden för att bearbeta blockkedjans fullständiga historik med hastigheter som tidigare inte var skådade. Genom att erbjuda en filbaserad och strömningsorienterad metod är det en kärnkomponent i StreamingFasts svit med öppen källkodstekniker och grunden för Substreams.
Gå till documentation för att lära dig mer om Firehose.
Vilka fördelar har Firehose?
Det finns många fördelar med att använda Firehose, inklusive:
-
Lägsta latens och ingen avfrågning: I en strömningsorienterad stil är Firehose-noderna utformade för att snabbt skicka ut blockdata.
-
Förebygger driftstopp: Designat från grunden för hög tillgänglighet.
-
Missa aldrig en händelse: Firehose-strömmens markör är utformad för att hantera gafflar och att fortsätta där du avslutade under alla förhållanden.
-
Rikaste datamodell: Bästa datamodell som inkluderar balansändringar, hela anropsträdet, interna transaktioner, loggar, lagringsändringar, gasavgifter och mer.
-
Använder platta filer: Blockkedjedata extraheras till platta filer, den billigaste och mest optimerade datorkällan som finns tillgänglig.
Var kan utvecklare få mer information om Substreams-drivna subgrafer och Substreams?
The Substreams documentation will teach you how to build Substreams modules.
The Substreams-powered subgraphs documentation will show you how to package them for deployment on The Graph.
The latest Substreams Codegen tool will allow you to bootstrap a Substreams project without any code.
Vad är rollen för Rust-moduler i Substreams?
Rust-moduler är motsvarigheten till AssemblyScript-mappers i subgrafer. De kompileras till WASM på ett liknande sätt, men programmeringsmodellen tillåter parallell körning. De definierar vilken typ av omvandlingar och aggregeringar du vill tillämpa på råblockkedjedata.
See modules documentation for details.
Vad gör Substreams sammansättbart?
Vid användning av Substreams sker sammansättningen på omvandlingsnivån, vilket gör att cachade moduler kan återanvändas.
Som exempel kan Alice bygga en DEX-prismodul, Bob kan använda den för att bygga en volymaggregator för vissa intressanta tokens, och Lisa kan kombinera fyra individuella DEX-prismoduler för att skapa en prisoracle. En enda Substreams-begäran kommer att paketera alla dessa individuella moduler, länka dem samman, för att erbjuda en mycket mer förädlad dataström. Den strömmen kan sedan användas för att fylla i en subgraf och frågas av användare.
Hur kan man bygga och distribuera en Substreams-drivna subgraf?
After defining a Substreams-powered Subgraph, you can use the Graph CLI to deploy it in Subgraph Studio.
Var kan jag hitta exempel på Substreams och Substreams-drivna subgrafer?
Du kan besöka detta Github-repo för att hitta exempel på Substreams och Substreams-drivna subgrafer.
Vad innebär Substreams och Substreams-drivna subgrafer för The Graph Network?
Integrationen lovar många fördelar, inklusive extremt högpresterande indexering och ökad sammansättbarhet genom att dra nytta av gemenskapsmoduler och bygga vidare på dem.