#blockchain #data-stream

fuel-streams-core

Core components for working with streams of Fuel blockchain data

10 releases

0.0.13 Nov 28, 2024
0.0.12 Nov 21, 2024
0.0.11 Oct 15, 2024
0.0.10 Sep 27, 2024
0.0.6 Aug 29, 2024

#48 in #cryptocurrencies

Download history 313/week @ 2024-08-23 139/week @ 2024-08-30 494/week @ 2024-09-06 37/week @ 2024-09-13 16/week @ 2024-09-20 193/week @ 2024-09-27 10/week @ 2024-10-04 117/week @ 2024-10-11 28/week @ 2024-10-18 1/week @ 2024-10-25 6/week @ 2024-11-01 2/week @ 2024-11-08 100/week @ 2024-11-15 180/week @ 2024-11-22 50/week @ 2024-11-29 4/week @ 2024-12-06

334 downloads per month
Used in fuel-streams

Apache-2.0

205KB
3K 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 futures::StreamExt;

#[tokio::main]
async fn main() -> BoxedResult<()> {
    // Connect to NATS server
    let opts = NatsClientOpts::new("nats://localhost:4222");
    let client = NatsClient::connect(&opts).await?;

    // Create a stream for blocks
    let stream = Stream::<Block>::new(&client).await;

    // Subscribe to the stream
    let wildcard = BlocksSubject::wildcard(None, None); // blocks.*.*
    let mut subscription = stream.subscribe(&wildcard).await?;

    // Process incoming blocks
    while let Some(bytes) = subscription.next().await {
        let block = Block::decode_raw(bytes.unwrap()).await;
        dbg!(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

~42–62MB
~1M SLoC