Skip to content

About

Celestia consensus node in Rust

Resources

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

celestia-rs

A Rust implementation of a Celestia consensus node, wire- and consensus-compatible with Go celestia-app and celestia-core. One binary, celestia-rs, runs the state machine, Tendermint consensus, P2P, mempool, RPC and gRPC.

Install

curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/celestiaorg/celestia-rs/main/scripts/install.sh | sh

Status

celestia-rs is an early, experimental project under rapid development. Expect breaking changes and rough edges, and don't rely on it for production yet. Feedback, bug reports and questions are very welcome: please open an issue.

celestia-rs runs a validator on both Mocha and Mainnet, signing blocks alongside the Go validators:

Network Validator
Mocha Mocha validator
Mainnet Mainnet validator

Roadmap and progress: MILESTONES.md. Open decisions: OPEN_QUESTIONS.md.

Goals

  • Mainnet recommendation: qualify celestia-rs for non-archival RPC nodes, full consensus nodes and validators. The reference is Go celestia-app v10.5.0. Archival service, HSMs and remote signers are later goals; an external security audit is optional. See ADR 0008 for scope and evidence requirements. General recommendation remains pending qualification.

  • Compatible with Celestia Mainnet: run alongside Go celestia-app and celestia-core nodes on the existing network, with matching app hashes and wire formats.

  • Faster than the Go consensus node: see Performance vs Go.

  • Minimal dependencies: every external crate is a potential supply chain attack vector, so we keep the dependency tree small. Long term, the goal is to keep reducing the number of external dependencies this repo relies on.

Features

  • Full node and validator in Rust: ABCI++ app, Tendermint BFT consensus (celestia-core semantics, incl. block propagation), P2P (secret connection, MConn, PEX), CAT mempool, block sync, state sync, evidence, light client.
  • Interoperates with Go nodes: peers, gossips blocks and txs, and reaches consensus in mixed Go + Rust validator sets.
  • App-hash parity with Go, checked by replaying a corpus of devnet scenarios recorded from Go (staking, gov, authz / feegrant, vesting, blobs, fibre, IBC, hyperlane, evidence, upgrades), by following Mocha and mainnet, and by nightly differential fuzzing against Go.
  • Go-compatible operator surface: CLI (init, keys, genesis, tx, query, …), Go keyrings, RPC, gRPC and REST responses checked against Go, pruning, Prometheus metrics, double-sign protection.
  • Built for a Mac Mini M4 (16 GB / 512 GB, docs/hardware.md): release archives for macOS and Linux, launchd and systemd units.

Performance vs Go

Release builds of both on the same machine, same recorded heavy chain (513 heights, 257k txs, blocks up to 27.9 MiB). Linux cloud VM; the reference run on the Mac Mini is pending. Full method and caveats: docs/benchmarks/.

Go Rust
Block execution (FinalizeBlock + Commit) 225 tx/s 802 tx/s 3.6x faster
CheckTx, new txs 971 tx/s 2,007 tx/s 2.1x faster
State sync to first block 60.3 s 16.3 s 3.7x faster
Block sync 1.1 blocks/s 1.3 blocks/s 1.2x faster
Memory (RSS after block sync) 1,860 MB 1,264 MB 32% less
App state on disk 329 MB 549 MB 1.7x larger (ADR 0006)

Since that run, parallel SIMD erasure coding, a signature cache and libsecp256k1 cut PrepareProposal on max-size squares from ~1.1x Go's latency to ~0.65x and ProcessProposal to ~0.25x.

Getting started

Install a release (above), or build from source:

cargo build --release -p celestia-rs

Running a node or a validator on Mocha or mainnet: docs/operator-guide.md (§11 is the Mocha validator runbook).

Development

cargo test --workspace
cargo xtask repo-health --offline   # local gate
cargo xtask refresh-fixtures        # regenerate Go fixtures (needs Go)

crates/ holds the workspace, tiered from primitives up to the node binary; conformance/ the Go fixture generators and devnet harness; docs/ the design, ADRs, benchmarks and security notes.

Reliability metrics, coverage budgets and fuzz evidence: docs/quality.md.

License

Dual-licensed under Apache 2.0 and MIT.

About

Celestia consensus node in Rust

Resources

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages