Skip to content

Lithos Mainnet 1.0.6

Latest

Choose a tag to compare

@K-Singh K-Singh released this 23 Oct 17:32

Block Finding & Profitability Improvements

This critical update adds changes to how the node block cache is managed by the client, which should lead to improvements of at least 7% in block finding. Storage rent collection profitability should also be increased by a minimum of 20% due to scanning modifications. New miners' wallets are split into plain boxes once their first registration confirms, and reservations and reconciliations have been re-worked to include TTLs and better chained transaction handling.

Commit: 14ad1fe

To run the application, unzip the file and then run the script in the /bin directory.

./lithos-client

This will automatically read from lithos.conf in your /bin folder.

To run with a custom configuration file add the argument -Dconfig.file=

./lithos-client "-Dconfig.file=path/to/custom/config/file.conf"

To build from source run:

sbt dist

This will create a new zip file in the /target/universal directory


Release Notes:

Upgrade Notes

  • stratum.candidate.sources.rent.startHeight is no longer read. The walk now starts startBehindBlocks behind the boundary, exactly 4 years (in blocks) behind the current height.
  • Once a new miner's first registration confirms, the client splits the wallet into up to 32 plain boxes in one transaction at the 0.001 ERG minimum fee. Set wallet.seed.on-initial-commitment = false to skip it.
  • With wallet.consolidation.enabled = true, wallet.consolidation.target-utxos must be above wallet.seed.target-utxos (32), or the client refuses to start.

Block Candidates

  • The served package is now re-sent to the node every cacheRefreshMs (30 seconds). This improves Lithos block finds on longer rounds (more than 120 seconds).
  • A re-send the node still holds changes nothing. Once the node has rebuilt, the re-send brings back the Lithos candidate and rigs get a new job. Solo jobs are re-sent too.
  • Keep cacheRefreshMs below the node's blockCandidateGenerationInterval (60 seconds by default).
  • With highestFee, bids now tie when their priority fees fall in the same 0.001 ERG step, rounded down, and the block's collateral box is drawn at random among them, regardless of age. This increases the set of collateral that miners can choose from, and will lead to less re-builds and faster jobs over the stratum. It also means that lenders cannot have 1 nanoERG bidding wars as is currently occurring.
  • Overdue boxes still go oldest first, with the same 0.001 ERG step among boxes of the same age.

Wallet

  • Reservations have a TTL of about 6 hours, after which, outstanding reservations on UTXOs which are not reconciled are returned to their confirmed states. Candidate and uncertain reservations are released at the same point.
  • Reservations from chained transactions are now handled properly.
  • Wallet-only spends that cannot be reconciled on chain will have a cancellation transaction sent after 20-blocks (this should be extremely rare but can help with some edge cases)
  • A cancelled join frees its lender key.
  • Each reconcile pass now walks the mempool twice instead of once per held send.
  • Once a new miner's first registration confirms, the largest plain box is split into seed boxes to help prevent initial UTXO selection issues that could occur. Each seed box holds 0.05 ERG, or twice your NISP bond plus fees when that is more.
  • At most half the ERG amount may be used for wallet seeding.
  • A transform that is not longer eligible for its rollup is logged as an warning.

Storage Rent

  • Scanning now accounts for creation height differences better.
  • Boxes due in the next block are now found in time for it.
  • Boxes are now found before they fall due, so the 30-second scan timer no longer delays a newly due box.
  • Storage rent scans automatically start 720 blocks before the current height at startup time. The previous rent.startHeight parameter has been removed from the config.
  • Overall profitability improvements should be anywhere from 20 - 40%.

Difficulty Forwards

  • broadcastAfterBlocks now defaults to 3 instead of 96.

Mining

  • A share for a job the client no longer holds is now rejected as stale (error 21).

API

  • GET /mining/candidate now reports cacheRefreshMs, and its collateralStrategy description gives the 0.001 ERG bid step.

Configuration

  • Added stratum.candidate.cacheRefreshMs (30000, 20000 to 55000).
  • Added stratum.candidate.sources.rent.lookaheadBlocks (100): blocks read past the due frontier.
  • Added stratum.candidate.sources.rent.startBehindBlocks (720), replacing startHeight.
  • Added wallet.reconcile: cancel-stale-sends (true), cancel-after-blocks (20, 5 to 1440) and hold-ceiling-ms (21600000, 1 hour to 7 days).
  • Added wallet.seed: on-initial-commitment (true) and target-utxos (32, 2 to 256).
  • batching.forwards.broadcastAfterBlocks now defaults to 3.

Webpanel

  • The Portfolio settle note now gives the new broadcast timing.
  • The join page's priority fee note now says miners compare fees in 0.001 ERG steps.

WebDocs

  • Documented the candidate keepalive and cacheRefreshMs on the candidate configuration page.
  • Documented when held wallet boxes are released, and the wallet.reconcile settings.
  • Documented the wallet split on first registration and the wallet.seed settings, including the shortfall warning and how to fill the rest.
  • Updated the storage rent configuration docs for lookaheadBlocks and startBehindBlocks.
  • Updated the collateral box draw on the candidate and candidate building pages: bids compare in 0.001 ERG steps of priority fee, drawn at random within a step. The emission page now says a fee between two steps ranks with the lower one.
  • Updated the forwards broadcast default and settlement timing on the batching and difficulty forwards pages.
  • Regenerated the API reference.