B3Chain Testnet

The B3Chain public test network. Anyone can run a node, request free test coins from the faucet, mine blocks with the reference CPU miner or the public Stratum pool, and watch the chain in the explorer. Test B3C has no monetary value; this network exists to soak-test the consensus rules and B3PoW-Scratch v1.1.1 PoW pipeline before mainnet launch.

Phase: 8a bootstrap Status: live P2P port: 18533 Pool: pool.b3chain.org:3333
This is a test network. Coins are valueless. The chain may be reset without notice if a critical bug is found.

Live status #

Poll of /testnet-status.json, refreshed every 60 seconds. The exporter source is contrib/testnet/status-monitor/. Cards show “n/a” when the corresponding upstream is unreachable; the whole panel turns warning-yellow when the JSON is more than 5 minutes stale.

Block height
 
Difficulty
LWMA-3
Network hashrate
 
Peers seen by seed1
getnetworkinfo connections
Pool
 
Pool blocks (24 h)
 
Faucet
 
Best block hash
SHA-256d block ID

Last 5 blocks

HeightAgeHash TxSize
loading…
Generated at Auto-refresh every 60 s · raw JSON · plain text

1. Connect a node #

Build (or download) b3chaind from github.com/b3chain/b3chain on the b3chain-main branch (or any released v0.1.x-testnet tag), then run:

b3chaind -chain=test

That's it. The DNS seed at testnet-seed.b3chain.org returns the operator-run seed nodes (seed1 = 166.88.4.250, seed2 = 151.158.1.22, seed3 = 151.158.1.60); your node will connect and start syncing the chain. See the runbook §2 for the recommended b3chain.conf with explicit addnode= lines.

Connection parameters

SettingValue
Chain nametest
Magic bytesb3 c1 02 0e
P2P port18533
Default RPC port18534
Bech32 HRPtb3
HD coin_type1 (BIP44 testnet)
Genesis hash4b3f758b306086eca0a95c68020ab74cb87c652b1788780fa3235306bb3d4006
DNS seedtestnet-seed.b3chain.org

2. Get test coins #

Generate a new bech32 address with your wallet:

b3chain-cli -chain=test getnewaddress "" bech32
# returns tb3...

Paste it into the faucet at faucet.b3chain.org. The faucet hands out 0.5 tB3C per request, with a 24-hour cooldown per IP and per destination address. A JSON status endpoint is at /status.

The faucet is a small Flask service in the public source tree: contrib/testnet/faucet/app.py.

3. Explore the chain #

A live block explorer is at explorer.b3chain.org. It is a deployment of btc-rpc-explorer pointed at one of the operator-run testnet nodes — nothing custom, so any compatible explorer can do the same.

Programmatic status feeds:

4. Mine blocks #

Three options, in increasing order of hashrate. All three target the same algorithm: B3PoW-Scratch v1.1.1 (post-F-1, live since genesis). The retired BLAKE3(BLAKE3(header)) algorithm is not accepted on any b3chain network — the pool and every full node reject those shares.

Solo mining with the reference CPU miner

b3chain-cpuminer.py defaults to B3PoW-Scratch v1.1.1. The --legacy-blake3d flag exists only for cross-checking historical headers against the retired double-BLAKE3 algorithm and will not produce valid B3Chain shares — the miner emits a stderr warning when that flag is passed.

Anyone can mine on testnet. The reference CPU miner talks to your local node via JSON-RPC and submits valid blocks via submitblock.

pip install blake3                              # required by the B3PoW-Scratch Python reference
b3chain-cli -chain=test getnewaddress "" bech32
# tb3...your-address...

python3 contrib/miner/b3chain-cpuminer.py \
    --rpcconnect=127.0.0.1 \
    --rpcport=18534 \
    --rpcuser=USER \
    --rpcpassword=PASS \
    --coinbaseaddr=tb3...your-address...

Testnet uses an early-difficulty-guard regime for the first 10 000 blocks (nEarlyDifficultyGuardHeight in src/kernel/chainparams.cpp), so a single CPU thread can produce blocks at roughly the 10-minute target.

Pool mining via Stratum

The public pool at stratum+tcp://pool.b3chain.org:3333 validates every share against the canonical B3PoW-Scratch v1.1.1 algorithm exactly the way b3chaind does. Reward scheme is PPLNS over the last 4032 weighted shares; pool fee is 1%. Usernames are <email>.<workerName> for verified accounts at pool.b3chain.org, or <tb3address>.<workerName> for anonymous miners.

python3 contrib/miner/b3chain-cpuminer.py \
    --stratum stratum+tcp://pool.b3chain.org:3333 \
    --user alice@example.com.cpu1 --pass x \
    --threads 2 --json-log shares.jsonl

Worker name / share format / vardiff / payout policy are documented in runbook §7. The wire-protocol implementer contract is in contrib/testnet/pool/docs/STRATUM-PROTOCOL.md.

B3Miner-1 FPGA

The B3Miner-1 reference FPGA mining card (XCKU5P + ESP32-S3 + Ethernet) is the intended high-end miner for B3PoW-Scratch. Build and flash instructions are in contrib/miner/b3miner-firmware/README.md. Point the card at the same Stratum endpoint above; the onboard dashboard handles the credentials.

After bitstream configuration the firmware reads REG_ID over SPI; it must return 0xB3110002 (v1.1.1 build 0002 — the F-1 fix bumped this from the original 0xB3110001 build 0001). Older bitstreams mine the pre-F-1 v1.1.0 algorithm and are rejected by the v1.1.1 firmware.

What about a GPU miner?

There isn't one, and there isn't going to be one on this tree. B3PoW-Scratch is GPU-hostile by design: its 1 MiB sequential, data-dependent scratchpad destroys GPU throughput. The historical CUDA tree at contrib/miner/b3chain-gpuminer/ is deprecated: it still compiles, but it only computes the retired double-BLAKE3 algorithm and is kept only as a worked example of the Stratum V1 + JSONL pipeline. It will not produce valid mainnet or testnet shares.

5. Operator notes #

The seed network is intentionally small at bootstrap: one operator-run host (seed1) carries the pool, faucet, explorer, and status monitor in addition to b3chaind; seed2 and seed3 are seed-only nodes in different geographic regions for redundancy. Anyone can join at any time — just run b3chaind -chain=test.

Repository layout

PathWhat's there
contrib/deploy/bootstrap-testnet-node.sh Idempotent script: fresh Ubuntu host → running b3chaind testnet under systemd
contrib/testnet/faucet/ Flask faucet + systemd unit + installer
contrib/testnet/miner/ Always-on CPU miner systemd unit + installer
contrib/testnet/pool/ Reference Stratum V1/V2 pool stack (Node/TypeScript)
contrib/testnet/explorer/ btc-rpc-explorer (Node.js + systemd) installer with B3C rebrand patches
contrib/testnet/status-monitor/ Python exporter feeding /testnet-status.json (this page)
contrib/testnet/monitor/ Cron-driven seed status snapshot ⇒ /testnet-status.txt
contrib/monitoring/51attack-watch.py Long-running 51%-attack detection daemon (JSONL + webhook alerts). See operator tools.

Chain-recovery tools (M-14)

Every seed runs the v1.1.3 M-14 operator-pinned chain-recovery RPCs (finalizeblock, unfinalizeblock, parkblock, unparkblock, getfinalizedblockhash) and, in production, the 51attack-watch.py monitoring daemon described in doc/security/51-MONITORING-OPS.md. The end-to-end response procedure for a deep reorg, hashrate drop, or pow-budget storm is in RESPONSE-RUNBOOK-51ATTACK.md; a one-page summary of both lives at testing/operator-tools.html.

6. Found a bug? #

Testnet bugs are exactly what we want before mainnet. Report any consensus oddity, reorg longer than 2 blocks, sync stall, RPC inconsistency, or wallet weirdness via the channels described in /testing/reporting.html, or file an issue directly at github.com/b3chain/b3chain/issues. Include the testnet block height, your node version (getnetworkinfo), and the journal log (journalctl -u b3chaind-testnet --since '1 hour ago'). Security disclosures go to security@b3chain.org.