Substreams
Reading time: 2 min
Substreams is a powerful blockchain indexing technology developed for The Graph Network. It enables developers to write Rust modules, compose data streams alongside the community, and provide extremely high-performance indexing due to parallelization in a streaming-first approach.
With Substreams, developers can quickly extract data from different blockchains (Ethereum, BNB, Solana, ect.) and send it to various locations of their choice, such as a Postgres database, a Mongo database, or a Subgraph. Additionally, Substreams packages enable developers to specify which data they want to extract from the blockchain.
- Primeiro escreva um programa em Rust, que define as transformações que queres aplicar aos dados em blockchain. Por exemplo, a seguinte função em Rust extrai informações relevantes de um bloco no Ethereum (número, hash, e hash parente).
fn get_my_block(blk: Block) -> Result<MyBlock, substreams::errors::Error> {let header = blk.header.as_ref().unwrap();Ok(MyBlock {number: blk.number,hash: Hex::encode(&blk.hash),parent_hash: Hex::encode(&header.parent_hash),})}
Embrulhe o seu programa Rust num módulo WASM com a execução de um único comando numa CLI.
O container WASM é enviado a um endpoint do Substreams para execução. O provedor do Substreams alimenta o container WASM com os dados da blockchain e as transformações são aplicadas.
Selecione um , um lugar para enviar os dados transformados (um banco de dados Postgres ou um Subgraph, por exemplo).
A documentação oficial do Substreams é mantida atualmente pela equipa do StreamingFast no .
To learn about the latest version of Substreams CLI, which enables developers to bootstrap a Substreams project without any code, please check .