Open-Source Bitcoin Mining Pool Software Compared
Compare open-source Bitcoin mining pool software: CKPool, OCEAN DATUM Gateway, Public Pool, and SRI. Stratum V1/V2, payout methods, and setup difficulty.
Overview
Running your own mining pool software is one of the most direct ways to strengthen Bitcoin's decentralization. Instead of handing hashrate to a large commercial pool that controls block template construction, operators who self-host pool software retain authority over transaction selection and payout logic. Four open-source projects dominate the space: CKPool, OCEAN's DATUM Gateway, Public Pool, and the Stratum V2 Reference Implementation (SRI).
Each project targets a different segment of the operator market. CKPool is the battle-tested C-based pool server that has powered solo mining for over a decade. DATUM Gateway is a proxy layer that lets miners build their own block templates while connected to OCEAN's pool infrastructure. Public Pool is a lightweight, zero-fee solo mining server written in TypeScript. SRI provides the Rust reference implementation of the Stratum V2 protocol, enabling any operator to build a pool with encrypted communication and miner-controlled job declaration.
Feature Comparison
The following table compares the core attributes of each open-source pool software project. For a broader comparison of commercial pools, see the mining pool comparison tool.
| Feature | CKPool | DATUM Gateway | Public Pool | SRI (Stratum V2) |
|---|---|---|---|---|
| Language | C | C | TypeScript (NestJS) | Rust |
| License | GPLv3 | MIT | MIT | MIT + Apache 2.0 |
| Stratum V1 | Yes | Yes (miner-facing) | Yes | Via translation proxy |
| Stratum V2 | Source support (2026) | No (DATUM protocol) | No | Native |
| Block template control | Pool operator | Individual miner | Pool operator | Individual miner (Job Declaration) |
| Payout schemes | Solo only | TIDES (via OCEAN) | Solo only | Configurable |
| Vardiff | Yes (fast retarget) | Yes | Yes | Yes |
| Encryption | No | No | No | Yes (AEAD, Noise protocol) |
| Monitoring dashboard | Minimal (web stats) | Web UI | Built-in web UI | Prometheus/Grafana |
| One-click deploy | Yes (Umbrel via Bassin) | Docker available | Yes (Umbrel, Start9) | Docker available |
| Minimum hashrate | Any (solo: luck-dependent) | Any (OCEAN handles payouts) | Any (solo: luck-dependent) | Any (pool-dependent) |
| Maturity | Production (since 2014) | Production (since 2024) | Production (since 2023) | Alpha / early production |
CKPool
CKPool is the oldest open-source Bitcoin pool server still in active use. Written by Con Kolivas and hosted on Bitbucket under the GPLv3 license, it uses a multi-process, multi-threaded architecture designed for Linux. The codebase powers solo.ckpool.org, one of the most popular solo mining services, which has found over 290 blocks since its launch in 2014.
CKPool supports failover across multiple bitcoind nodes, configurable coinbase signatures, and socket handover for restarts without dropping connected miners. Its vardiff implementation retargets quickly, adjusting share difficulty to maintain roughly one submission per 10 to 60 seconds per worker. The server speaks Stratum V1 natively, with source-level V2 support added in mid-2026.
The main limitation is that CKPool operates as a solo-mining server: there is no built-in shared pool payout logic like PPLNS or FPPS. Miners either find a block and keep the full reward (minus a configurable operator fee, 2% on the hosted instance) or earn nothing. Self-hosting requires compiling from C source on Linux, though one-click deployment is now available via the Bassin app on Umbrel.
OCEAN DATUM Gateway
DATUM Gateway is an open-source proxy released by OCEAN under the MIT license. It addresses one of the core mining centralization problems: who builds the block template. Under traditional Stratum V1, the pool server constructs a template and distributes it to all connected miners. With DATUM, that relationship reverses: each miner runs a local Bitcoin node, constructs its own block template via the getblocktemplate RPC, and submits work to OCEAN through the gateway.
The DATUM protocol is distinct from Stratum V2, though both aim to return transaction selection to individual miners. Miners' ASICs connect to the local DATUM Gateway using standard Stratum V1, so no firmware upgrade is required. The gateway handles communication with OCEAN's infrastructure while the miner retains full control over which transactions to include in their candidate blocks.
OCEAN uses the TIDES payout system (Transparent Index of Distinct Extended Shares), which calculates each miner's exact pro-rata share of contributed hashrate. TIDES payouts come directly from coinbase transactions, making them independently verifiable on-chain. OCEAN charges a 2% fee for standard Stratum V1 connections and 1% for miners running DATUM, incentivizing decentralized template construction. For deeper analysis of OCEAN's approach, see our research on decentralized mining pools.
Public Pool
Public Pool is a lightweight solo mining server built with NestJS and TypeScript, released under the MIT license. It targets small-scale miners running ASIC miners at home who want the sovereignty of solo mining without trusting a third-party pool operator. The hosted instance at public-pool.io charges zero pool fees, though the open-source configuration includes an optional 2% developer donation.
Self-hosting Public Pool is straightforward compared to the C-based alternatives. It runs on Umbrel and Start9, giving node operators one-click deployment alongside their existing Bitcoin full node. The software includes a built-in web dashboard for monitoring connected workers, submitted shares, and estimated hashrate. It speaks Stratum V1 exclusively, with no current V2 support.
As a solo pool, Public Pool has no shared payout scheme. Each miner competes independently to find a block. For small miners with a few terahashes, the expected time between solo blocks is measured in years or decades, making this a high-variance, high-reward proposition. The appeal is philosophical: mining on a self-hosted pool means no KYC, no custodial risk, and no dependency on a commercial pool operator.
Stratum V2 Reference Implementation (SRI)
The Stratum V2 Reference Implementation is a community-developed, fully open-source Rust codebase that implements the Stratum V2 protocol. It was co-developed by Braiins (formerly Slush Pool) and independent contributors, with significant input from Matt Corallo. SRI provides the building blocks for anyone to construct a Stratum V2 pool, proxy, or mining client from scratch.
The project is split across two repositories: low-level protocol crates (noise-sv2, codec-sv2, and others) in the main stratum-mining/stratum repo, and application-level code in sv2-apps. Key features include end-to-end AEAD encryption using the Noise protocol framework, bandwidth reduction of roughly 60-70% compared to Stratum V1, and the Job Declaration sub-protocol that allows miners to propose their own block templates to the pool.
SRI also includes a Stratum V1-to-V2 translation proxy, enabling existing ASIC hardware with V1 firmware to connect to a V2 pool. Braiins OS+ is currently the only major firmware with a native V2 client, though the Bitaxe AxeOS firmware added native V2 support in mid-2026. The DEMAND (DMND) pool, which launched in late 2025, is the first pool built natively on Stratum V2 and mined the first known production block using Job Declaration (block 955,318) in June 2026.
Payout Methods
Payout schemes determine how mining revenue is distributed among participants. Open-source pool software supports different models depending on its architecture. For a comprehensive breakdown, see our research on mining pool payout methods.
| Payout Method | Variance | Pool Risk | Typical Fee | Used By |
|---|---|---|---|---|
| Solo | Very high | None | 0-2% | CKPool, Public Pool |
| PPLNS | Medium | Low | 1-2% | Configurable in SRI |
| PPS | Low | High | 2-4% | Commercial pools |
| FPPS | Low | High | 2-4% | Foundry, F2Pool, AntPool |
| TIDES | Medium | Low | 1-2% | OCEAN (via DATUM) |
Solo mining (CKPool, Public Pool) pays the full block reward plus transaction fees to the miner who finds a valid block, with zero variance smoothing. TIDES (OCEAN/DATUM) distributes rewards proportionally from coinbase outputs, offering on-chain verifiability. FPPS, the dominant scheme among commercial pools, smooths income by paying a fixed rate per share that includes estimated transaction fee revenue, but requires trust that the pool's fee estimates are accurate.
Block Template Construction
Transaction selection is the most consequential power in Bitcoin mining. Whoever constructs the block template decides which transactions are confirmed and which are left in the mempool. Under the standard Stratum V1 workflow, the pool operator builds a template and distributes it to all connected miners. This means a handful of large pools effectively control Bitcoin's transaction ordering for the majority of blocks.
Three of the four projects listed here address this centralization vector. DATUM Gateway routes each miner's locally-constructed template to OCEAN, so the miner's own Bitcoin node selects transactions. SRI's Job Declaration sub-protocol achieves the same result at the protocol level: a miner proposes a template to the pool, the pool validates the coinbase payout, and mining proceeds against the miner's template. CKPool and Public Pool, as solo-mining servers, give the operator full template control by default since only one miner's node is involved.
Stratum V1 vs V2
The original Stratum protocol (V1) has been the standard mining communication layer since 2012. It sends data in plaintext JSON over TCP, which makes it vulnerable to man-in-the-middle attacks and hashrate hijacking. Stratum V2 addresses these limitations with binary framing, AEAD encryption, and optional sub-protocols for job declaration and template distribution.
| Attribute | Stratum V1 | Stratum V2 |
|---|---|---|
| Data format | JSON (plaintext) | Binary (encrypted) |
| Encryption | None | AEAD (Noise framework) |
| Bandwidth | Baseline | ~60-70% reduction |
| Template control | Pool only | Miner (Job Declaration) |
| Firmware required | All ASICs | Braiins OS+, AxeOS, or V1 proxy |
| Pool support | All pools | Braiins, DEMAND, CKPool (2026) |
For operators evaluating open-source pool software, the protocol choice has practical implications. CKPool and Public Pool speak V1 natively, meaning any ASIC can connect without modification. SRI requires either V2-compatible firmware or the translation proxy for existing hardware. DATUM uses its own protocol between the gateway and OCEAN but accepts V1 connections from miners, sidestepping the firmware compatibility problem entirely.
Setup Difficulty and Requirements
The barrier to entry for running your own pool software varies significantly across projects.
CKPool requires a Linux server, a compiled C binary, and a synced Bitcoin Core node. Configuration is done through a JSON config file that specifies the bitcoind RPC endpoint, pool address, and fee structure. Operators comfortable with C compilation and Linux administration can have a working pool in under an hour. The Bassin app on Umbrel simplifies this to a one-click install.
DATUM Gateway requires a Bitcoin Core node with getblocktemplate RPC support and a connection to OCEAN's pool infrastructure. The gateway runs as a standalone process and can be deployed via Docker. Configuration involves setting the Bitcoin node RPC credentials, OCEAN account details, and the local port for ASIC connections.
Public Pool has the lowest barrier to entry. As a Node.js application, it runs on any platform that supports the Node runtime. Umbrel and Start9 users can install it from their app stores. The built-in web dashboard provides monitoring without additional tooling. A synced Bitcoin node is the only infrastructure requirement.
SRI has the steepest learning curve. Building a production pool from the reference crates requires Rust development experience and a deep understanding of the Stratum V2 specification. The sv2-apps repository provides example implementations, but the project is still in alpha for pool-side applications. Most operators will find it easier to connect to an existing V2 pool (like DEMAND or Braiins) using the SRI translation proxy rather than building a pool from scratch.
Decentralization Benefits of Independent Pools
Bitcoin's security model depends on no single entity controlling a majority of hashrate. As of late 2026, the top four commercial pools (Foundry USA, AntPool, F2Pool, and ViaBTC) collectively control a substantial majority of global hashrate. This concentration creates several risks: pool operators could censor specific transactions, coordinate to execute a 51% attack, or become single points of regulatory pressure.
Running independent pool software distributes these risks. Each self-hosted pool adds a distinct template-constructing entity to the network. DATUM Gateway and SRI's Job Declaration go further by distributing template construction even within a single pool: every participating miner runs its own node and selects its own transactions, meaning the pool operator cannot censor transactions even if compelled to. For a detailed analysis, see our research on how OCEAN and DEMAND challenge pool centralization.
Self-hosted pools also eliminate custodial risk. With CKPool and Public Pool, block rewards are paid directly to the operator's address with no intermediary holding funds. OCEAN's TIDES system pays from coinbase outputs, reducing (though not eliminating) custodial exposure. For miners who value sovereignty and contribute to network decentralization, self-hosted pool software is the most direct path available.
Frequently Asked Questions
What is the best open-source Bitcoin mining pool software?
It depends on your goals. CKPool is the most mature and battle-tested option for solo mining, with over a decade of production use. DATUM Gateway is the best choice for miners who want to select their own transactions while earning steady pooled payouts through OCEAN. Public Pool is ideal for beginners who want a simple, zero-fee solo pool on their home node. SRI is for developers and advanced operators building Stratum V2 infrastructure from scratch.
Can I run a mining pool on a Raspberry Pi or home server?
Yes. Public Pool and CKPool both run on modest hardware alongside a Bitcoin full node. The main constraint is the full node's storage and sync requirements (roughly 600+ GB for an unpruned node), not the pool software itself. Both Public Pool and CKPool are available as one-click apps on Umbrel, which supports Raspberry Pi and similar single-board computers.
What is the minimum hashrate needed to solo mine Bitcoin?
There is no protocol-enforced minimum. Any amount of hashrate can submit valid shares. However, the economics of solo mining are purely probabilistic: at current network difficulty, a single modern ASIC (roughly 100-400 TH/s) would take years or decades on average to find a block independently. Solo miners occasionally win blocks with small hashrates, but this is statistically rare. Solo mining is best treated as a lottery rather than a predictable income stream.
What is the difference between DATUM and Stratum V2?
Both protocols aim to return block template construction to individual miners, but they take different approaches. Stratum V2 is a complete replacement for the Stratum V1 mining protocol, featuring binary framing, encryption, and a Job Declaration sub-protocol. It requires V2-compatible firmware (like Braiins OS+) or a translation proxy. DATUM is a proxy layer that sits between existing Stratum V1 ASICs and the OCEAN pool: miners connect to their local DATUM Gateway using standard V1, while the gateway handles template submission to OCEAN. DATUM requires no firmware changes but is currently usable only with OCEAN.
How does variable difficulty (vardiff) work in mining pools?
Vardiff adjusts the share difficulty assigned to each individual worker based on its hashrate. The pool monitors how quickly a worker submits shares and raises or lowers the target to maintain a steady submission rate, typically one share every 10 to 60 seconds. This prevents high-hashrate miners from flooding the pool with easy shares while ensuring low-hashrate miners submit shares frequently enough for accurate hashrate estimation. All four projects in this comparison implement vardiff.
Is it profitable to run your own Bitcoin mining pool?
For most small operators, running your own pool is not primarily a profit-seeking activity. Solo pool operators (CKPool, Public Pool) earn the full block reward when they find a block, but the expected time between blocks with a small amount of hashrate is extremely long. DATUM Gateway operators earn pooled payouts through OCEAN, which provides more predictable income but requires enough hashrate for OCEAN's minimum payout threshold (approximately 0.01 BTC). The primary motivations for running your own pool are sovereignty, privacy, and contributing to Bitcoin's decentralization.
Which pools support Stratum V2 in 2026?
As of late 2026, Braiins Pool (the original Slush Pool) and DEMAND (DMND) offer full Stratum V2 support in production, including Job Declaration. CKPool added source-level V2 support in mid-2026. Several other major pools have joined the Stratum V2 Working Group, signaling future adoption. For the latest compatibility details, see our Stratum V2 guide.
This tool is for informational purposes only and does not constitute financial advice. Software features, pool fees, and protocol support change frequently. Always verify current capabilities against each project's official repository and documentation before deploying mining infrastructure.
Build with Spark
Integrate bitcoin, Lightning, and stablecoins into your app with a few lines of code.
Read the docs →
