Giter VIP home page Giter VIP logo

wth's Introduction

WTH - What the Hash?

WTH Web Interface

PLEASE NOTE: This is beta software and may not work as intended. Please file issues if you find something broken!

  • This is a new release of software. It will have bugs.
  • I mostly mine ETH, so mining other coins may or may not cause problems. Report any you find, please.

What is "What the Hash?"?

WTH is a "consolidator", that gathers data from different APIs, such as those on miners and pools, to bring it all together into one interface (console, web, and/or API).

See: More Feature Screenshots of Modules

WTH was designed with the goal of providing an expandable, quick health status / earnings viewer for cryptocurrency related interests, miners, etc.

It was originally developed to allow me to get a fast view on the health of all my GPU/CPU miners, regardless of miner software or pool software. Mostly, I was frustrated at looking at half a dozen or more web pages just to check in on miners, pools, and portfolios.

It isn't meant to compete with fancy web UIs with charts and graphs (yet), but can easily run alongside those. I have found that I rely less and less on the remote pool web interfaces to give me updates in addition to things like the portfolio not requiring me to share my holdings with external websites.

With very little interaction, you should be able to see the basics of your cryptocurrency world. Adding more mining pools, staking & liquidity pools, crypto portfolios, and more is the plan.

WTH also offers an API for other systems to use the collected data. The primary goal of this is so we can offer a more advanced Web UI in the future, but it also tries to serve as a single API protocol for many different miners and pools out in the wild.

You can help us and add your own modules as well! The coding required can be fairly simplistic, depending on the remote API, and help from us can get your module added quickly. Don't program? You can request the new module, but those who donate get the most attention (see donation addresses below). Requests can go here: Ideas

WTH should be considered beta software. I wrote it as a quick tool for myself, then it proved so helpful, I started to grow it, and then I decided to release it. Contributions to the code base are welcome, but only do so if you understand that this software is beta and things will change.

Join the new discord here

By default, WTH offers the following modes:

Installation - Windows

  • Run the following to install automatically: #> .\install_win.ps1
  • Copy wth_config_example.yml to wth_config.yml
  • Edit config file (see Configuration)
  • #> .\wth.rb (or double click in file window)
    • If .\wth.rb doesn't work, try 'ruby .\wth.rb'

Manual installation can be done as:

Installation - Ubuntu 20.04/21.10

  • Coming soon!
    • Install script for linux
    • Install for ARM
  • Install Ruby dependencies
    • sudo apt install curl g++ gcc autoconf automake bison libc6-dev libffi-dev libgdbm-dev libncurses5-dev libsqlite3-dev libtool libyaml-dev make pkg-config sqlite3 zlib1g-dev libgmp-dev libreadline-dev libssl-dev
  • Make sure your system is up-to-date (we'll be doing this a lot)
    • $ sudo apt-get update -y && sudo apt-get upgrade -y
  • Install ruby 2.7+ for Ubuntu
    • $ sudo apt install ruby-full
  • Update your system
    • $ sudo apt-get update -y && sudo apt-get upgrade -y
  • Confirm Ruby 2.7+:
    • $ ruby --version
  • Download tar.gz from releases https://github.com/roboyeti/wth/releases/
    • create a folder in /home called 'wth'
    • copy release tar.gz to /home/wth
    • cd /home/wth
    • extract release tar.gz to /home/wth with your favorite app or
  • Extract from Terminal:
    • $ tar -xf release.tar.gz (don't forget to replace release.tar.gz with actual filename)
  • cd to /home/wth
  • Install Ruby Bundler
    • $ sudo apt install ruby-bundler
  • Update your system
    • $ sudo apt-get update -y && sudo apt-get upgrade -y
  • $ bundle install
  • Copy wth_config_example.yml to wth_config.yml
  • Edit config file (see Configuration)
  • #> .\wth.rb
    • If .\wth.rb doesn't work, try 'ruby .\wth.rb'

Installation - OSx

  • Same as linux?, unknown mileage

Use

  • All modules can be spread across 10 "pages" for display and keys 1-0 bring you to the page.
  • "e" key will show available commands in basic web interface and console
  • http://localhost:8080/api?module=list provides a list of configured modules that can be queried.
  • With either web interface (basic or API), you can enable a private key to restrict access
    • Enable in config and set your key
    • Add &key=<your_key> to the URL for both interfaces to send it with request.

Other stuff

  • wthlab.rb is an interactive shell with a WTH application spun up with your config.
  • wthd.rb is an untested daemonized wth for OSs that support fork.
    • Use: ruby ./wthd.rb [start|stop|status|restart]
  • To detach from console, you can also set config option "console_out" to false
  • When a URL is visible on the console, you may be able to CTRL + Mouse click it to open in browser. Terminal and OS mileage may vary.

Configuration

  • The default config file is "wth_config.yml"
  • Example config file is "wth_config_example.yml"
  • You can run with different config file using arguments to wth: -c or --config
    • Example: ruby wth.rb -c wth_my_other_config.yml

Configuration - Modules

  • Modules are interfaces to software installed on your mining machines or remote APIs. You may have to install software yourself on one or more machines to get the features of a module.
  • Specific configuration options can be found in the example config.
  • Brief documentation for how to enable APIs for a specific module target can be found in docs/modules/<target_name>.

List of supported modules and the config "api" entry for them:

GPU Miners

  • Excavator (Nicehash Nvidia Miner) = "nice_hash"
  • Claymore Miner = "claymore" (untested)
  • Phoenix Miner = "phoenix"
  • T-Rex Miner = "t_rex_unm"
  • GMiner = "g_miner"
  • LolMiner = "lol_miner"
  • NanoMiner = "nano_miner"
  • NBMiner = "nbminer"

CPU Miners

  • XMRig = "xmrig"
  • Cpuminer-gr = "raptoreum"
  • Cpuminer- = "cpuminer" (Untested other than cpuminer-gr)

Harddrive Miners

  • Signum Miner (via pool API) = "signum_pool_miner"

Pools

  • 2Miners = "2miners_pool"
  • Nano Pool = "nano_pool"
  • Signum Pool API = "signum_pool_view"
  • Flock Pool (RTM) = "flock_pool"
  • Unmineable (Address API) = "unmineable" (best with local Tor installation for socks poxying)

Tokens

  • Signum Tokens = "signum_tokens"
  • ZapperFi = "zapper_fi" - Includes ETH tokens, Avalanche, and more. See http://zapper.fi

Portfolio

  • Coingecko = "coin_gecko" - Build your own personal portfolio without sharing your data. Pricing is possible on any coin CoinGecko supports. See http://coingecko.com

Hardware

  • LibreHardwareMonitor +WMI GPU/CPU monitoring on Win32 = "ohm_gpu_w32" (Experimental) -- Comaptibility with OpenHardwareMonitor possible, but untested. (Experimental)
  • Nvidia SMI Remote (https://github.com/lampaa/nvidia-smi-rest) = "smi_rest"

Misc Modules

  • WTH can pull data from another WTH instance = "wth_link"
  • Banner = "banner" - Inserts a banner of text by position in config and page#

Configuration - Plugins

  • Specific configuration options can be found in the example config.

List of supported plugins

  • what_to_mine : Enables what to mine revenue calculations on supporting modules
  • coin_gecko : Enables value calculations for modules to convert to USD (more currencies supported soon)

Configuration - Global

console_out: [true|false] = Enable console output.

web_server_start: [true|false] = Run web server or not

default_module_frequency: [integer] = Number of seconds between default module check. Override per module with "every:" directive. Some modules have minimums enforced to ensure you don't get yourself banned or overload remote APIs that are generously provided by others for free.

Configuration - Web Server

The following web server config options are:

web_server:

html_out: [true|false] = Enable the console => html conversion. Turning this off will leave the API running, if that is enabled. True default.

port: [integer] = Port number to run basic and API on. Default is 8080

host: [network_addr] = For local machine access, set to 127.0.0.1 or localhost, 0.0.0.0 for all interfaces (default), or specific IP address for a specific interface.

ssl: [true|false] = Enables SSL. Your SSL cert and pkey pem files will be generated for you and stored in "data/ssl/*.pem". You can replace those with your own if you desire.

api: [true|false] = Enable the API interface for the web server. Default false.

key: [string] = User chosen string to act as you private web access string. Append all URL requests with &api_key=<your_key> if you set this.

Configuration - Misc Notes

  • Tor SOCKS and Http Proxy is available, but currently is enabled per module with no global mechanism to set it yet and not all modules support it (those who use custom network code: claymore, phoenix, cpuminer, zapper.fi).

Donate!

Donations are very welcome and if you find this program helpful. If you want a miner, pool, or other crypto currency related site/tool integrated, donations also go a long way to convince me to investigate if it is possible and spend the personal time adding something I don't need myself.

  • BTC: bc1qwnuxek3zw6cht7gqm07smr7pam8qngl9l72jqk
  • ETH: 0x0c3154E8bFB49Fc54e675f4D230737B76cAc8346
  • ETC: 0x0b719bd9AD3786D340ea0D13465CB7EDe20c7DF5
  • SIGNA: S-CJFF-3JYH-GMBY-D2DRX
  • RTM: RCMPMeSS2CYSbepTEbR5X3dNpwDQFZxnHM
  • XMR: 85AUKf2jByxRy884ebLagvToXmTW4hYmrhQUxvudKsvwWKpdKt1xMatargMD4DQTCCZgoxtiyrz6RTUXeciKGdz8Vqd9Ly8

Example Web View

Example Example

Example Console View

Example Example

wth's People

Contributors

bouncethebox avatar roboyeti avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

wth's Issues

Periodic lag between switching pages

Issue: When changing pages in console, sometimes there is a delay.

Status: Known issue, caused by core logic that requests data before displaying cached data, so if it is in a request cycle, you have to wait until all threads join. Working on solution.

My displayed revenue doesn't match my actual earnings...

Issue: Displayed estimated revenues are not what my xyz miner or xyz pool page displays.

Status: Estimated revenue ... is well, estimated and therefore will never be 100% accurate due to the nature of the momentary nature of the estimation. Also, some miners/pools display profit (after power costs and mining fee calculated), which may be added at a later date when possible and where available. We will always try to improve on these numbers, but it should be used as a rough reference and for comparison purposes only.

Self signed cert doesn't work...

Issue: It is possible the self signed cert will give you grief, especially if you delete the one that was stored in your browser already and auto generate a new one.

Answer: First, you will most certainly have to tell your browser to allow the self signed cert (or buy one that can be authorized). If you delete your pem files (auto generated for you and stored in data/ssl/*) and new ones are generated, your browser will like complain that it has changed. Depending on your OS and browser, the solutions differ and you should google the solution. For Firefox, simply deleting the certificate does not work. I had to remove the cert9.db file to get it to accept the new one (after granting permission).

Standalone mode for modules isn't working

Issue: Standalone mode (display for miners with heads) does not work (if you even found it...)

Status: When I switched some rendering stuff around, I broken standalone mode. Will be fixed soon.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.