Connect a miner
Point any SHA-256d ASIC at solofork in a couple of minutes. This page covers the stratum details, address requirements, difficulty, firmware compatibility, per-model examples, and what to do when a share won't submit.
Quick start
URL: stratum+tcp://stratum.solofork.com:3333
Username: <your bc1… ECX address>
Password: x
That's it. Solo mining means the full coinbase — minus a 2% donation output to the operator — pays directly to the address you supply. There is no signup, no per-worker password, and no account state on our side.
Confirm the pool is reachable from the miner's network:
nc -vz stratum.solofork.com 3333
You should see Connection to stratum.solofork.com … succeeded. If the miner is behind a firewall that only allows outbound 443, the pool is not reachable — open outbound TCP 3333 to stratum.solofork.com.
Address requirements
- Native SegWit (
bc1q…) — recommended. Lowest fee weight when you spend the coinbase. - Legacy P2PKH (
1…) — supported. - P2SH (
3…) — supported. - Taproot (
bc1p…) — not supported on alphanet. The stack rejects the share.
Every share you submit encodes this address as the coinbase output beneficiary. Use an address whose private key you actually hold. Do not use an exchange deposit address — most exchanges do not credit coinbase outputs, and you cannot rotate the address after a block is found.
Choosing difficulty
The pool runs vardiff by default. Vardiff observes your submit rate for a couple of minutes and settles on a share difficulty that keeps you submitting roughly one share every 15–30 seconds. You do not need to configure anything for this to work.
Set a fixed difficulty only if:
- Your miner's firmware misbehaves during vardiff renegotiation (some ASIC firmwares mishandle the mid-connection difficulty change).
- You are testing at very low hashrate (a single S9, a Bitaxe, a Nerdminer) and want to force smaller shares so the connection stays warm.
Append +d to the URL to request a starting difficulty:
stratum+tcp://stratum.solofork.com:3333+d1024
Vardiff then adapts up from there. Valid range is +d1 to +d1000000.
Firmware compatibility
| Firmware | Status | Notes |
|---|---|---|
| Stock Antminer | Works | All Bitmain L-series and S-series firmware from 2019 onward. |
| cgminer | Works | Reference implementation. Handles vardiff and rapid difficulty changes cleanly. |
| vnish | Works | Reports accepted shares within seconds; no known interop issues. |
| LuxOS | Works | Standard Stratum V1; behaves like cgminer. |
| BraiinsOS / bosminer | Incompatible during phase-activation windows | Panics on low network difficulty (diff below ~1000). Use cgminer, vnish, LuxOS, or stock firmware for the first 24 hours of each phase. |
If a firmware you use is not listed, it almost certainly works — Stratum V1 has been stable for a decade. Report incompatibilities to [email protected] and we will add them here.
Per-model setup
Antminer S19 / S19j Pro / S19 XP
Web UI → Miner Configuration. Fill Pool 1:
- URL:
stratum+tcp://stratum.solofork.com:3333 - Worker:
bc1qYourAddress(optionallybc1qYourAddress.rig01for per-rig labelling on /stats) - Password:
x
Leave Pool 2 and Pool 3 pointed at your backup pool for failover. Save & Apply. The miner reboots into the new config.
Antminer S21 / S21 Pro
Same procedure as S19. Firmware ≥ Bitmain 1.0.11 is confirmed working with vardiff.
Whatsminer M30S / M50 / M60
Web UI → Miner Config. The Whatsminer UI accepts the stratum URL with or without stratum+tcp:// — either form is fine. Password field is required; use x.
Bitaxe / Nerdminer / small hobby miners
These have too little hashrate to submit valid shares at vardiff defaults on a global pool. Force a small fixed diff:
stratum+tcp://stratum.solofork.com:3333+d64
Expect a share every few minutes. The pool logs your submits and counts them toward your address's stats even though you are unlikely to find a block.
Personalize your coinbase
If this pool finds a block under your address, its coinbase transaction can carry a short OP_RETURN message you chose. Authorize the message once with a BIP-322 signature from your address's private key — no accounts, no email. Message text stays until you re-register or the expiry passes.
Multiple rigs on one address
Append .workername to the username to distinguish rigs under the same payout address:
Username: bc1qYourAddress.rig-basement
Username: bc1qYourAddress.rig-attic
Username: bc1qYourAddress.s21-farm-north
Each name shows up as a separate row on /user/<addr> and gets its own hashrate chart at /user/<addr>/worker/<name>. Worker names are public — anyone with your address can see them — so avoid labels that identify a physical location if you care about that.
Monitoring
- /stats — pool-wide numbers, refreshes every 30s.
/user/<your address>— per-address stats: hashrate, workers, shares, 24h chart./user/<addr>/worker/<name>— one specific rig.- /blocks — every block this pool has found.
- /status — subsystem health (bitcoind, ckpool, stratum) at a glance.
Use the address-lookup search on the landing or /stats page as a fast entry point — it just redirects to /user/<addr>.
Troubleshooting
Miner shows "connecting" indefinitely
Outbound TCP 3333 is blocked or the DNS lookup is failing. Verify with nc -vz stratum.solofork.com 3333 from the same network as the miner. If nc succeeds but the miner still hangs, the miner's firmware is probably resolving DNS through its own resolver rather than the LAN default — set an explicit IP (dig +short stratum.solofork.com) as a test.
Shares submitted but "rejected"
Most common causes:
- Address rejected — the username field is not a valid bc1q/1/3 address. Taproot (
bc1p…) is not accepted. - Stale share — the miner submitted work for a block height that is no longer the tip. A background rate of 0.5–2% is normal.
- Low-diff share — the miner ignored the current vardiff target. Restart the miner; if the problem persists, force
+din the URL.
Ping to pool is fine but hashrate on /user shows zero
The pool reports hashrate from accepted shares over 1-minute / 1-hour / 1-day windows. If your miner just connected, the 1m number populates within ~90s; 1h needs an hour. Empty means either no accepted shares have landed yet or every share is being rejected — check /stats for the rejected-share counter under Pool.
What happens during a phase activation
Each phase (Alpha → Beta → Full Release) begins at network difficulty 1.0 and retargets rapidly. The pool remains online, but expect: a burst of stale shares while the tip changes fast; heavy orphan rates on any blocks you find in the first hour; a difficulty rise of up to 4× per epoch. See the phase table on the landing for dates and block heights.
Fee, custody, contact
- Fee: 2% coinbase output to the operator. Set per-block by CKpool at template time; the remaining 98% pays your address.
- Custody: none. The pool never holds your coins. Coinbase outputs mature after 100 confirmations, then they are yours to spend.
- Payout timing: immediate on block-find, in the coinbase itself — subject only to the 100-block coinbase maturity rule.
- Contact: [email protected] for operational questions. See /about for the operator's stance and the open-source patch list.