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
Knuth is a high-performance Bitcoin Cash full node written in C++. This StartOS
package mirrors the BCHN / BCHD / Flowee schema: per-network ports, optional
JSON-RPC (v1.3.0+), Tor dependency, and test-network data isolation under
/data/<network>/.
Versioning: the number before : is kth upstream (today 1.3.0). The
number after : is the StartOS package revision, starting at :0
(1.3.0:0, 1.3.0:1, …). Packaging-only fixes bump :N only — never invent
a fake kth version.
Health: chaindir liveness when RPC is off; RPC + sync checks when RPC is on.
Enable JSON-RPC in Node Settings for mining pools / Fulcrum / Explorer backends.
4. Default Networking
Transport
Default
How to Change
Clearnet
Enabled
StartOS interfaces
Tor
Off
Node Settings + Tor package
I2P
Not implemented
—
5. Configuration Management
Group
Settings
Network
mainnet / testnet3 / testnet4 / scalenet / chipnet / regtest — rewrites peer port, RPC port, db.directory, net.hosts_file (the peer port, db.directory and net.hosts_file are also reasserted on every start, because kth tells chipnet from testnet4 only by peer port 48333)
Node Settings
db mode (full / blocks / pruned), max size (pruned), connections, latency, verbose log, JSON-RPC toggle, IPC, UTXOZ, Tor
6. Network Access and Interfaces
Interface
Port (mainnet)
Purpose
Condition
Peer
8333
P2P
Always
JSON-RPC
8332
API
When rpcEnabled
Per-network peer/RPC ports match the shared BitcoinCash1 table (see Quick Reference).
7. Actions (StartOS UI)
Action ID
Name
Group
runtime-info
Node Info
Info
network-config
Network
Configuration
node-settings
Node Settings
Configuration
rpc-credentials
RPC Credentials
Credentials
delete-peer-list
Delete Peer List
Maintenance (stopped only)
delete-test-network-data
Delete Test Network Data
Maintenance (stopped only; can wipe the active testnet)
getblockchaininfo when JSON-RPC is on; otherwise the kth process
Blockchain Sync
Always
Sidecar getblockchaininfo (lifts stale kth blocks to the blk*.dat tip). A <0.1% header gap at the tip is Synced, not Syncing 100%. With no peers, or a newest block more than 3 hours old (24 hours on scalenet, never on regtest), it stays loading instead of Synced, because a node cut off from the chain still finds its tip at the top of its own headers.
Peer Connections
Always
Knuth Peers: n/m status log (no getpeerinfo in v1.3.0)
Tor
Always
Optional — listed as a dependency; health is disabled until Tor routing is turned on
I2P
Always
Disabled (same as BCHN/Flowee until implemented)
Clearnet
Always
Outbound unless a public address is published
UTXO-Z Storage / IPC / C-API
Always
Knuth-specific capability rows
10. Dependencies
Package
Optional
Purpose
tor
yes (optional)
Always listed on the Dependencies tab (kind: exists when Tor Routing is off, kind: running when on). Not required to be running unless Node Settings → Tor Routing is enabled.
11. Default Overrides
Setting
StartOS value
Reason
--init_run
always
init chain then run
--network
from store
v1.3.0 network select
db.db_mode
full
indexed; required for Fulcrum/Explorer
rpc.enabled
false
opt-in; credentials pre-generated
rpc.bind
0.0.0.0
reachable from other containers
net.hosts_file
under /data
kth defaults to CWD /
IPC / UTXOZ
true
capability flags for dependents
12. Limitations and Differences
Built from source. The official ghcr.io/k-nuth/kth image is built without rpc=True (see k-nuth/docker-images PR #7), so the Dockerfile compiles kth with the JSON-RPC server enabled. check-upstream.yml checks the official image daily; once the image for the pinned version ships JSON-RPC, scripts/use-upstream-image.sh swaps the Dockerfile for scripts/Dockerfile.upstream (a thin wrapper around the official image), commits it to master and dispatches Tag and Release.
No initialblockdownload / verificationprogress — sync health uses Knuth's coordinator log (RPC getblockchaininfo.blocks is often 0 at the tip).
gRPC not exposed in this package.
Tor proxy passthrough to kth is opt-in; verify after enabling.
RPC compatibility sidecar — kth 1.3.0 fetch_block() is a stub after the LMDB→blk*.dat move (object does not exist for every hash). The package runs scripts/rpc_compat.py on the public RPC port and leaves kth on 127.0.0.1:19332. Ready probes kth on that internal port so the sidecar can start. The sidecar also implements getnetworkinfo, classic getblocktemplate (from getblocktemplatelight), submitblock→submitblocklight, and cashaddr validateaddress. JSON-RPC bodies end with a trailing LF so ckpool/EloPool (read_socket_line) does not hang 20s after HTTP/1.1 200 OK.
check-upstream.yml looks for a new Knuth release on k-nuth/kth daily. When one appears, scripts/auto-bump.sh sets ARG KNUTH_VERSION in the Dockerfile, sets startos/versions/current.ts to <upstream>:0, resets ALLOW_DOWNGRADE to false, commits the bump straight to master, and dispatches Tag and Release, which builds and publishes the new version. Package-only fixes bump the revision after the colon by hand.