Rust implementation of Celestia's data availability node able to run natively and in the browser-based environments.
Supported features:
- Synchronize and verify
ExtendedHeader
s from genesis to the network head - Header exchange (
header-ex
) client and server - Listening for, verifying and redistributing extended headers on gossip protocol (
header-sub
) - Persistent store for Headers
- Integration tests with Go implementation
- Data Availability Sampling
- Creating, distributing, and listening for Fraud proofs
Install common dependencies
# install dependencies
sudo apt-get install -y build-essential curl git protobuf-compiler
# install rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# open a new terminal or run
source "$HOME/.cargo/env"
# clone the repository
git clone https://github.com/eigerco/lumina
cd lumina
# install lumina
cargo install --path cli
# run lumina node
lumina node --network mocha
# check out help for more configuration options
lumina node --help
# build wasm-node to be bundled with lumina
wasm-pack build --target web node-wasm
# serve lumina node on default localhost:9876
lumina browser
Follow this guide to authorize yourself in github's container registry.
Start a celestia network with single validator and bridge
docker compose -f ci/docker-compose.yml up --build --force-recreate -d
# and to stop it
docker compose -f ci/docker-compose.yml down
Note: You can run more bridge nodes by uncommenting / replicating the bridge service definition in
ci/docker-compose.yml
.
To get the JWT token for the account with coins (coins will be transferred in block 2):
export CELESTIA_NODE_AUTH_TOKEN=$(docker compose -f ci/docker-compose.yml exec bridge celestia bridge auth admin --p2p.network private)
Accessing json RPC api with Go celestia
cli:
celestia rpc blob Submit 0x0c204d39600fddd3 '"Hello world"' --print-request
Extracting blocks for test cases:
celestia rpc header GetByHeight 27 | jq .result
Make sure you have the celestia network running inside docker compose from the section above.
Generate authentication tokens for the tests
./tools/gen_auth_tokens.sh
Run tests
cargo test