Production Ready™ · full archival

Full node, compact archive, no UTXO set

rbitcoin is a bitcoin full node built around a compact archive — no UTXO set. Outputs, spends, and a structural transaction index live in a custom on-disk format with indexing matched to how bitcoin data is queried. When a block arrives, prevouts come from that archive, not from a mutable coins database. Consensus is rust-native: rust-bitcoin types, libsecp256k1 for crypto, scripts in this tree. The same process can serve Electrum, including silent payment tweaks, plus Esplora and a slice of bitcoin core JSON-RPC.

Mainnet works today. Consensus runs in this tree, not bitcoin core’s engine — but the functional, fuzz, and specification tests give every reason to believe it matches. On a wallet you care about, you may want to keep another node in view anyway.

MIT OR Apache-2.0 Linux first 0.x Reproducible musl Full archival · no UTXO database
rbitcoin mark: a crab under a truss bridge with a bitcoin

What’s different

No UTXO set. No separate indexer. One Linux process validates, stores the archive, and can talk to wallets.

The archive is the store

Outputs, spends, and a transaction index live in ordinary files. There is no UTXO set to keep in RAM.

Electrum in the same process

History, unconfirmed, broadcast, fees, and silent payment tweaks. Esplora REST is there too. This is a wallet backend, not a block explorer with a search box.

rust-bitcoin · libsecp256k1

Types come from rust-bitcoin. ECDSA and Schnorr go through libsecp256k1. Scripts run in this tree. There is no second opinion from libbitcoinconsensus.

A slice of bitcoin core JSON-RPC

Chain, mempool, raw transactions, decode helpers, fee estimates, and a block template selector. Cookie or user/pass. No wallet, no stratum, no UTXO scanner. For script history, use Electrum.

Storage

Full archival only. The chain grows, so plan on a 1 TB-class disk and don’t wait for a published byte count. If you have an NVMe and a spinning disk, split them.

1 TB-class Full archive, indexes included No prune. The tip moves.
< 250 GB hot Even with full indexes Outputs, spends, heads, optional scripthash
Hot / cold --datadir-cold for a second volume Inputs and witness can live on a spinning disk

Skip --datadir-cold and everything lives in one tree.

Line coverage

Among published line-coverage figures for bitcoin full nodes, rbitcoin’s is the highest. The required GitHub Actions coverage job fails a PR below 90% LCOV on production files — bitcoin core’s public report does not. Method: TESTING.md.

91.93% Published LCOV line 126876 / 138009 LH/LF · 2026-09-13
≥90% Required PR gate Production files; last green master job
71 bitcoin core functional scripts Plus Hornet rules and differential fuzz

Peers use different tools and different denominators. Bitcoin core public LCOV (Marco, 2026-09-05) is ~72% of the whole tree (71.6%; kernel and script closer to ~88–89%; wallet and RPC drag the total) and is report-only. Approximate Coveralls: btcd ~54%; libbitcoin-node ~46%; libbitcoin-system (library, not the node) ~78%. satd / Hornet, electrs, and Fulcrum have no published LCOV %. This is not a claim of more tests than bitcoin core, whose functional suite is larger, and it is not proof of consensus match.

Who it is for

Operators who want to validate, keep a full archive, and serve wallets from the same box. Consensus is rust-native, not bitcoin core’s engine; 71 core functional scripts, Hornet Node rules, and continuous fuzz sit under a ≥90% LCOV PR gate — 91.93% on the last green master coverage job, the highest published line-coverage figure among bitcoin full nodes. You may want another node in view on mainnet until you are satisfied for your use.

Built for

  • Electrum in-process, including silent payment tweaks
  • A documented slice of JSON-RPC next to the archive
  • Linux with a 1 TB-class disk
  • Laptop-class IBD on modest RAM

Out of scope

  • Desktop wallets, a GUI, or a stratum/pool stack
  • Pruned or “lite” nodes
  • Block explorers and address search

Why it exists

Why this node exists — motivation, history, and how it was built.

Run it

Grab the GitHub Release, or build musl with Nix. If the node is useful, send some sats.