Skip to content

Lithos Mainnet 1.0.5

Latest

Choose a tag to compare

@K-Singh K-Singh released this 20 Oct 15:41

Difficulty Forwards and Wallet Fixes

Adds difficulty forwards: peer-to-peer forwards / futures contracts on Ergo's average difficulty, settled on chain in LIT, with a new Extensions section on the webpanel to trade them. The rollups candidate source is back on and the reservation bug has been fixed. The client now sweeps mining rewards on its own and unlocks the node wallet itself. This release also fixes join and wallet problems reported from 1.0.3.

This update resets the statistics database, and will require a resync of statistics from the initial start height. This does not effect normal Lithos operations such as mining, submitting, payouts, or lending. It only prevents certain API and webpanel usages while statistics resync.

Commit: d519a3f

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

  • On mainnet, the client now refuses to start while lithos.apiKeyHash is still the shipped hash of "hello". Set your own key's hash before starting. Installs made with Lithos Launcher already have their own key.
  • The client now unlocks the node wallet itself using node.pass. Lender keys are now pre-derived to prevent problems on Joins.
  • The first start migrates mining statistics to schema 8, then deletes the older schema stores. Rolling back to 1.0.4 afterwards starts its statistics history empty.

Difficulty Forwards

  • Added difficulty forwards. These are contracts that allow users to go long or short on Ergo's average network difficulty. Windows run anywhere from 1 to 120 epochs.
  • Each side pays 7.5 LIT in fees: 2.5 LIT to whoever settles, and 5 LIT to the difficulty accumulator.
  • The client records each epoch's difficulty and settles finished positions on its own, fee-less in your own blocks and by broadcast otherwise. Settlements and accumulator updates pay a small amount of LIT.
  • Windows shorter than 8 epochs are limited to 2,000 LIT of margin by default (this can be changed via config).
  • The next epoch's difficulty is projected from the chain with Ergo's retarget rule.

Wallet

  • Mining rewards are swept to your primary address automatically, every 30 minutes by default.
  • A single-box reservation now takes the smallest box that covers it, instead of the first one the node lists.
  • A transaction the node refuses now releases its inputs straight away.
  • Wallets with more than 2,048 boxes now settle uncertain reservations correctly.
  • Freed boxes count toward the spendable balance as soon as they are released.
  • A wallet selection that times out now answers 503 "Wallet busy" instead of INSUFFICIENT_FUNDS.
  • wallet.max-inputs is now the input cap everywhere, so raising it no longer breaks consolidation.

Collateral

  • Joining and checking a join now agree on how many positions fit, and the quote shows fitting, keysDerivable and a WALLET_LOCKED reason.
  • Joins of up to 25 positions are accepted. A join the engine could not run answers 503 saying nothing was sent, instead of a 500.
  • A join that cannot place every position sends nothing, and its 422 ends with fitting=N.
  • /collateral/wallet now reports reserved boxes and nanoERG.
  • Added lending earnings to statistics

Block Candidates

  • The rollups candidate source is enabled again.
  • Candidate builds are now bounded, so congested build pools no longer stall the transaction engine.
  • Node refusals (double spends, spent inputs) now trigger the matching recovery instead of a generic error.
  • Queued optional work no longer refuses NISP submissions.
  • Fixed certain sends failing when AppKit returned a quoted transaction id.

Mining

  • stratum.diff now defaults to 4.0M. Configs that set their own value keep it.
  • A rig disconnecting is now logged quietly instead of as an error with a stack trace.
  • Duplicate-share tracking is capped per job.
  • A fraud proof that no longer applies is logged as a warning instead of an error.

API

  • Added /forwards endpoints: accumulator, offers, market, positions and history, plus check-then-send routes to create, fill, cancel and settle. Reads and checks are open; positions, history and transactions need an API key.
  • Added GET /stats/collateral/earnings (API key required).
  • Collateral routes now answer 400 for a missing JSON body, instead of 500.

Configuration

  • Added batching.forwards for recording and settling, and forwards.offers for limits on your own offers.
  • Added stratum.candidate.sources.forwards, enabled by default.
  • Added wallet.reward-sweep (enabled = true, interval-ms = 1800000).
  • Added stats.storage.pruneOldSchemas, on by default.
  • stratum.candidate.sources.rollups.enabled is true again.
  • wallet.max-inputs is now validated to at most 150.

Webpanel

  • Added the Extensions section with Difficulty Forwards UI.
  • The forwards difficulty chart can switch to a moving average of 4 to 120 epochs.
  • Added a lending earnings card to Collateral, and box ages against the clearance age in the fee market.
  • A banner across Mining, Collateral and Extensions now warns while statistics are still catching up.
  • The block package now colors difficulty forward and LithosDex flush transactions.
  • The hashrate input takes a unit from a list, which fixes entry on iOS.
  • Open claims now count down to evaluation as well as to payout.
  • Added an optional setting to remember the API key in your browser. It is off by default.

WebDocs

  • Added a difficulty forwards page, and documented reward sweeps, reserved boxes, automatic wallet unlock, manual joins and the mainnet API key check (for "hello").
  • Updated the docs for the mainnet launch and Lithos Launcher.
  • Updated the configuration and API docs to the latest client state.