Most of Stratum V2 is about security and efficiency, but one feature reaches deeper into how Bitcoin works: job declaration. It lets miners, not pools, decide which transactions go into the blocks they mine. This guide explains what that means, why it matters for decentralization, and the moving parts that make it work.
Who chooses the transactions today?
Under plaintext Stratum V1, the pool builds the block template. It picks which transactions to include, and every miner connected simply hashes whatever the pool decided. That is fine for finding blocks, but it quietly concentrates an important power: the ability to decide what the network confirms, and what it does not.
With a handful of large pools directing most of the world's hashrate, that concentration is a real concern. If transaction selection lives only with pools, then censorship, whether commercial or coerced, has very few points to capture. Bitcoin's resilience depends on that power being spread out.
What job declaration changes
Job declaration flips the default. Instead of the pool dictating the template, a miner can build its own, choosing transactions from its own view of the mempool, and declare that template to the pool. The pool still handles the accounting, who found the block and who gets paid, but it no longer monopolizes what goes inside the block.
The effect is decentralization of transaction selection. Thousands of miners each choosing their own transactions is far healthier for censorship resistance than a few pools choosing for everyone. This is one of the most consequential ideas in the whole V1 to V2 transition.
The moving parts: JDC and JDS
Job declaration splits into two coordinated roles:
- Job Declarator Client (JDC). This runs on the miner's side. It builds the block template, usually pulling transactions from a local Bitcoin node it trusts, and handles declaring that job upstream. It is where your choice of transactions actually lives.
- Job Declarator Server (JDS). This sits with the pool. It receives declared jobs, validates them, and coordinates so that the pool can still verify work and pay the finder correctly.
The two talk over the same encrypted Stratum V2 transport as everything else, so declaring a custom job does not sacrifice any of V2's security guarantees. You need a full node to feed the JDC, which is why job declaration pairs naturally with miners who already value running their own infrastructure.
It is optional, and still rolling out
Two honest caveats. First, job declaration is optional: you get every other benefit of Stratum V2, encryption, authentication, smaller messages, faster jobs, simply by pointing an SV2 miner at a pool. You only take on job declaration if you also want to control transaction selection.
Second, it is the newest part of the ecosystem and is still being deployed across firmware and pools. The protocol is fully specified and ready; adoption is the work in progress. If you want just the security and speed today, that is already available on every mkpool SV2 endpoint, listed in the ports reference.
Why solo miners should care
Solo mining is already the most sovereign way to mine: your hardware, your address, your block. Job declaration completes the picture by adding your choice of transactions. For a solo miner running their own node, it means a block you find is yours in every sense, not just the reward, but the very contents. That is the fullest expression of independent mining, and it is exactly the direction Stratum V2 was built to enable.
If this is your first stop, back up to Stratum V2 explained for the whole protocol, then see the firmware guide for what supports it today.
Comments
Loading comments...
Leave a comment