Skip to content

Roadmap for NOMP Core

Matthew Little edited this page May 9, 2014 · 5 revisions

Instant Miner Hashrate Stats

With the current system it takes the length of the stats hashrate window (10 minutes by default I believe) to get an accurate average of a miners hashrate. If we add a firstShare: true flag to the stratum servers share emitter we can use that flag in the redis hash stat storage in order to determine a somewhat accurage hashrate as soon as possible rather than waiting for the hashrate window time to pass.

Historical Stats

Live stats are collected often, for example every 5 seconds - which gives a really cool experience on the website with live data graphs. But we want to store stats over time to have historical data to plot our fancy graphs. But for obvious scalability reasons we cant save 24 hours of stat snapshots taken every 10 seconds - nor can we plot that much data client-side. So stats need to be saved for the current hour, then at the top of the hour the array of 10 second stat snapshots must be averaged into a 1 hour stat snapshot the inserted into db - this way we can easily have days of historical stats in database. And also not overload client web browsers with trying to plot thousands of data points. A sliding hour also needs to be implement in a similar fashion so users can see current stats for "this" hour - for example if current time is 2:13pm then it should be able to show average stats from 1:13pm to 2:13pm.

Individual Miner Stats

In order to be able to display stats per user (especially historical stats) we need a way to refactor data storage in redis so that it store one redis key per user, something like minerStats_1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T .. these stats will be modifying during the following types of operations

  • When shares are inserted
  • When payment processing does something involving the miner
  • When hourly snap shots are averaged

Better Charts

Charts need to be converted to highcharts. NVD3 is too unstable and not featured enough. We also need to theme highcharts because its ugly by default.

Better Logging

By default NOMP is started like a simple, quickly ran then exited script - rather than the long running daemon/service actually it is:

  • Output all goes to stdout (console) so its up to the user to forward that output into a log file - this needs to be changed so its logs to different files by default, such as errors.log, warnings.log, info.log, and/or debug.log
  • NOMP should not require extra setup to run as a background long term service (forever, nohup, screen, etc)

Adding/Removing/Modifying Pools NOMP Restart

The CLI feature allows this to now be implemented. A pool op simply adds/removes/edits a pool.js file then runs something like node cli.js poolapply dogecoin.json which will trigger sending out IPC commands for all forks (stratum pools, payment processor, website, stats) to handle appropriately. Adding/removing pools is easy, but applying a change to a pool will likely require that pool to restart (connections restarted for the pool)

Admin Web Panel

The admin panel will require a super-secure password authentication and will have the following features:

  • Stats a pool-op should only see
  • A pretty and easy to use form for editing pool.json files
  • A manual way to do things like payouts
  • See system load/stability/stratum server stats

The NOMP Desktop App

Lets go over what happens when the majority of normal people (non-programmers and those who aren't tech-savvy) who attempt mining:

  1. Forced to register for an account on (likely) an MPOS pool
  2. End up at the "getting started" page
  3. See a programmer-oriented, half-assed flow chart of sorts which explains what mining apps to use with which types of hardware
  4. Some are able to figure that out and download, then they see a bunch of command line arguments
  5. By now we are probably around to less than 10% of people (probably closer to 1%)
  6. Now these people start mining away, leaving their coins in the pool, and way too often either A) the pool ops scams their miners, B) the pool gets hacked and coins stolen, C) pool op isn't able to maintain their house-of-cards poorly designed php+mysql+python+crons pool tech stack and coins get lost.

This is a tragedy and we can completely solve almost all these problems:

  1. An aspiring miner comes across a NOMP pool, clicks "Start mining" (no registration process)
  2. A lightweight C# app will download (we are targeting Windows users here and C# rocks, besides we can use Mono to port it OSX or linux later on so STFU its 2014)
  3. User runs app (no pointless installation process)
  4. The user selects a coin/switching port and their system starts mining in seconds.
  5. Miners are paid automatically to the address that the app generates automatically

Here is how that is possible:

  • The app uses the mining-pubkey method - a private key and public mining key are automatically and securely be generated - then the user will be prompted to back the file and print to paper.
  • NOMP app acts as a thin-client that uses NOMP api to look up total paid balances to miner's address and pending balances which haven't reached auto-payment threshold yet
  • Pools sites will give their miners a download link that points to a central NOMP Organization website where the latest NOMP desktop app will reside. For example a pool like johnspool.com would link their users to download the NOMP app with a url like nompsite.com/nomp_download.zip?pool=johnspool.com and the nompsite.com server would zip the latest NOMP App binary with a config file set to johnspool.com
  • The nomp desktop app will connect to that pool and provide the user with options on what coins or switching-ports they want to mine on. Then it would automatically select the best mining app for that user's specific hardware and that specific hashing algorithm, and to noobs (normal people who aren't programmers), the output of mining apps are gibberish - so the NOMP app will run the mining app in the background and parse the output in order to display more user-friendly data.
  • The NOMP app can also report additional statistics such as cpu/gpu temperatures for example, which the user could they see along with the rest of their stats on the website from their computer/phone.
  • When a user decides to spend their coins, the NOMP app be able to grab the latest wallet binaries (scanned for malicious code) from the official nomp organization website, install, then automatically import their private key into the coin wallet

Auto-Exchanging Coins for Payout

Then there is the big elephant in the room: auto-exchanging mined coins in order to payout miners in a single type of coin. This is big with some of the POS coins that can no longer be mined. Due to the amount of effort and ability involved to implement a well functioning profit-switching auto-exchanging pool - there are a few that are making quite a deal of profit. These people obviously don't want a well designed auto-exchange pool released open source and working out-of-the-box. There are also people/parties who are interested in paying or offering pool fee % in return for getting the code developed and exclusive access to it (so closed source). If a good enough offer is made then this is what may happen, otherwise, it will be implemented soon (hopefully) and open sourced. If a closed-source deal does go through - then it will have an exclusivity time-limit so that eventually it will be open sourced for all to use.