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/Operations

Failure modes

Diagnose selected startup, wallet, consolidation, mining, and reward-claim log messages.

Advanced5 min readAssumes a running client and familiarity with the configuration pages.

Start with the first relevant log line. Similar symptoms can have different causes, and timing, status endpoints and effective settings all help separate them.

Info
Verified against

Client 5.4.0 and 5.5.0 (testnet) and 1.0.0 pre-release (mainnet), September 2026. Exact log text is version-sensitive.

Startup#

Log textMeaningOperator action
InaccessibleObjectException: module java.base does not "opens java.lang"Running on a JDK newer than 11; Guice performs reflection later JDKs refuseSet JAVA_HOME to Java 11 in the launcher and put its bin first on PATH. Invoking the start script directly inherits the system default

For validation errors, see Configuration overview; it explains how startup reports invalid and contradictory settings.

Tip
Compare effective settings with your overrides

The client prints a summary of effective settings at startup, for example Wallet limits: maxInputs=75 pageSize=500 …. Compare the relevant values with your intended overrides in lithos.conf. A mismatch means the running process did not load the file or value you expected.

Wallet and funding#

Log textMeaningOperator action
WalletManager could not cover <n> nanoERGThe wallet could not fund a transactionQuery the Ergo node's /wallet/status endpoint, not the Lithos API. If the wallet is unlocked, inspect the preceding wallet-refresh line for the available, reserved, reward and partial counts, and report those with the requested amount
N wallet box(es) are at addresses this client cannot sign for and are unspendableAt least one box belongs to an address index outside the keys derived by this clientIncrease node.numAddresses far enough to cover that index; its accepted maximum is 1000. For lending, keep emission.maxLenderKeys at or below node.numAddresses

Do not compare a consolidation target with the raw UTXO total. Check the reward-box count separately, using the Lithos client's /collateral/rewards endpoint, because reward boxes are not eligible consolidation inputs.

Consolidation#

Log textMeaningOperator action
transport failure calling /wallet/boxes/unspent: timeout, with okhttp3.RealCall.timeoutExitThe engine's node request timed outRecord the elapsed time and compare it with wallet.node-call-timeout-ms and wallet.node-read-timeout-ms. See Wallet and consolidation before changing a timeout or the page size
Wallet refreshed - … PARTIALThe selection cache did not hold the whole walletCheck both wallet.max-descriptors and wallet.max-descriptor-bytes; a wallet of large boxes reaches the byte bound first. Where excluded boxes fill the cache, consolidation finds nothing eligible and the pass ends without work
consolidation attempt expiredThe end-to-end consolidation budget expiredConfirm wallet.consolidation.attempt-timeout-ms exceeds wallet.inventory-walk-timeout-ms, as the wallet configuration page requires
Consolidation capped at N of M transaction(s): optional work may hold X inputsThe pass requested M transactions; the optional-input budget allowed NThe effective count is bounded by both wallet.consolidation.num-transactions and available wallet.max-optional-inputs capacity. Raising num-transactions cannot exceed that capacity
target unreachable from eligible boxes aloneExcluded boxes already exceed wallet.consolidation.target-utxosInformational. The client consolidates eligible boxes but cannot reduce the wallet below the excluded-box count. A pass reporting no-work has finished, not failed

Mining#

Log textMeaningOperator action
No usable difficulty commitment ... may be considered fraudulentNo active commitment is currently usableExpected at first startup until dictionary synchronization and commitment activation complete. Work submitted before the commitment is active is not payable. If it persists after synchronization, check the Commitment tab under Mining, Difficulty in the web interface
Stratum is not accepting rigs on <address>, port <port>The stratum could not listen on stratum.bindAddress and stratum.stratumPort. The rest of the client keeps running, but no rig can connectCheck that bindAddress is an address this machine holds and that no other program uses the port, then restart. See Which rigs can connect
Auto-commit is off (state.autoCommit)The client will not register you or change your commitment on its ownExpected. Commit from the Commitment tab, or set state.autoCommit = true. An unregistered miner cannot submit NISPs
Auto-commit waiting on ...Registration or a commitment change is waiting on the named conditionNo action for sync, confirmation or the 845-block replacement rule. Logged again only when the reason changes
Difficulty commitment ... is on chainThe confirmed commitment equals stratum.diffNone. The client stops checking until the next restart
Cannot submit NISPs until commit (height,diff) is in effectThe commitment exists and is waiting to activateNo action; this is progress rather than a fault
Node left N of M requested transaction(s) out of candidate ...Your Ergo node left the named transactions out of the block it built. The rest of the package is still minedSearch the Ergo node's log for the transaction id. A Not included transaction line gives the reason, and no such line means one of its inputs was missing or already spent
Node omitted genesis ... skipping collateral ... and rebuildingYour node left this block's genesis transaction out, so the block would not have been a Lithos block. The client draws another box, up to three times per blockSearch the Ergo node's log for the genesis transaction id. If it repeats every block, report it
N of M collateral boxes pay into a rollup chain this build does not compile and were skippedThose boxes name a rollup chain in their R8 that this release cannot pay into, so they are never drawnNone while other boxes remain. If the line ends None are left, so blocks are mined solo, update the client
The emissions source's ...-byte, ...-cost allowance holds N of M queue spendsYour block carries only the queue spends that fit the emissions source's byte and cost limitsRaise maxBytes or maxCost under stratum.candidate.sources.emissions, or lower its maxTxs or emission.candidateActivates
Only N of M pinned input(s) can be set asideThe wallet has too few plain boxes of at least 0.001 ERG to fund fraud proofs inside your own blockAdd a plain wallet box of 0.001 ERG or more, or lower stratum.candidate.pinnedInputs. Fraud proofs still reach the chain through the mempool
Danger
A fallback that is logged but not fatal

Collateral retrieval failed ... falling back to solo-mining means the client could not obtain collateral and is mining solo. Mining continues and the hardware stays busy, so nothing looks wrong, but pooled rewards are not being earned.

Confirm pooled mining from the stratum-job log line by checking usesCollateral=true. Do not infer pooled operation from the absence of an error.

Reward claims#

Log textMeaningOperator action
400 Nothing to claim - another claim is already sweeping these boxes - try again shortlyAnother claim currently owns the unlocked reward boxesDo not retry until the previously broadcast claim transaction confirms or fails. The response does not mean that no rewards are claimable
Edit this page on GitHubsynced from e0ca86a
← PreviousTasks and dispatchersNext →Reporting issues
On this page
  • Startup
  • Wallet and funding
  • Consolidation
  • Mining
  • Reward claims