on Monad
In this tutorial, you'll learn how to initialize a Monad-based Substreams project using the Substreams CLI and the available Monad development resources.
Due to Monad full nodes not providing access to arbitrary historic state, eth_calls are unsupported for Monad Substreams packages. See https://docs.monad.xyz/developer-essentials/historical-data#state for more information.
Step 1: Initialize Your Monad Substreams Project
Running
substreams initwill give you the option to choose the EVM protocol, then select one of three project options that best fits your requirements:evm-hello-world: Creates a Substreams that extracts a popular ERC20 token's log data from blocks
evm-events-calls-raw: (without ABI) Get raw Ethereum events/calls and create a Substreams as source. You'll need to specify the contract address(es) that you want to follow.
evm-events-calls: (with ABI) Decode Ethereum events/calls using an ABI and create a Substreams as source. You'll need to specify the contract address(es) that you want to follow. Contract ABIs are retrieved from Monadscan, or you can provide them yourself if not available.
Step 2: Visualize the Data
Run
substreams authto create your account and generate an authentication token (JWT), then pass this token back as input.Run
substreams buildto compile the project.Run
substreams guito visualize and iterate on your extracted data.
Step 2.5: (Optionally) Transform the Data
Open the
src/lib.rsfile that has been generated.Modify the transformations made to the data as needed. Every time you modify the code, you will have to recompile the project with
substreams build.
Step 3: Load the Data
To make your Substreams queryable (as opposed to direct streaming), you can automatically send the data to a SQL data by using the SQL sink or through PubSub.
Additional Resources
You may find these additional resources helpful for developing your first Monad application.
Monad Development Kit
The Substreams Ethereum development kit provides Rust Firehose Block models and helpers specifically for EVM-compatible chains like Monad.
Monad Endpoints
Monad Substreams are available on the following endpoints:
Monad Mainnet:
mainnet-base.monad.streamingfast.io:443
Dev Container Reference
The Dev Container Reference, in case you are developing on Windows and need a Linux virtual environment.
Substreams Components Reference
The Components Reference dives deeper into navigating the substreams.yaml.
Last updated
Was this helpful?

