← index

Bitcoin-rs: an independent Bitcoin full node written in Rust

An archive of delvingbitcoin.org · view original topic →

· Gosunuts · #1 ·

I’d like to share early work on bitcoin-rs, an independent Bitcoin full node written in Rust.

Like btcd, it’s an independent implementation, built to explore architectural and performance changes that are difficult to pursue within Bitcoin Core while remaining externally verifiable.

Some of the main differences are:

  1. Integrated UTXO and script-index model — the node owns the canonical UTXO set used for validation. It also provides a read-only, Esplora-compatible script index for common wallet and explorer queries, reducing reliance on separate Electrum indexers.
  2. Modular architecture with explicit failure boundaries — consensus, chainstate, storage, networking, mempool, indexing, and orchestration are kept deliberately small and separated, so failures and implementation complexity stay contained instead of propagating across the node.
  3. Whole-node performance — synchronization, storage, memory usage, concurrency, I/O, and indexing are optimized together, with the goal of achieving competitive whole-node performance against Bitcoin Core.
  4. Native and kernel-backed script validation — script validation can run either through bitcoin-rs’s native Rust implementation or through libbitcoinkernel. The kernel path can also be used as an oracle to cross-check the native implementation.

We are also building out a verification framework around multiple independent references. The plan is to use libbitcoinkernel as a consensus reference path, bitcoinfuzz for differential and adversarial testing, Bitcoin Core’s qa-assets corpus for known edge cases, and our own regression tests and whole-node benchmarks for synchronization, reorgs, recovery, storage, and performance.

The goal is to steadily increase confidence in both correctness and performance claims by making the inputs, workloads, configurations, and results reproducible against Bitcoin Core.

Feedback and independent verification of the architecture and, especially, the verification approach would be very welcome.

Repository:

Live mainnet explorer:

· Alex Wiederin · #2 ·

Nice, great to see this!

I ran into an issue getting it running on mainnet: header sync stays stuck at height 0. I opened an issue here: Mainnet header sync stuck at height 0 · Issue #1567 · gosuda/bitcoin-rs · GitHub

I would love to hear about your experience integrating libbitcoinkernel. What worked well, and where did you run into friction? If there’s anything we can do to make that experience better, I would be glad to know.