Skip to main content

Stratum Protocol

Stratum v1 is the de-facto protocol Bitcoin mining pools use to talk to miners. NMMiner is a Stratum v1 client.

This page only documents the public, well-known Stratum messages every pool understands. Pool-specific extensions and internal implementation details are out of scope.

Connection

  • Transport: TCP, or TLS-wrapped TCP for SSL pools.
  • Address scheme:
    • stratum+tcp://host:port — plain TCP.
    • stratum+ssl://host:port — TLS.
  • Worker identity: the wallet address optionally followed by .workerName, e.g. bc1q....workerName.

The miner keeps the socket open for the entire session. If the pool drops it, NMMiner reconnects automatically.

Message flow

What each message means to you

MessagePlain meaning
mining.subscribe"Hi, I want work."
mining.authorize"I am this wallet."
mining.set_difficultyPool sets how easy / hard a share has to be. NMMiner s diff is tiny.
mining.notify"Here is a new block template to work on." Old jobs are obsolete.
mining.submit"Here is a hash that meets the diff."

That is all there is to the protocol from the miner s side.

What NMMiner shows you on screen / in NM Monitor

FieldComes from
PoolThe configured URL (host and port).
DiffLatest mining.set_difficulty.
AcceptedCount of true replies to mining.submit.
RejectedCount of false replies to mining.submit.
Session BestThe highest-difficulty share produced this boot.
Ever BestThe highest-difficulty share produced across all boots.
HashrateInternal moving average of hashes per second.

See also: Pool List for known-compatible endpoints.