Baseline Cash is a minimalist Bitcoin-style payments chain — but it ships with the stuff operators actually need built-in: fast blocks, Core-ish RPC, a native address index, and a turnkey pool server. No smart contracts, no token zoo, no bloat.
Baseline Cash targets Python 3.12 or newer (3.12/3.13 verified). Confirm Python is available before continuing:
python --version || py -3 --versionIf the first command fails on Windows, try py -3. Once you have a compatible interpreter, create the virtualenv:
python -m venv .venv
. .venv/Scripts/activate # or source .venv/bin/activate on UNIX
pip install --upgrade pipNo extra pip packages are required; the stdlib is enough. The GUI uses Tkinter (bundled with official Windows/macOS installers); on Linux install your distro's Tk bindings if missing (e.g., sudo apt-get install python3-tk or sudo dnf install python3-tkinter) before running baseline-wallet-gui.
pip install -e .This exposes the baseline-node, baseline-wallet, and baseline-wallet-gui executables in your virtual environment.
A starter config.json lives at the repo root with reasonable defaults. Before launching your node, make these important changes:
- Pick RPC creds: Modify
rpc.usernameandrpc.passwordinconfig.jsonand keep them secret. - Set peers: In
network.seeds, add reachable Baseline Cash nodes as a list to help your node find peers or leave it empty to start a private testnet. The current starter config.json has a seed node for the public Baseline Cash mainnet.
baseline-node --config config.json --log-level infoThe runner initializes the append-only block store + SQLite chainstate, and starts P2P sync, wallet, and the authenticated JSON-RPC server. If a pool private key is configured it also spins up the payout tracker and Stratum listener. Use Ctrl+C (or SIGTERM) for graceful shutdown.
Point a browser or curl at http://127.0.0.1:8832/ to view the built-in status panel (unauthenticated but rate-limited)-it summarizes height, peers, mempool size, and uptime at a glance.
TIP: Need to resync from scratch? Stop the node and run:
baseline-node --config config.json --reset-chainstateThis wipes blocks/chainstate/peers/logs while preserving wallets and payout data, then restarts the node with a clean slate.
The node writes wallet/wallet.json under the data dir and exposes it over JSON-RPC. For friendlier use, run the CLI tool.:
# show commands
baseline-wallet --config config.json --helpThis key is separate from the wallet: it controls who receives block rewards from your Stratum pool. Generate one with:
baseline-wallet generate-keyIt prints the 32-byte hex key and a WIF string. Replace mining.pool_private_key (which defaults to null) in config.json with the hex value. Keep both hex + WIF offline.
Import the WIF into any wallet (Baseline Cash Wallet or external) whenever you need to manually spend pool-held funds.
- Launch the node with your configured payout key. The Stratum listener will come up automatically whenever that key is present.
- Point miners:
Workers are tracked by username for payouts; shares accrue until coinbase rewards mature (20 blocks), then the payout tracker crafts and broadcasts the payment transaction..
# Install baseline-miner (CPU Stratum miner) python -m pip install git+https://github.com/Baseline-Blockchain/baseline-miner.git # Local Solo Miner (connect to your own node's Stratum server) baseline-miner --host 127.0.0.1 --port 3333 --address YOURRECEIVERADDRESS --worker worker1 # Public pool (replace pool.example.org, open TCP/3333, ensure config.json has stratum.host = 0.0.0.0) baseline-miner --host pool.example.org --port 3333 --address YOURRECEIVERADDRESS --worker worker1
- Yes, you can already have community mining pools! Just point miners with proper addresses at a Baseline Cash node with Stratum enabled and the payouts will flow automatically.
Pool operator knobs (config.json):
mining.pool_fee_percent: percent taken from mined subsidy before distributing to workers.mining.min_payout: minimum worker balance (in liners) before including them in a payout tx.stratum.*: vardiff/session tuning; seedocs/mining-and-payouts.mdand monitordata_dir/payouts/ledger.json.
Ruff enforces a strict lint profile defined in pyproject.toml. Install it and run checks before committing:
pip install ruff
ruff check .The configuration enables pycodestyle/pyflakes, import sorting, naming rules, bugbear, pyupgrade, and security checks so issues surface early.