LithosDocs
ProtocolPayoutsTokenStatsDocs
Start mining
Documentation home
Protocol
  • Lithos Protocol
  • LFSM
    • Rollups
    • NISPs
    • Emissions
    • Mining on Lithos
    • Candidate building
    • Ergo Voting
  • LithosDex
    • Trading with orders
    • Providing liquidity
Run Lithos
  • Startup guide
    • Setting up an Ergo testnet node
  • Configuration
    • Node connection and security
    • Stratum and difficulty
    • Block packages
    • Batching and orders
    • Collateral and emission
    • Wallet and consolidation
    • Statistics and web panels
    • Synchronization and storage
    • Tasks and dispatchers
    • Failure modes
    • Reporting issues
Client API
  • Overview
    • getLithos client information
    • getList UTXO ids for blocks
    • getUTXO ids by block height
    • getBlock info by UTXO id
    • postBlock info for multiple UTXO ids
    • getGet a block's miner set
    • getList all pool blocks
    • getGet Lithos payouts
    • getStatistics overview
    • getMining and payment totals
    • getMining statistics by hour or day
    • getEstimate Lithos hashrate
    • getNetwork difficulty by epoch
    • getThis client's own hashrate
    • getThis client's hashrate over time
    • getThis client's payouts and claims
    • getCollateral inventory
    • getLocal mining activity
    • getCollateral market snapshot
    • getList queue boxes
    • getList the active set
    • getPermit price history
    • getYour locked block rewards
    • postClaim unlocked block rewards
    • postQuote joining the queue
    • postJoin the collateral queue
    • getLithosDex pool state
    • getLithosDex fee vault state
    • getList your outstanding orders
    • postQuote a swap order
    • postPlace a swap order
    • postQuote a deposit order
    • postPlace a deposit order
    • postQuote a redeem order
    • postPlace a redeem order
    • postCancel an order
    • postQuote a swap
    • postQuote a swap by desired output
    • postExecute a swap
    • postQuote a liquidity deposit
    • postDeposit liquidity
    • postQuote a liquidity redemption
    • postRedeem liquidity
    • getList liquidity provisions
    • postClaim settled fees for a provision
    • postQuote a provision resize
    • postResize a provision
    • postCheck a pending fee flush
    • postFlush pending fees to the vault
    • getPool-wide fee history
    • getPool price history
    • getRecent pool activity
    • getFee history for one provision
    • getWallet balances and lending status
    • getGet Stratum information
    • getGet candidate settings
    • getGet difficulty commitment
    • postCommit a difficulty
    • getGet best NISP at height
Lithos

A decentralized mining pool protocol on Ergo. Miners build their own blocks; contracts pay them for proven work.

Live on Ergo mainnet
Protocol
  • How Lithos works
  • Mining on Lithos
  • NISPs
  • Emissions
  • LFSM contracts
Run Lithos
  • Startup guide
  • Configuration
  • LithosDex
  • Client API
  • Failure modes
Network
  • Live stats
  • Public stats API
  • Ergo Platform↗
  • SOAT Miner↗
Community
  • Telegram↗
  • X / Twitter↗
  • GitHub↗
Lithos
© 2026 Lithos Protocol. Open source under the MIT licence.λίθος — stone
Docs/Run Lithos/Configuration

Stratum and difficulty

The stratum server your mining software connects to, and the difficulty that decides your payout.

Standard5 min readFor anyone running the Lithos client. No Ergo or smart contract experience needed.

The stratum block controls the local server your mining software connects to, and the difficulty you commit to on chain. This page covers everything under stratum except stratum.candidate, which is large enough to have its own page.

stratum.diff is the most consequential setting in the whole file. It decides both what you are paid and whether you are paid at all.

Difficulty#

SettingDefaultRangeWhat it does
stratum.diff4.0GA parseable difficulty above zero. RequiredThe difficulty the stratum serves until your difficulty commitment takes effect, and the one state.autoCommit commits
stratum.diffRefreshInterval600001000 to 3600000 ms. RequiredHow often the client re-reads your committed difficulty from chain state
stratum.forceConfigDifffalsetrue or falseMine at diff instead of your on-chain commitment. For testing only

The format is a number followed by a power-of-ten suffix: K, M, G, T or P. So 4.0G, 1.52M and 300.1K are all valid. Startup parses the value and refuses anything it cannot read or that resolves to zero or less.

Choosing the number is a real decision, covered in the startup guide. In short: your payout is proportional to your committed difficulty, but you earn nothing for a block unless you produced 10 super shares in the 60 blocks before it. Start at a value that averages 17 super shares per window, then raise it toward one that averages 15.

Testing without committing#

Nothing is written on chain until you commit from the web interface or turn on state.autoCommit, which ships off. That leaves you free to try values first. forceConfigDiff makes the client mine at the diff in your file rather than at whatever it has committed, so with both settings as below you can measure super share rates at several difficulties without writing any of them to the blockchain:

lithos-client/bin/lithos.conf
hocon
stratum.forceConfigDiff = true
state.autoCommit = false

When you have chosen a value, set forceConfigDiff = false and commit it from the Commitment tab, or set autoCommit = true to have the client commit diff. Both are described in Tasks and dispatchers.

Warning
Turn forceConfigDiff off before mining for real

With forceConfigDiff = true, mining below your on-chain commitment produces NISPs that will not be accepted. The setting exists to measure hardware, not to run on.

The stratum server#

SettingDefaultRangeWhat it does
stratum.stratumPort44441 to 65535. RequiredThe TCP port your mining software connects to
stratum.bindAddress0.0.0.0An IPv4 or IPv6 address, or a host name, without a portThe network interface the stratum listens on. 0.0.0.0 listens on all of them
stratum.connectionTimeout600001000 to 3600000 ms. RequiredHow long a silent connection is held before it is dropped
stratum.blockRefreshInterval1000100 to 600000 ms. RequiredHow often the server checks whether it has new work to push
stratum.reduceShareMessagestruetrue or false. RequiredRaise the difficulty reported to your mining software without changing what Lithos pays you at
stratum.reductionMultiplier1000010, 100, 1000 or 10000How many times your committed difficulty the stratum sends while reduceShareMessages is on

Which rigs can connect#

bindAddress decides which network the stratum accepts rigs from. It ships at 0.0.0.0, which accepts rigs on every network this machine is connected to.

bindAddressRigs accepted from
0.0.0.0 (default)Any network this machine is on
127.0.0.1This machine only. Use it when your mining software runs on the same computer as the client
One of this machine's LAN addresses, such as 192.168.1.20The network that address belongs to
:: or ::1The IPv6 equivalents of 0.0.0.0 and 127.0.0.1
lithos-client/bin/lithos.conf
hocon
stratum.bindAddress = "127.0.0.1"

Write the address alone. The port comes from stratumPort, so "127.0.0.1:4444" is rejected.

An address this machine does not have stops the stratum, not the client. Startup checks only that the value is an address or a host name that resolves. If the machine holds no such address, for example because a LAN address changed after a router restart, the client starts and serves its API and web interface, but no rig can connect. The log shows:

Stratum is not accepting rigs on <address>, port <port>: ...

Fix the address and restart the client. If your router hands out addresses automatically, give this machine a fixed LAN address before binding to it, or leave bindAddress at 0.0.0.0.

Share traffic#

At low difficulties your mining software may send enough shares to trigger errors about duplicate or old shares. reduceShareMessages raises the stratum difficulty to reductionMultiplier times your committed difficulty, so your mining software sends fewer shares. The difficulty Lithos evaluates and pays you at is unchanged.

reductionMultiplierStratum difficultyShares sent per super share
10000 (default)Equal to the super-share difficulty1. Every accepted share is a super share
10001/10 of the super-share difficultyAbout 10
1001/100 of the super-share difficultyAbout 100
101/1,000 of the super-share difficultyAbout 1,000

At 10000, your mining software's accepted-share count is your super-share count, so you can read it straight from its output.

The cost is how rarely your mining software sends a share. At a high committed difficulty that can be a few an hour, so its hashrate and share readouts barely move. A lower multiplier gives your mining software, and the Mining panel, more shares to measure from. Every share is still checked against the super-share difficulty, so NISPs are built the same at any setting.

It ships on at 10000. There is generally no reason to turn it off outside debugging.

Extra nonce#

SettingDefaultRangeWhat it does
stratum.extraNonce1Size21 to 8 bytes. RequiredHex bytes of extraNonce1 handed to each connection
stratum.rotateExtraNonceInterval00 to 3600000 msHow long a connection may go without submitting work before its extraNonce1 is rotated. 0 disables rotation

extraNonce1 splits the nonce space between connections so two rigs never search the same range. The size trades that split against the space each rig gets to work through in a single job.

Two is recommended and shipped. It leaves each rig a large nonce space for one job. Raising it narrows that space, which invites duplicate shares and extra nonce changes in your mining software.

Rotation exists only for setups that raised the size above 2 and are running out of distinct values. At the shipped size you should not need it, which is why it ships disabled.

Next steps#

  • Block packages: everything under stratum.candidate.
  • Choosing a difficulty: how to pick diff.
Edit this page on GitHubsynced from e0ca86a
← PreviousNode connection and securityNext →Block packages
On this page
  • Difficulty
  • Testing without committing
  • The stratum server
  • Which rigs can connect
  • Share traffic
  • Extra nonce
  • Next steps