#blockchain #data-stream #fuel

fuel-streams-core

Core components for working with streams of Fuel blockchain data

20 releases

new 0.0.29 Apr 23, 2025
0.0.28 Mar 14, 2025
0.0.25 Feb 13, 2025
0.0.16 Dec 28, 2024
0.0.13 Nov 28, 2024

#28 in #data-stream

31 downloads per month
Used in 2 crates

Apache-2.0

1MB
23K SLoC


Logo

Fuel Streams Core

The core library for data streaming in the Fuel Data Systems project.

CI Coverage Crates.io MSRV crates.io docs

📚 Documentation   🐛 Report Bug   ✨ Request Feature

📝 About The Project

Fuel Streams Core is a library for building data streaming applications on the Fuel blockchain. It provides tools for efficient handling of real-time blockchain data, using NATS for scalable streaming and offering support for Fuel-specific data types.

Note

This crate is specifically modeled for the Fuel Data Systems project, and is not intended for general use outside of the project.

🛠️ Installing

Add this dependency to your Cargo.toml:

[dependencies]
fuel-streams-core = "*"

🚀 Usage

Here's a simple example to get you started with Fuel Streams Core:

use fuel_streams_core::prelude::*;
use fuel_streams_domains::infra::*;
use fuel_web_utils::api_key::*;
use fuel_message_broker::*;
use futures::StreamExt;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    // Connect to NATS server
    let db = Db::new(DbConnectionOpts::default()).await?;
    let broker = NatsMessageBroker::setup("nats://localhost:4222", None).await?;

    // Create or get existing stream for blocks
    let stream = Stream::<Block>::get_or_init(&broker, &db).await;

    // Subscribe to the stream
    let subject = BlocksSubject::new(); // blocks.*.*
    let api_key_role = ApiKeyRole::default();
    let mut subscription = stream.subscribe(
        subject,
        DeliverPolicy::New,
        &api_key_role
    )
    .await;

    // Process incoming blocks
    while let Some(block) = subscription.next().await {
        println!("Received block: {:?}", block?);
    }

    Ok(())
}

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

For more information on contributing, please see the CONTRIBUTING.md file in the root of the repository.

📜 License

This repo is licensed under the Apache-2.0 license. See LICENSE for more information.

Dependencies

~221MB
~4.5M SLoC