5个不稳定版本
新 0.3.1 | 2024年8月23日 |
---|---|
0.3.0 | 2024年8月21日 |
0.2.0 | 2024年4月19日 |
0.1.1 | 2024年1月15日 |
0.1.0 | 2024年1月12日 |
#54 in 魔法豆
107 每月下载量
在 2 crates 中使用
795KB
16K SLoC
Lumina节点
一个用于配置、运行和与Celestia数据可用性节点交互的crate。
use std::sync::Arc;
use libp2p::{identity, multiaddr::Protocol, Multiaddr};
use lumina_node::blockstore::RedbBlockstore;
use lumina_node::network::{
canonical_network_bootnodes, network_id, Network,
};
use lumina_node::node::{Node, NodeConfig};
use lumina_node::store::RedbStore;
use tokio::task::spawn_blocking;
#[tokio::main]
async fn main() {
let p2p_local_keypair = identity::Keypair::generate_ed25519();
let network = Network::Mainnet;
let network_id = network_id(network).to_owned();
let p2p_bootnodes = canonical_network_bootnodes(network).collect();
let db = spawn_blocking(|| redb::Database::create("path/to/db"))
.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::new(NodeConfig {
network_id,
p2p_local_keypair,
p2p_bootnodes,
p2p_listen_on: vec!["/ip4/0.0.0.0/tcp/0".parse().unwrap()],
sync_batch_size: 512,
blockstore,
store,
})
.await
.expect("Failed to start node");
node.wait_connected().await.expect("Failed to connect");
let header = node
.request_header_by_height(15)
.await
.expect("Height not found");
}
依赖项
~24–62MB
~1M SLoC