Crate lumina_node

Source
Expand description

§Lumina node

A crate to configure, run and interact with Celestia’s data availability nodes.

use std::sync::Arc;

use lumina_node::blockstore::RedbBlockstore;
use lumina_node::network::Network;
use lumina_node::node::Node;
use lumina_node::store::RedbStore;
use redb::Database;
use tokio::task::spawn_blocking;

#[tokio::main]
async fn main() {
    let db = spawn_blocking(|| Database::create("lumina.redb"))
        .await
        .expect("Failed to join")
        .expect("Failed to open the database");
    let db = Arc::new(db);

    let store = RedbStore::new(db.clone())
        .await
        .expect("Failed to create a store");
    let blockstore = RedbBlockstore::new(db);

    let node = Node::builder()
        .store(store)
        .blockstore(blockstore)
        .network(Network::Mainnet)
        .listen(["/ip4/0.0.0.0/tcp/0".parse().unwrap()])
        .start()
        .await
        .expect("Failed to build and start node");

    node.wait_connected().await.expect("Failed to connect");

    let header = node
        .request_header_by_height(15)
        .await
        .expect("Height not found");

    println!("{}", serde_json::to_string_pretty(&header).unwrap());
}

Modules§

block_ranges
Ranges utilities
blockstore
Blockstore types aliases with lumina specific constants.
events
Events generated by Node
network
Primitives and constants related to the networks supported by Celestia nodes.
node
Node that connects to Celestia’s P2P network.
store
Primitives related to the ExtendedHeader storage.
test_utilstest-utils
Utilities for writing tests.

Structs§

Node
Celestia node.
NodeBuilder
Node builder.

Enums§

NodeError
Representation of all the errors that can occur when interacting with the Node.

Type Aliases§

Result
Alias of Result with NodeError error type