Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/streamingfast/substreams-eth-block-meta
A Substreams extracting Ethereum block metadata per day (start/end) and per month (start/end)
https://github.com/streamingfast/substreams-eth-block-meta
Last synced: about 15 hours ago
JSON representation
A Substreams extracting Ethereum block metadata per day (start/end) and per month (start/end)
- Host: GitHub
- URL: https://github.com/streamingfast/substreams-eth-block-meta
- Owner: streamingfast
- License: apache-2.0
- Created: 2022-11-24T01:25:52.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2023-10-31T20:00:54.000Z (about 1 year ago)
- Last Synced: 2024-08-03T23:17:07.740Z (3 months ago)
- Language: Rust
- Size: 79.1 KB
- Stars: 4
- Watchers: 3
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-substreams - ETH Block Meta
README
# Substreams Ethereum Block Meta
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
A Substreams extracting Ethereum block metadata per day (start/end) and per month (start/end). Using this Substreams, you will essentials be able to answer these questions:
- What is the block at the start of day June 30th, 2022?
- What is the block at the end of July 2022?## Requirements
Follow [Installation Requirements](https://substreams.streamingfast.io/developer-guide/installation-requirements#local-installation) instructions on official Substreams documentation website.
## Building the spkg
* `make package` will compile the substreams rust code and package it into an spkg file
## Running the `graph_out` module into a Subgraph
The `graph_out` module output element in format expected for ingestion into a Subgraph. It maps our store output to entities as defined by `schema.graphql`.
This repository contains both the Substreams code and the Subgraph definition.
```
# Compile & run module `db_out`
make db_out# Compile & run module `graph_out`
make graph_out# Compile & run module `kv_out`
make kv_out
```## Running the `db_out` module
The `db_out` module output element in format expected for ingestion into [substreams-sink-postgres](https://github.com/streamingfast/substreams-sink-postgres) or [substreams-sink-mongodb](https://github.com/streamingfast/substreams-sink-mongodb).
### Into PostgresSQL (via `substreams-sink-postgres`)
This repository contains also the `schema.sql` used to bootstrap the database. Here the instructions to launch `substreams-sink-postgres`:
```
# Install binary from source
git clone https://github.com/streamingfast/substreams-sink-postgres.git
cd substreams-sink-postgresgo install ./cmd/substreams-sink-postgres
export PATH="`go env GOPATH`/bin:$PATH"# Don't forget to update `PATH` if you spin up another terminal (or make the change persistent)
```Then in another terminal spin up Docker Compose:
```
# Change where you cloned the repository
cd substreams-sink-postgresdocker compose up
```And finally within this project run:
```
# Compiles packages this Substreams and then launch `substreams-sink-postgres`
# - POSTGRESQL_DSN (defaults to 'psql://dev-node:insecure-change-me-in-prod@localhost:5432/dev-node?sslmode=disable')
make sink_postgres
```> **Warning** This is meant for show case purposes, running a sink in production should **always** be run on a persistently stored compiled Substreams package (extension `.spkg`).
### Sink to `graph-node`
This assumes a local `graph-node` binary available (running `graph-node` is outside of this guide).
```bash
# Compile, package & deploy to local 'graph-node' instance`, available configuration:
# - IPFS_ENDPOINT (defaults to 'http://localhost:5001')
# - GRAPH_NODE_ENDPOINT (defaults to 'http://localhost:8020')
make deploy_graph_node
```> [!NOTE]
> You need a recent enough version of [graph-cli](https://github.com/graphprotocol/graph-tooling)## Running other output modules
* `kv_out` will output the block meta data in a format to be saved in a key/value store. See its integration in https://github.com/streamingfast/substreams-sink-kv (note: this module outputs one entry per blockHash instead of per day/month).