I want to know how much independence miners have when they join a pool. Do the individual miners create the block headers and choose which transactions to include in their block or is the block just made by the pool operator?

I’ve briefly read that the stratum v2 protocol gives miners some more independence. Was curious to see if anyone here could give me some technical details.

1 Answer 1


Do the individual miners [...] choose which transactions to include in their block

According to the relevant website:

Stratum V2 is the next generation protocol for pooled mining. It increases security, makes data transfers more efficient, and reduces mining infrastructure requirements. It also introduces three new sub-protocols that let miners select transaction sets and improve decentralization by negotiating with pools.

(my emphasis)

Job Negotiation Protocol

A Miner's Template Provider negotiates a block template (which includes the transaction set) with a Pool's Job Negotiator. The Pool can reuse negotiation outcomes across all end-miner connections to reduce computational intensity. A single negotiation can multicast to multiple farms with hundreds of thousands of devices. This protocol is a separate, optional piece of infrastructure from the Mining Protocol and can be provided as a 3rd party service for mining farms. Separating job negotiation as a sub-protocol lets pools terminate negotiation connections independently of mining protocol connections (i.e. share submissions). Work negotiation likely requires, at minimum, validity spot-checks and (potentially) rate-limiting.

The details are at https://github.com/stratum-mining/sv2-spec/blob/main/06-Job-Negotiation-Protocol.md which includes

6.1.4 CommitMiningJob (Client -> Server)

A request sent by the Job Negotiator that proposes a selected set of transactions to the upstream (pool) node.

Field Name Data Type Description
request_id U32 Unique identifier for pairing the response
mining_job_token B0_255 Previously reserved mining job token received by AllocateMiningJobToken.Success


So yes, miners can negotiate with the pool about the transactions the miner would like to include in the block. Note that support for this is described as optional. Perhaps some pools don't support the job negotiation sub-protocol.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.