You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
BCHD is a full node implementation of the Bitcoin Cash protocol written in Go. It provides JSON-RPC, gRPC with pub/sub notifications, BIP 157/158 compact block filters (Neutrino), BIP 37 bloom filters, full transaction and address indexes, and Tor support for private peer connections.
The nocow oneshot runs: creates /data, applies NoCOW filesystem attribute (chattr +C) for performance on btrfs, then calls gencerts to generate rpc.cert/rpc.key if absent.
Any legacy externalip[]= lines are stripped from bchd.conf (BCHD rejects them at config parse; external IPs are now passed via CLI from store.json).
Seed files are written: bchd.conf and store.json with defaults (network: mainnet, auto-generated RPC credentials).
BCHD launches, connecting to the Bitcoin Cash mainnet P2P network and beginning Initial Block Download (IBD).
The stunnel4 sidecar starts in parallel, providing a plaintext RPC proxy on port 8334 for ckpool-lineage mining pool software.
The Blockchain Sync health check reports progress during IBD.
After IBD completes, store.json is updated with fullySynced: true; Tor proxy routing activates (if installed and configured).
The watchHosts process monitors StartOS-assigned external addresses and passes them to BCHD as --externalip arguments.
4. Default Networking
Transport
Default
Inbound
How to Change
Clearnet (IPv4/IPv6)
Enabled — outbound only until an external IP is published
Enabled automatically when StartOS assigns an external IP
Automatic via StartOS host discovery (watchHosts)
Tor
Enabled (proxy is deferred until IBD completes for sync speed)
Enabled once a .onion address is advertised via externalip
Toggle in Network Settings action; requires Tor package installed
gRPC API is listening on port 8335 / gRPC API is disabled / gRPC API is starting up...
RPC Plaintext Proxy
/proc/net/tcp port-listen probe
Plaintext RPC proxy ready on port 8334 (stunnel → BCHD TLS) / Plaintext RPC proxy starting...
Tor
Store flags + sdk.getStatus(tor)
Tor proxy active — inbound and outbound / Tor proxy configured — will activate after IBD / Tor routing deferred / Tor is not installed
Clearnet
onlynet config + externalip list
Inbound and outbound connections / Outbound only. Publish an IP address to enable inbound.
I2P
Static
I2P support is not implemented yet. (always disabled)
10. Dependencies
Tor (optional)
Field
Value
Package ID
tor
Version constraint
Any
Required state
Running (optional — used only when enabled in Chain Network settings)
Health checks
Container IP via sdk.getContainerIp; running state via sdk.getStatus
Mounted volumes
None
Purpose
Provides SOCKS5 proxy at tor.startos:9050 for Tor-routed P2P and inbound .onion connections. Proxy activation is deferred until fullySynced = true to avoid IBD performance penalty.
11. Default Overrides
Setting
Upstream Default
StartOS Value
Reason
RPC TLS
Optional (--notls available)
Always enabled via --rpccert / --rpckey
StartOS binds RPC to 0.0.0.0; BCHD warns against --notls on non-localhost; avoids log noise on every start
Tor proxy activation
Immediate on configure
Deferred until fullySynced = true
IBD via Tor is prohibitively slow; proxy activates automatically after the first full sync completes
--externalip
Not set
Written from store.json by watchHosts
Ensures BCHD advertises the actual StartOS-assigned addresses (clearnet and/or Tor)
Plaintext RPC proxy
Not present
stunnel4 sidecar on port 8334
ckpool-lineage mining software (ASICSeer, EloPool) has no TLS library
Filesystem attribute
Default (CoW)
NoCOW via chattr +C
Blockchain sequential writes cause heavy fragmentation on btrfs Copy-on-Write filesystems
12. Limitations and Differences
BCHD does not implement Double Spend Proof (DSP). Mining operations that require DSP relay should use Bitcoin Cash Node (BCHN) or Flowee.
Supported networks are mainnet, testnet3, chipnet, and regtest only. Testnet4 and scalenet are not supported by the upstream gcash/bchd codebase.
gRPC is disabled by default and must be explicitly enabled in Node Settings. This reduces resource usage for nodes that do not need the gRPC API.
The RPC server uses a self-signed TLS certificate (rpc.cert). Clients that perform TLS certificate verification must either trust this certificate or configure skip-verify.
Pruning disables the transaction index. Enabling the prune option in Node Settings automatically forces txindex and addrindex off.
Tor proxy is not active during Initial Block Download. This is intentional — IBD via Tor is too slow on most hardware. Tor routing begins automatically once fullySynced = true is written to store.json.
The plaintext RPC proxy on port 8334 (stunnel sidecar) is a StartOS-only workaround. Once upstream ckpool-lineage software gains TLS support, this sidecar and the rpc-plaintext interface will be removed in a single commit.
13. What Is Unchanged from Upstream
All Bitcoin Cash consensus rules and network protocols implemented in gcash/bchd
Full JSON-RPC API compatibility with upstream bchd
gRPC API with pub/sub notifications and compact block filter support