alloy-flashblocks 0.1.0

Stream Base L2 flashblocks and query preconfirmation state using Alloy.
Documentation
//! Example: Stream pending block updates via flashblock polling.
//!
//! Run with: cargo run --example poll_flashblocks

use alloy::providers::ProviderBuilder;
use alloy_flashblocks::FlashblocksProviderExt;
use eyre::Result;
use futures_util::StreamExt;

const RPC_URL: &str = "https://mainnet-preconf.base.org";

#[tokio::main]
async fn main() -> Result<()> {
    let provider = ProviderBuilder::new().connect_http(RPC_URL.parse()?);

    println!("Streaming flashblock updates (120ms polling)...\n");

    let mut stream = provider.watch_flashblocks().into_stream();

    while let Some(block) = stream.next().await {
        println!(
            "Block {} | {} | {} txs | {} gas",
            block.header.number,
            &format!("{:?}", block.header.hash),
            block.transactions.len(),
            block.header.gas_used
        );
    }

    Ok(())
}