<p>The solo mining pool takes care of tracking unconfirmed transactions and supplying block templates for the solo miners. This allows the solo miners to run only mining hardware without a controller.</p>
<hr />
<p>Seeing your follow up questions from the comments, let me go into a bit more detail:</p>
<p>Think of the Bitcoin miners as participating in a perpetual global lottery to be the author of the next block in the Bitcoin blockchain. Miners &quot;enter the lottery&quot; each time they hash the <em>block header</em> of a candidate block. About 1 in 5.22e23 of these hashed block headers yields a hash that is low enough to indicate that a <em>valid block</em> has been found. When a miner finds a valid block, they publish the corresponding candidate block and extend the Bitcoin block chain.</p>
<p>Miners create candidate blocks by first assembling a <em>block template</em> picking as many unconfirmed transactions from their mempool as they can fit in a block, then secondly using this template to derive numerous candidate blocks by changing either the <em>nonce</em> in the block header, parts of the <a href="https://bitcoin.stackexchange.com/q/4571/5406">coinbase transaction</a> that can have <a href="https://bitcoin.stackexchange.com/a/108186/5406">arbitrary data</a>, or other <a href="https://bitcoin.stackexchange.com/q/90393/5406">changeable parts of the block header</a>. Changing any part of a transaction, the order of transactions, or the selection of transactions changes the <a href="https://bitcoin.stackexchange.com/q/10479/5406"><em>Merkle root</em></a> in the block header. Anytime even one bit changes in the header, hashing the header will result in a completely new hash, which miners use to quickly try many different candidate blocks.</p>
<p>In order to assemble block templates, a miner has to run a full node that keeps a mempool with the pool of unconfirmed transactions waiting to be included in blocks. Generally, the node software is used to create an initial block template. This block template is then provided to the mining hardware (<a href="https://bitcoin.stackexchange.com/q/12029/5406">ASICs</a>), which will then generate and hash ~quadrillions of candidate blocks per second.</p>
<p>Setting up and maintaining a full node to serve as a controller for mining hardware takes more work than many miners are willing to invest, and mining by yourself yields extremely unreliable income. Therefore, many miners outsource the template creation to mining pools which generally share revenue among all the pool participants according to their contribution to the total hashrate of the pool.</p>
<p>Some miners either confident in their luck, or with sufficient hardware at their disposal choose to instead mine by themselves (not smoothing out revenue per a pool), but still outsourcing the block template creation by using so-called &quot;solo mining pools&quot;.</p>

CC BY-SA 4.0
2024-12-05T18:23:05.093Z
I see. A couple of follow up questions: 1) you "connect" to a pool; what would you "connect" to if you mined solo, completely? 2) what are block templates? 3) what's a controller? 4) how did Bitcoin (solo) mining work in the early days?
desolate_mountain
CC BY-SA 4.0
2024-12-05T20:22:45.530Z
I think I got most of these questions. "How did Bitcoin solo mining work in the early days?" sounds like a bit of a big new topic to open up, perhaps you could start another topic for that?
Murch
CC BY-SA 4.0
2024-12-09T01:29:59.150Z
That's fair, thank you for the thorough answer!
desolate_mountain
CC BY-SA 4.0
2024-12-15T14:24:44.040Z
A solo mining pool also takes care of communicating with the mining device, since Bitcoin Core does not speak the stratum protocol, can't control share difficulty, etc. It also constructs and adds the payout details to the coinbase transaction, which the `getblocktemplate` omits (though it provides ingredients for it).
Sjors Provoost
CC BY-SA 4.0
2024-12-15T14:29:55.927Z
So even in a Stratum v2 world where miners can make their own template the concept of a solo pool can make sense. Also note that you could run the pool software yourself. Nevertheless it's a strange term.
Sjors Provoost
CC BY-SA 4.0
2024-12-05T15:46:38.643Z
2024-12-05T20:21:22.903Z
2024-12-05T20:21:22.903Z
Murch
<p>I recently stumbled upon a solo mining pool. It's a pool for solo miners, but the rewards aren't shared, you only get the full reward if you mine a block. So... What's the difference between just mining solo?</p>

<mining-pools><solo-mining>
What is the point of solo mining pools?
desolate_mountain
# What is the point of solo mining pools?

(Asked by: username_0 on 2024-12-05)

I recently stumbled upon a solo mining pool. It's a pool for solo miners, but the rewards aren't shared, you only get the full reward if you mine a block. So... What's the difference between just mining solo?

**Tags:** mining-pools, solo-mining


---

## 1 answers

### Answer by username_1 on 2024-12-05. Score: 7 | Accepted answer

The solo mining pool takes care of tracking unconfirmed transactions and supplying block templates for the solo miners. This allows the solo miners to run only mining hardware without a controller.

---

Seeing your follow up questions from the comments, let me go into a bit more detail:

Think of the Bitcoin miners as participating in a perpetual global lottery to be the author of the next block in the Bitcoin blockchain. Miners "enter the lottery" each time they hash the *block header* of a candidate block. About 1 in 5.22e23 of these hashed block headers yields a hash that is low enough to indicate that a *valid block* has been found. When a miner finds a valid block, they publish the corresponding candidate block and extend the Bitcoin block chain.

Miners create candidate blocks by first assembling a *block template* picking as many unconfirmed transactions from their mempool as they can fit in a block, then secondly using this template to derive numerous candidate blocks by changing either the *nonce* in the block header, parts of the [coinbase transaction](https://bitcoin.stackexchange.com/q/4571/5406) that can have [arbitrary data](https://bitcoin.stackexchange.com/a/108186/5406), or other [changeable parts of the block header](https://bitcoin.stackexchange.com/q/90393/5406). Changing any part of a transaction, the order of transactions, or the selection of transactions changes the [*Merkle root*](https://bitcoin.stackexchange.com/q/10479/5406) in the block header. Anytime even one bit changes in the header, hashing the header will result in a completely new hash, which miners use to quickly try many different candidate blocks.

In order to assemble block templates, a miner has to run a full node that keeps a mempool with the pool of unconfirmed transactions waiting to be included in blocks. Generally, the node software is used to create an initial block template. This block template is then provided to the mining hardware ([ASICs](https://bitcoin.stackexchange.com/q/12029/5406)), which will then generate and hash ~quadrillions of candidate blocks per second.

Setting up and maintaining a full node to serve as a controller for mining hardware takes more work than many miners are willing to invest, and mining by yourself yields extremely unreliable income. Therefore, many miners outsource the template creation to mining pools which generally share revenue among all the pool participants according to their contribution to the total hashrate of the pool.

Some miners either confident in their luck, or with sufficient hardware at their disposal choose to instead mine by themselves (not smoothing out revenue per a pool), but still outsourcing the block template creation by using so-called "solo mining pools".

> **Comments:**
> **username_0**: I see. A couple of follow up questions: 1) you "connect" to a pool; what would you "connect" to if you mined solo, completely? 2) what are block templates? 3) what's a controller? 4) how did Bitcoin (solo) mining work in the early days?  
> **username_1**: I think I got most of these questions. "How did Bitcoin solo mining work in the early days?" sounds like a bit of a big new topic to open up, perhaps you could start another topic for that?  
> **username_0**: That's fair, thank you for the thorough answer!  
> **username_2**: A solo mining pool also takes care of communicating with the mining device, since Bitcoin Core does not speak the stratum protocol, can't control share difficulty, etc. It also constructs and adds the payout details to the coinbase transaction, which the `getblocktemplate` omits (though it provides ingredients for it).  
> **username_2**: So even in a Stratum v2 world where miners can make their own template the concept of a solo pool can make sense. Also note that you could run the pool software yourself. Nevertheless it's a strange term.  

---

