Production Ready™

Get started

Download the GitHub Release, or build musl with Nix. Try signet, then mainnet with another implementation in view. Scripts run on rust-bitcoin and libsecp256k1. The on-disk format still moves before 1.0.

Mainnet. IBD, tip follow, and wallet serving work. Consensus is independent of bitcoin core’s engine; the growing functional, fuzz, and spec test suite is why rbitcoin expects to match. You may want to keep another node in view before you treat rbitcoin as your only picture of the chain.

Read the experimental mainnet notes and the operator guide.

Upgrading from 0.x.x. Schema 20 seals index heads differently. Occupied schema 18/19 wallet indexes are refused — wipe those index dirs or rebuild; Class A archive data stays. See CHANGELOG and OPERATOR.md.

1. GitHub Release

The published download is the GitHub Release. The tag attaches rbitcoin-node and rbitcoin-cli:

  • Linux x86_64 musl — fully static. This is the operator binary.
  • Windows x86_64 — CRT-static .exe. IoRing is not supported.
  • Darwin aarch64 — system-dylib, ad-hoc signed, not notarized. If Gatekeeper kills it: xattr -d com.apple.quarantine rbitcoin-node rbitcoin-cli

Checksums ship next to the binaries (SHA256SUMS.*). Linux first. Windows and macOS are snapshots.

2. Reproducible musl (Linux)

Same git revision, same flake lock, same bytes. Pinned nixpkgs and Cargo.lock build fully static rbitcoin-node and rbitcoin-cli. They run on ordinary Linux with no Nix store and no matching glibc. Use this to verify a Release, or to run a revision that is not tagged yet.

git clone https://github.com/reardencode/rbitcoin.git
cd rbitcoin
nix build .#rbitcoin-musl
install -m 755 result/bin/rbitcoin-node result/bin/rbitcoin-cli target/release/

Do not ship cargo build --release from inside nix-shell. That binary looks for Nix’s glibc and dies the moment you copy it somewhere else. See reproducible builds.

3. Signet, then mainnet

Make sure it starts, talks to peers, and moves tip on signet before you give it a terabyte. Then run mainnet with monitoring, and with another implementation in view.

./target/release/rbitcoin-node --datadir ./datadir-signet --network signet \
  --listen 127.0.0.1:38333 --milestone 200000 --max-run-secs 120

If you downloaded the Release, run that binary instead of ./target/release/rbitcoin-node. Custom signets take --signetchallenge and --signetblocktime. Logging and other knobs: OPERATOR.md.

4. Optional surfaces

Wallet indexes are optional. The txid index is not. IBD writes it, and you cannot sync without it. Turn Electrum on when you want wallets.

Electrum is in the same process: history, unconfirmed, broadcast, fees, and silent payment tweaks. Esplora REST is optional. This is not a block explorer. Flags live in OPERATOR.md.

./target/release/rbitcoin-node --datadir ./datadir-signet --network signet \
  --electrum-listen 127.0.0.1:50001

JSON-RPC (--rpc-listen, cookie or --rpcuser / --rpcpassword) is a slice of core’s surface: chain, mempool, raw transactions, decoderawtransaction / decodescript / validateaddress, fee estimates, and a block template selector. Verbose transaction objects include core-style scriptSig and scriptPubKey.type. No wallet, no stratum, no scantxoutset coins scan. See docs/rpc.md.

./target/release/rbitcoin-node --datadir ./datadir-signet --network signet \
  --rpc-listen 127.0.0.1:18332

If you bind Electrum, Esplora, or RPC beyond localhost, put TLS in front.

5. Hot and cold datadirs

A full archive wants a 1 TB-class disk. Keep less than 250 GB on the fast volume even with wallet indexes. Inputs and witness are rarely read; they can live on a second disk:

./target/release/rbitcoin-node --datadir /mnt/nvme/rbtc \
  --datadir-cold /mnt/hdd/rbtc-cold --network signet

--datadir-cold holds inwit.body and inwit.idx/ only. Outputs, spends, the txid index, and wallet indexes stay on --datadir. Leave the flag off and both live in one tree. See OPERATOR.md.

Milestone honesty

Default mainnet --milestone is assumevalid-style: it skips script and signature checks at or below that height. Prevouts, double-spends, maturity, and fees still run.

Use --milestone 0 if you want every historical script checked. The current default height is in the node README.

Requirements (order of magnitude)

  • Platform: Linux first (musl Release or Nix). Windows and macOS snapshots exist; they are unproven. Darwin is aarch64 only.
  • Disk: 1 TB-class for a full archive. Keep under 250 GB on hot storage even with full indexes; use --datadir-cold for the rest if you have two volumes.
  • Mode: full archival only. There is no prune switch.
  • Build: GitHub Release, or nix build .#rbitcoin-musl for a byte-identical Linux binary.
  • P2P: BIP324 version 2 only; optional asmap (--asmap / ip_asn.dat) for outbound peer diversity. Plan reverse-proxy TLS for Electrum and Esplora if you expose them beyond localhost.

Further reading

If the node is useful

Send some sats. Lightning is easy; silent payments stay on-chain.