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.