Repository navigation
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.startHeightis no longer read. The walk now startsstartBehindBlocksbehind 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 = falseto skip it. - With
wallet.consolidation.enabled = true,wallet.consolidation.target-utxosmust be abovewallet.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
cacheRefreshMsbelow the node'sblockCandidateGenerationInterval(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.startHeightparameter has been removed from the config. - Overall profitability improvements should be anywhere from 20 - 40%.
Difficulty Forwards
broadcastAfterBlocksnow defaults to3instead of96.
Mining
- A share for a job the client no longer holds is now rejected as stale (error 21).
API
GET /mining/candidatenow reportscacheRefreshMs, and itscollateralStrategydescription 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), replacingstartHeight. - Added
wallet.reconcile:cancel-stale-sends(true),cancel-after-blocks(20, 5 to 1440) andhold-ceiling-ms(21600000, 1 hour to 7 days). - Added
wallet.seed:on-initial-commitment(true) andtarget-utxos(32, 2 to 256). batching.forwards.broadcastAfterBlocksnow defaults to3.
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
cacheRefreshMson the candidate configuration page. - Documented when held wallet boxes are released, and the
wallet.reconcilesettings. - Documented the wallet split on first registration and the
wallet.seedsettings, including the shortfall warning and how to fill the rest. - Updated the storage rent configuration docs for
lookaheadBlocksandstartBehindBlocks. - 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.