mining.set_difficulty stratum method detailed information

Follow and share now!

mining.set_difficulty is one of the in the stratum protocol defined methods for communication between mining pools and miners of encrypted currencies.

Function of mining.set_difficulty:

This method call is only sent from an pool to a miners and expect no response. The single argument is the new minimal difficulty, shares must have to get accepted by the pool. Miners should start using the new difficulty, with the start of the next job, so most pools send the method mining.notify with the argument Clean Jobs as true immediately afterward to force a new job start. The initial difficulty become send in the response of mining.subscript, but some pools answer just with a dummy difficulty value and overwrites this direct by a call of mining.set_difficulty. Pools may adjust the difficulty according to the hashing power of their clients the difficulty individuality, to reduce network traffic and computing time.


Don’t be confused by the difficulty, need to be a new block for the blockchain of the currency, often called the network difficulty. That’s send in the argument bits of the method mining.notify.

mining.set_difficulty call:


Extra line-wrapping for readability. Spaces get ignored, a call ends with a line feed. (UTF-8 10/0x0A)


"id": <request id of any type>,
"method": "mining.set_difficulty",
"params": [ <difficulty as number> ]

The id field doesn’t matter, mining.set_difficulty doesn’t expect a response. The params list contains just the difficulty as a single number.


"id": null,
"method": "mining.set_difficulty",
"params": [ 4096 ]

mining.set_difficulty response:

mining.set_difficulty doesn’t have a defined response.

Java example implementation:

public final class StratumSender {
private static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
private static final String STRATUM_REQUEST_BASE =
private final OutputStream out;
public StratumSender(final OutputStream out) {
if(out == null) {
throw new IllegalArgumentException("out == null");
this.out = out;
public void setDifficulty(final int newDiff) {
if(newDiff < 1) {
throw new IllegalArgumentException("Possible lowest difficulty is 1.");
final String f = String.format(STRATUM_REQUEST_BASE, null,
"mining.set_difficulty", newDiff);
final byte[] bs = f.getBytes(DEFAULT_CHARSET);
try {
} catch (final IOException e) {
throw new RuntimeException(e);
}// don't forget to flush the output

Post Your Comment Here

Your email address will not be published. Required fields are marked *