About Bitblocks

Bitblocks is a thin web layer over a Bitcoin SV node, a Postgres database and command-line tools. Every number on a page is a record you can fetch from the API, and every operation is a command you can read the result of. The code is open.

How it is built

  1. Node A Bitcoin SV node, read over RPC and REST. Every block and transaction here comes from it. Node tip 974,914
  2. Records Postgres holds every block and transaction as fetched, and each derived value carries the version of the step that computed it. Headers stored 974,915
  3. Sync One loop works upward from genesis, one block at a time, and rebuilds each block's merkle root before calling it complete. Complete through block 312,817
  4. Commands Every operation is a command an operator can run and read the result of. After an outage the sync resumes by itself.
  5. Pages and API The pages and the API read the same records. A page is a view of them, never the only way in.

What you can do here

Find a transaction, yours or anyone's
Paste a txid into search to open it and its block.
Follow the chain from a program
Developers, researchers and institutions read the same records over the API, and follow new blocks as a stream. Keys and limits
Hydrate a wallet
A wallet that holds its keys still needs its transactions, their merkle proofs and what each output is. Ask for a script's history and unspent outputs, then a proof per transaction.

Behind the pages

Each page has an endpoint for programs and a command for the operator, run as bin/bitblocks rpc '…'.

Page Endpoint Command
/syncing GET /api/v1/status Bitblocks.Release.sync_status()
/blocks GET /api/v1/blocks Bitblocks.Release.gaps()
/status GET /api/v1/status Bitblocks.Release.status()
/reorgs none Bitblocks.Release.reconcile_orphaned_block("<hash>")
none GET /api/v1/status/derivations Bitblocks.Release.derivation_runs()

Learn more