tbcd is a minimal Bitcoin block downloader and indexer daemon. It is designed to wrap the tbc service, which
provides Bitcoin data (blocks and transactions) for other applications. Primarily, it functions as a network RPC
endpoint.
tbcd requires significant system resources due to its functionality:
| Requirement | Specification |
|---|---|
| CPU Cores | 4 minimum |
| RAM | 12 GiB minimum |
| Disk | NVMe recommended |
As of June 2025:
testnet3requires approximately 400 GiB of disk space.testnet4requires approximately 10 GiB of disk space.mainnetrequires over 1000 GiB of disk space.
Ensure Go v1.25 or newer is installed on your system.
To build tbcd using the provided Makefile
Ensure make is installed on your system.
cd heminetwork
# Output binary will be written to bin/tbcd or bin/tbcd.exe
make tbcdIf you prefer not to use the Makefile:
cd heminetwork
# Build the binary (output will be tbcd or tbcd.exe)
go build ./cmd/tbcd/
# Install the binary (output will be in your GOBIN directory)
go install ./cmd/tbcd/tbcd checks system limits at startup on supported platforms to ensure that they are set to values that will allow
TBC to run without failing.
Warning
If you see an error similar to the following, you will need to adjust the limits for the number of open files, memory and the maximum stack size on your system to run TBC.
ulimit: memory: limit too low got X, want X
Changing limits is OS-specific, but can usually be done using the ulimit command.
tbcd is designed to be run in cloud environments, as such it uses environment variables for runtime settings.
To see a full list of runtime settings, execute tbcd with the --help flag:
./bin/tbcd --help
# Hemi Tiny Bitcoin Daemon: v0.1.0-pre+3eb1bab15
# Usage:
# help (this help)
# Environment:
# TBC_ADDRESS : address port to listen on (default: localhost:8082)
# TBC_AUTO_INDEX : enable auto utxo and tx indexes (default: true)
# TBC_BLOCK_SANITY : enable/disable block sanity checks before inserting (default: false)
# TBC_LEVELDB_HOME : data directory for leveldb (default: ~/.tbcd)
# TBC_LOG_LEVEL : loglevel for various packages; INFO, DEBUG and TRACE (default: tbcd=INFO;tbc=INFO;level=INFO)
# TBC_MAX_CACHED_TXS : maximum cached utxos and/or txs during indexing (default: 1000000)
# TBC_NETWORK : bitcoin network; mainnet or testnet3 (default: mainnet)
# TBC_PROMETHEUS_ADDRESS: address and port tbcd prometheus listens onStart the server by running:
/path/to/tbcdThe tbcd daemon runs an RPC server that listens on the address provided by the TBC_ADDRESS environment variable.
The RPC protocol is WebSocket-based and uses a standard request/response model.