Bitcoin Forum
May 10, 2024, 08:58:28 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: [1]
1  Economy / Service Announcements / BExR – Bitcoin (and other cryptocurrency) exchange rates [Android app] on: June 23, 2018, 12:18:36 PM
Several years ago I wrote a piece of software used by quite a few miners to control their rigs with multi-pools.  That software is now retired as there are better options, although fewer multi-pools, available.  About a year ago I decided to tackle building a mobile application.  The result of that has been BExR, and Android application for crypto-currency exchange rates.

BExR has several functions.  

BExR can show the exchange rates at several currency exchanges on one screen so you can do side-by-side comparison.  This is done by accessing the public API services at the exchanges on demand or on a scheduled basis.  No central server is required; you are getting the data directly from the exchange.

BExR can provide alerts when exchange rate thresholds are passed.  This currently only works for exchange against Bitcoin through the Blockchain.info site, but it will give you alerts when different currencies pass set thresholds either rising for falling.

BExR can display exchange rates on your home screen.  See the current exchange rate for different crypto-currencies at several exchanges on your home screen with an application widget.  The information to display can be customized to include trend arrows and how much the rate has changed during the day.

Interested? Get it from the Play Store.

Development is ongoing, but it is not my primary focus.  Any suggestions for new features are welcome.  Depending on how hard they are to implement I’ll see about honoring them.







Description from the Play Store

BExR (Bitcoin Exchange Rates) allows you to get instant exchange rates between cryptocurrencies (Bitcoin and several altcoins) and many world currencies.

~ Choose between multiple exchanges.
~ See rate at multiple exchanges for a single currency.
~ See trend as the rate changes.
~ Get notified when the exchange rate passes a threshold for a given currency.
~ Share current rates with others.
~ Receive notification when the exchange rate passes set thresholds for selected currencies.
~ See conversion rate between currencies by passing through Bitcoin (buy Bitcoin and sell for another currency).
~ Widget to show current exchange rate (against a selected currency) in your launcher for any supported cryptocurrency and exchange.

Exchange rate information is provided by multiple services:
~ Blockchain (https://blockchain.info)
~ Bitfinex (https://www.bitfinex.com)
~ Bitstamp (https://www.bitstamp.net)
~ Bittrex (https://bittrex.com)
~ BTC China (https://www.btcc.com)
~ BTC-e (https://btc-e.com)
~ Coinfloor (https://www.coinfloor.co.uk)
~ CEX.IO (https://cex.io)
~ Gatecoin (https://gatecoin.com)
~ GDAX (https://gdax.com)
~ Gemini (https://gemini.com)
~ Kraken (https://www.kraken.com)
~ OKCoin (https://www.okcoin.com)
~ Poloniex (https://www.poloniex.com)

Supported cryptocurrencies include:
~ Bitcoin - BTC (https://bitcoin.org)
~ Bitcoin Cash - BCC/BCH (https://www.bitcoincash.org)
~ Dash - DASH (https://www.dash.org)
~ Ethereum - ETH (https://ethereum.org)
~ Ethereum Classic - ETC (https://ethereumclassic.github.io)
~ Litecoin - LTC (https://litecoin.org)
~ Monero - XMR (https://getmonero.org)
~ Ripple - XRP (https://ripple.com)

Manual refresh is limited to once each minute to avoid excessive requests to the rate providers. Automatic background refresh can be configured for varying times from as short as five minutes up to three hour intervals.
2  Economy / Currency exchange / BExR – Bitcoin (and other cryptocurrency) exchange rates on: June 23, 2018, 12:06:22 PM
Posted to wrong board.

Article belonged here instead.
3  Alternate cryptocurrencies / Mining (Altcoins) / [ANN] Miner Control 1.6.1 - Auto profit switching miner controller on: September 04, 2014, 01:02:53 PM
Several months ago I created NiceHash Control to deal with a problem I had with the NiceHash cloud mining service.  I use nVIDIA cards and there is no one mining app which works for all NiceHash supported algorithms.  I'm using ccminer for two and cudaminer for three of the algorithms.  This led me to create NiceHashControl which used the NiceHash API for gather pricing information, combine that with your own settings for hash rate and power consumption per algorithm, and finally launch the correct mining application.

Several version and lots of feedback later I've rebuilt the application into Miner Control.  This has the same features from NiceHash Control plus many more.  It now supports multiple services as well as manual configurations.  It has failover support to move to other services when one becomes unavailable.

Here is a quick list of features:
  • Supports multiple services which provide an API for pricing and payout in Bitcoin (more may be added if they are compatible).
  • API call once per minute to each service to get the current prices.
  • Manual configurations for last resort backup pool.
  • Failover support when miner exits abnormally (such as when pool is down).
  • Minimum time to mine on new algorithm to allow for spin up of the miner.
  • Forced restart of miner after maximum amount of time to avoid stuck miners.
  • Time before switch to new best algorithm to avoid flickering between algorithms with similar payout levels.
  • Config parameter substitution for common values in miner configs.
  • View output from multiple mining computers on one system with 'remote console'.

Full source code is available at my GitHub repository.

Legal disclaimer: This program is not created, supported, or endorsed by any of the mining pools or miner software makers.  It is my own creation and you use it at your own risk.

Download: https://github.com/StuffOfInterest/MinerControl/releases

Screen shot:



Remote console:



Display details:
  • Actions
    • Auto - Put miner in automatic mode for switching between algorithms.
    • Stop - Stop running miner.
  • Times
    • Running - How much total mining time has happened since the application started.
    • Current - How long the current mining session has been running.
    • Switch - How long before a switch occurs once a new entry is more profitable.
    • Restart - How long until the current mining session is restarted if no more profitable entry happens first.
  • Donation
    • Time Until - How long until donation mining will take place
    • Mining Time - How long donation mining will run for
  • Currency
    • Exchange - Exchange rate from local currency to Bitcoin.
    • Balance - Sum balance of all services in local currency.
  • Top grid columns
    • Service - Which service provider this entry is for.
    • Updated - When pricing for this service was last updated.
    • Balance - Balance reported by the service.
    • Running - Total time spent mining against this service.
  • Bottom grid columns
    • Service - Which service provider this entry is for.
    • Algo - Algorithm used for calculating hashrate and power.
    • Hash Rt - Hash rate for this algorithm for this machine.
    • Price - How much this algorithm earns on this service in BTC/GH/Day.
    • Earn - How much in BTC/Day this machine will earn.
    • Fees - Fees taken from earnings.
    • Power - Power cost per day in BTC.
    • Net - Net earned from earnings (adjusted for weighting) minus fees and power.
    • Balance - Balance at provider for this algorithm (only supported on NiceHash, WestHash, and WafflePool).
    • Accept - Current accept rate (only supported on NiceHash, WestHash, YAAMP, and WafflePool).
    • Reject - Current reject rate (only supported on NiceHash, WestHash, and WafflePool).
    • Running - How long spent mining for this entry since application started.
    • Status - Current status of the entry (only shows when miner is running).
      • Running - Currently running entry.
      • Pending - Entry that will start once switch time has been met.
      • Dead - Miner exited abnormally and hasn't reached its dead time threshold yet.
    • Action - Start an individual miner for testing (only shows when miner is stopped).

Configuration file:

Code: (Configuration file)
{
    "general": {
        "power": 0.10,
        "exchange": 500,
        "currencycode": "USD",
        "mintime": 4,
        "maxtime": 30,
        "switchtime": 3,
        "deadtime": 10,
        "logerrors": true,
        "logactivity": true,
        "gridsortmode": 1,
        "minerkillmode": 1,
        "traymode": 1,
        "donationpercentage": 2,
        "donationfrequency": 240,
        "remotesend": true,
        "remotereceive": true
    },
    "algorithms": [
        { "name": "x11", "hashrate": 5251, "power": 49, "aparam1": "", "aparam2": "TestMiner.exe", "aparam3": "-a x11" },
        { "name": "x13", "hashrate": 4024, "power": 49, "aparam1": "", "aparam2": "TestMiner.exe", "aparam3": "-a x13" },
        { "name": "x14", "hashrate": 4024, "power": 52, "aparam1": "", "aparam2": "TestMiner.exe", "aparam3": "-a x14" },
        { "name": "x15", "hashrate": 3270, "power": 52, "aparam1": "", "aparam2": "TestMiner.exe", "aparam3": "-a x15" },
        { "name": "quark", "hashrate": 7000, "power": 54, "aparam1": "", "aparam2": "TestMiner.exe", "aparam3": "-a quark" },
        { "name": "nist5", "hashrate": 15682, "power": 54, "aparam1": "", "aparam2": "TestMiner.exe", "aparam3": "-a nist5" },
        { "name": "neoscrypt", "hashrate": 80, "power": 54, "aparam1": "", "aparam2": "TestMiner.exe", "aparam3": "-a neoscrypt" },
        { "name": "scrypt", "hashrate": 540, "power": 60, "aparam1": "c:\\windows\\system32", "aparam2": "cmd.exe", "aparam3": "/c test-run.bat -a scrypt -batch" },
        { "name": "scryptn", "hashrate": 253, "power": 60, "aparam1": "c:\\windows\\system32", "aparam2": "cmd.exe", "aparam3": "/c test-run.bat -a scryptn -batch" },
        { "name": "keccak", "hashrate": 34000, "power": 50, "aparam1": "", "aparam2": "TestMiner.exe", "aparam3": "-a keccak" },
        { "name": "lyra2", "display": "Lyra2RE", "hashrate": 1216, "power": 50, "aparam1": "", "aparam2": "TestMiner.exe", "aparam3": "-a lyra2re" },
        { "name": "whirlpoolx", "display": "WhirlpoolX", "hashrate": 152000, "power": 50, "aparam1": "", "aparam2": "TestMiner.exe", "aparam3": "-a whirlpoolx" },
        { "name": "sha256", "hashrate": 10000, "power": 50, "aparam1": "c:\\windows\\system32", "aparam2": "cmd.exe", "aparam3": "/c test-run.bat -a sha256 -batch" }
    ],
    "nicehash": {
        "account": "1PMj3nrVq5CH4TXdJSnHHLPdvcXinjG72y",
        "worker": "1",
        "sparam1": "-o stratum+tcp://stratum.nicehash.com",
        "sparam2": "-p x",
        "weight": 0.90,
        "algos": [
            { "algo": "x11", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3336 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "x13", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3337 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "x15", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3339 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "scrypt", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3333 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "scryptn", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3335 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "keccak", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3338 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "nist5", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3340 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "neoscrypt", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3341 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "lyra2", "priceid": "9", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3342 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "whirlpoolx", "priceid": "10", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3343 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "sha256", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3332 -u _ACCOUNT_._WORKER_ _SPARAM2_", "usewindow":  true }
        ]
    },
    "westhash": {
        "account": "1PMj3nrVq5CH4TXdJSnHHLPdvcXinjG72y",
        "worker": "1",
        "sparam1": "-o stratum+tcp://stratum.westhash.com",
        "sparam2": "-p x",
        "algos": [
            { "algo": "x11", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3336 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "x13", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3337 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "x15", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3339 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "scrypt", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3333 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "scryptn", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3335 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "keccak", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3338 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "nist5", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3340 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "neoscrypt", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3341 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "lyra2", "priceid": "9", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3342 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "whirlpoolx", "priceid": "10", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3343 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
        ]
    },
    "yaamp": {
        "account": "1PMj3nrVq5CH4TXdJSnHHLPdvcXinjG72y",
        "pricemode": 1,
        "sparam1": "-o stratum+tcp://yaamp.com",
        "sparam2": "-p x",
        "algos": [
            { "algo": "x11", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3533 -u _ACCOUNT_ _SPARAM2_" },
            { "algo": "x13", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3633 -u _ACCOUNT_ _SPARAM2_" },
            { "algo": "x14", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3933 -u _ACCOUNT_ _SPARAM2_" },
            { "algo": "x15", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3733 -u _ACCOUNT_ _SPARAM2_" },
            { "algo": "quark", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:4033 -u _ACCOUNT_ _SPARAM2_" },
            { "algo": "nist5", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3833 -u _ACCOUNT_ _SPARAM2_" },
            { "algo": "lyra2", "priceid": "lyra2", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:4433 -u _ACCOUNT_ _SPARAM2_" },
            { "algo": "scrypt", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3433 -u _ACCOUNT_ _SPARAM2_" }
        ]
    },
    "wafflepool": {
        "account": "1PMj3nrVq5CH4TXdJSnHHLPdvcXinjG72y",
        "worker":  "1",
        "sparam1": "-o stratum+tcp://useast.wafflepool.com",
        "sparam2": "-p x",
        "algos": [
            { "algo": "x11", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3331 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "x13", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3330 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "scrypt", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3333 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "scryptn", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3332 -u _ACCOUNT_._WORKER_ _SPARAM2_" }
        ]
    },
    "ltcrabbit": {
        "apikey": "mykey",
        "account": "MinerControl",
        "worker":  "1",
        "sparam2": "-p x",
        "algos": [
            { "algo": "x11", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ -o stratum+tcp://x11.ltcrabbit.com:3332 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "scrypt", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ -o stratum+tcp://scrypt.ltcrabbit.com:3333 _ACCOUNT_._WORKER_ _SPARAM2_" }
        ]
    },
    "wepaybtc": {
        "account": "1PMj3nrVq5CH4TXdJSnHHLPdvcXinjG72y",
        "worker":  "1",
        "sparam1": "-o ny",
        "sparam2": "-p MinerControl@StuffOfInterest.com",
        "algos": [
            { "algo": "x11", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_ -u _ACCOUNT___WORKER_ _SPARAM2_" },
            { "algo": "x13", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_ -u _ACCOUNT___WORKER_ _SPARAM2_" },
            { "algo": "x15", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_ -u _ACCOUNT___WORKER_ _SPARAM2_" },
            { "algo": "nist5", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_ -u _ACCOUNT___WORKER_ _SPARAM2_" }
        ]
    },
    "hamsterpool": {
        "apikey": "mykey",
        "donation": 1.0,
        "account": "MinerControl",
        "worker": "1",
        "sparam1": "-o stratum+tcp://eu.hamsterpool.com",
        "sparam2": "-p x",
        "algos": [
            { "algo": "scrypt", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:7771 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "scryptn", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:7772 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "sha256", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:7774 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "x11", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3508 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "qubit", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:7776 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "x13", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:7773 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "neoscrypt", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3650 -u _ACCOUNT_._WORKER_ _SPARAM2_" }
        ]
    },
    "manual": {
        "account": "myaccount",
        "algos": [
            { "algo": "scrypt", "price": 0.0100, "fee": 3.0, "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ -o manual.com:1 _ACCOUNT_ -p x" }
        ]
    }
}

Legend:
  • general - General configuration parameters
    • power - Rate per KW/hour in your currency units
    • exchange - Default Bitcoin price in your currency units for calculating power cost in Bitcoin (only used if unable to download exchange rate)
    • currencycode - Three letter currency code to use for exchange rate (must be available in this list)
    • mintime - Minimum time in minutes to mine on new algorithm before auto-switch is allowed
    • maxtime - Maximum time in minutes to mine an algorithm under auto mode before a restart occurs
    • switchtime - Time in minutes that the current algorithm has to no longer be the best before switching to a new one under auto mode
    • deadtime - Time in minutes before an entry will be tried again after it fails and is marked as dead
    • logerrors - Log errors in 'error.log' file any time an exception is caught in the controller
    • logactivity - Log miner start and stop events in 'activity.log'
    • gridsortmode - 0 = never sort price grid, 1 = sort when in auto mode, 2 = sort whenever prices update (default 1)
    • minerkillmode - 0 = kill single process, 1 = kill process tree (default 1)
    • traymode - 0 = don't minimize to tray, 1 = minimize to tray and hide miner after starting while minimized, 2 = minimize to tray and start miners hidden while minimized
    • donationpercentage - Percentage of time to spend doing donation mining to support development of Miner Control (default 2)
    • donationfrequency - How often, in minutes, to do donation mining (default 240, or 4 hours)
    • remotesend - Send console output to remote receiver (default false)
    • remotereceive - Receive console output from remote senders (default false)
  • algorithms - List of supported algorithms
    • name - Name of supported algorithm (only listed names are currently supported)
    • display - What to display in the 'Algo' column in the prices grid
    • hashrate - Your hashrate in kHash/sec
    • power - Watts your GPU pulls when mining an algorithm
    • aparam1, aparam2, aparam3 - algorithm based substitution value for use in folder, command, and arguments
  • nicehash - Config section for NiceHash, ommit to not use this service
    • account - Bitcoin address to mine against
    • worker - worker ID
    • weight - multiplier to adjust price if you don't fully trust the reported numbers
    • sparam1, sparam2, sparam3 - service based substitution value for use in folder, command, and arguments
    • algo - algorithm name from algorithms section above
    • priceid - value pricing API will use to distinguish an algorithm
    • folder - Folder where mining app is located, blank if same as the NiceHash.exe file
    • command - Command to execute
    • arguments - Arguments to include with the command
    • usewindow - Run miner in separate window from controller (default false)
  • westhash - Config section for WestHash, ommit to not use this service
    • (settings are the same as nicehash)
  • trademybit - Config section for TradeMyBit, ommit to not use this service
    • (settings are the same as nicehash)
    • apikey - your API key to use in gathering prices
  • yaamp - Config section for YAAMP, ommit to not use this service
    • (settings are the same as nicehash)
    • pricemode - 0 = current estimate, 1 = 24hr estimate, 2 = 24hr actual
  • wafflepool - Config section for WafflePool, ommit to not use this service
    • (settings are the same as nicehash)
  • ltcrabbit - Config section for LTCRabbit, ommit to not use this service
    • (settings are the same as nicehash)
    • apikey - your API key to use in gathering prices
  • wepaybtc - Config section for WePayBTC, ommit to not use this service
    • (settings are the same as nicehash)
  • hamsterpool - Config section for HamsterPool, ommit to not use this service
    • (settings are the same as nicehash)
    • apikey - your API key to use in gathering prices
    • donation - percentage to donate back to HamsterPool
  • manual - Config section for manual miners, ommit to not use this service
    • (settings are the same as nicehash)
    • price - price to use for calculating earnings
    • fee - percentage fee to deduct from price

Substitution identifiers for command, folder, and argument parameters:
  • _ADDRESS_ - Substitutes the above address if specified
  • _WORKER_ - Substitutes the above worker if specified
  • _APARAM1_ - Substitutes the above aparam1 if specified
  • _APARAM2_ - Substitutes the above aparam2 if specified
  • _APARAM3_ - Substitutes the above aparam3 if specified
  • _SPARAM1_ - Substitutes the above sparam1 if specified
  • _SPARAM2_ - Substitutes the above sparam2 if specified
  • _SPARAM3_ - Substitutes the above sparam3 if specified

Instructions:
  • Download into a folder on your Windows computer
  • Make sure .NET Framework  4.0 is installed
  • Modify MinerControl.conf with the settings for your own mining applications
  • Start MinerControl.exe
  • Click "Start" for each miner to confirm it launches and does not require confirmation each time it is opened
  • Click "Auto" to change over to auto selection mode
  • Profit!!

Command line arguments:
  • -a | --auto-start Start mining in automatic mode as soon as the application starts.
  • -m | --minimize Minimize application on startup.
  • -t | --minimize-to-tray Minimize to the tool tray and hide miner when minimize icon is clicked.  This option is obsolete and the config setting "traymode" should be used instead.  If "traymode" is set to "0" then this option will switch it to "2".

Q & A:
  • Q: How can I start mining automatically when MinerControl starts? A: Launch with "MinerControl.exe --auto-start".
  • Q: Miner Control starts to display, freezes for a second, and then crashes.  What is happening? A: Most likely there is an error in the config file.  Miner Control is sensitive to the formatting of this file and will crash badly if there is an error.  Make sure your "key":"value" pairs are all correctly named and that any path backslashes are created as double-backslash ("\\").  Consider using a validator just as JSON Lint to verify your config file structure.
  • Q: Will Miner Control work on Windows XP? A: Yes, just make sure you have .NET Framework 4.0 installed.
  • Q: What does donation mining do? A: Donation mining will mine to the MinerControl author's address or account for a percentage of time.  Default setting is for 2% of the time over four hours which works out to just under five minutes spent donation mining every four hours.  If the percentage is set to 0 then no donation mining will occur.
I'll add answers to questions on this thread to the Q & A as warranted.  Of course, that also depends on if there are enough (or any) donations to warrant continued support.

Here is the configuration file I'm currently using to show how both ccminer and cudaminer can be invoked.

Code: (Sample configuration)
{
    "general": {
        "power": 0.10,
        "exchange": 500,
        "currencycode": "USD",
        "mintime": 4,
        "maxtime": 180,
        "switchtime": 3,
        "deadtime": 10,
        "logerrors": true,
        "logactivity": true,
        "gridsortmode": 1,
        "minerkillmode": 0,
        "traymode": 1,
        "donationpercentage": 5,
        "donationfrequency": 120
    },
    "algorithms": [
        { "name": "x11", "hashrate": 5435, "power": 49, "aparam1": "C:\\CryptoMining\\ccminer-maxwell-optimized-1.47.sp", "aparam2": "ccminer.exe", "aparam3": "-q -r 3 -R 10 -a x11 --no-color -o" },
        { "name": "x13", "hashrate": 4112, "power": 49, "aparam1": "C:\\CryptoMining\\ccminer-maxwell-optimized-1.47.sp", "aparam2": "ccminer.exe", "aparam3": "-q -r 3 -R 10 -a x13 --no-color -o" },
        { "name": "x14", "hashrate": 4000, "power": 52, "aparam1": "C:\\CryptoMining\\ccminer-maxwell-optimized-1.47.sp", "aparam2": "ccminer.exe", "aparam3": "-q -r 3 -R 10 -a x14 --no-color -o" },
        { "name": "x15", "hashrate": 3635, "power": 52, "aparam1": "C:\\CryptoMining\\ccminer-maxwell-optimized-1.47.sp", "aparam2": "ccminer.exe", "aparam3": "-q -r 3 -R 10 -a x15 --no-color -o" },
        { "name": "quark", "hashrate": 7000, "power": 54, "aparam1": "C:\\CryptoMining\\ccminer-maxwell-optimized-1.47.sp", "aparam2": "ccminer.exe", "aparam3": "-q -r 3 -R 10 -a quark --no-color -o" },
        { "name": "nist5", "hashrate": 15682, "power": 54, "aparam1": "C:\\CryptoMining\\ccminer-maxwell-optimized-1.47.sp", "aparam2": "ccminer.exe", "aparam3": "-q -r 3 -R 10 -a nist5 --no-color -o" },
        { "name": "keccak", "hashrate": 34000, "power": 50, "aparam1": "C:\\CryptoMining\\ccminer-maxwell-optimized-1.47.sp", "aparam2": "ccminer.exe", "aparam3": "-q -r 3 -R 10 -a keccak --no-color -o" },
        { "name": "qubit", "hashrate": 7500, "power": 50, "aparam1": "C:\\CryptoMining\\ccminer-maxwell-optimized-1.47.sp", "aparam2": "ccminer.exe", "aparam3": "-q -r 3 -R 10 -a qubit --no-color -o" },
        { "name": "neoscrypt", "hashrate": 83, "power": 60, "aparam1": "C:\\CryptoMining\\sgminer-5-dev-neoscrypt-windows", "aparam2": "sgminer.exe", "aparam3": "-k neoscrypt -I 14 -T -o" },
        { "name": "lyra2", "display": "Lyra2RE", "hashrate": 1216, "power": 50, "aparam1": "C:\\CryptoMining\\ccminer-1.5.1-git-tpruvot-lyra2", "aparam2": "ccminer.exe", "aparam3": "-q -r 3 -R 10 -a lyra2 --no-color -o" },
        { "name": "whirlpoolx", "display": "WhirlpoolX", "hashrate": 152000, "power": 54, "aparam1": "C:\\CryptoMining\\ccminer-41", "aparam2": "ccminer.exe", "aparam3": "-q -r 3 -R 10 -a whirlpoolx --no-color -o" },
        { "name": "scrypt", "hashrate": 540, "power": 60, "aparam1": "C:\\CryptoMining\\cudaminer-20140415test-x64", "aparam2": "cudaminer.exe", "aparam3": "-a scrypt -d 0,1 -i 1,0 -l T5x24,T5x24 -q -o" },
        { "name": "scryptn", "hashrate": 253, "power": 60, "aparam1": "C:\\CryptoMining\\cudaminer-20140415test-x64", "aparam2": "cudaminer.exe", "aparam3": "-a scrypt:2048 -d 0,1 -i 1,0 -q -o" },
        { "name": "sha256", "hashrate": 0, "power": 0 }
    ],
    "nicehash": {
        "account": "1PMj3nrVq5CH4TXdJSnHHLPdvcXinjG72y",
        "worker": "1",
        "weight": 0.90,
        "sparam1": "stratum+tcp://stratum.nicehash.com",
        "algos": [
            { "algo": "x11", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3336 -u _ACCOUNT_._WORKER_ -p d=0.08" },
            { "algo": "x13", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3337 -u _ACCOUNT_._WORKER_ -p d=0.08" },
            { "algo": "x15", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3339 -u _ACCOUNT_._WORKER_ -p d=0.08" },
            { "algo": "nist5", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3340 -u _ACCOUNT_._WORKER_ -p d=0.08" },
            { "algo": "scrypt", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3333 -u _ACCOUNT_._WORKER_ -p d=256" },
            { "algo": "scryptn", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3335 -u _ACCOUNT_._WORKER_ -p d=128" },
            { "algo": "keccak", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3338 -u _ACCOUNT_._WORKER_ -p d=8192" },
            { "algo": "neoscrypt", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3341 -u _ACCOUNT_._WORKER_ -p d=32", "usewindow": true },
            { "algo": "lyra2", "priceid": "9", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3342 -u _ACCOUNT_._WORKER_ -p x" },
            { "algo": "whirlpoolx", "priceid": "10", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3343 -u _ACCOUNT_._WORKER_ -p x" }
        ]
    },
    "westhash": {
        "account": "1PMj3nrVq5CH4TXdJSnHHLPdvcXinjG72y",
        "worker": "1",
        "sparam1": "stratum+tcp://stratum.westhash.com",
        "algos": [
            { "algo": "x11", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3336 -u _ACCOUNT_._WORKER_ -p d=0.08" },
            { "algo": "x13", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3337 -u _ACCOUNT_._WORKER_ -p d=0.08" },
            { "algo": "x15", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3339 -u _ACCOUNT_._WORKER_ -p d=0.08" },
            { "algo": "nist5", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3340 -u _ACCOUNT_._WORKER_ -p d=0.08" },
            { "algo": "scrypt", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3333 -u _ACCOUNT_._WORKER_ -p d=256" },
            { "algo": "scryptn", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3335 -u _ACCOUNT_._WORKER_ -p d=128" },
            { "algo": "keccak", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3338 -u _ACCOUNT_._WORKER_ -p d=8192" },
            { "algo": "neoscrypt", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3341 -u _ACCOUNT_._WORKER_ -p d=32", "usewindow": true },
            { "algo": "lyra2", "priceid": "9", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3342 -u _ACCOUNT_._WORKER_ -p x" },
            { "algo": "whirlpoolx", "priceid": "10", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3343 -u _ACCOUNT_._WORKER_ -p x" }
        ]
    },
    "yaamp": {
        "account": "1PMj3nrVq5CH4TXdJSnHHLPdvcXinjG72y",
        "worker": "1",
        "sparam1": "stratum+tcp://yaamp.com",
        "algos": [
            { "algo": "x11", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3533 -u _ACCOUNT_ -p _WORKER_" },
            { "algo": "x13", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3633 -u _ACCOUNT_ -p _WORKER_" },
            { "algo": "x15", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3733 -u _ACCOUNT_ -p _WORKER_" },
            { "algo": "nist5", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3833 -u _ACCOUNT_ -p _WORKER_" },
            { "algo": "scrypt", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3433 -u _ACCOUNT_ -p _WORKER_" },
            { "algo": "lyra2", "priceid": "lyra2", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:4433 -u _ACCOUNT_ -p _WORKER_" }
        ]
    },
    "wafflepool": {
        "account": "1PMj3nrVq5CH4TXdJSnHHLPdvcXinjG72y",
        "worker": "1",
        "sparam1": "stratum+tcp://useast.wafflepool.com",
        "algos": [
            { "algo": "x11", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3331 -u _ACCOUNT_._WORKER_ -p d=0.08" },
            { "algo": "x13", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3330 -u _ACCOUNT_._WORKER_ -p d=0.08" },
            { "algo": "scrypt", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3333 -u _ACCOUNT_._WORKER_ -p x" },
            { "algo": "scryptn", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3332 -u _ACCOUNT_._WORKER_ -p x" }
        ]
    },
    "ltcrabbit": {
        "apikey": "mykey",
        "account": "MinerControl",
        "worker": "1",
        "algos": [
            { "algo": "x11", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ stratum+tcp://x11.ltcrabbit.com:3332 -u _ACCOUNT_._WORKER_ -p d=x" },
            { "algo": "scrypt", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ stratum+tcp://scrypt.ltcrabbit.com:3333 -u _ACCOUNT_._WORKER_ -p x" }
        ]
    },
    "hamsterpool": {
        "apikey": "mykey",
        "donation": 1.0,
        "account": "MinerControl",
        "worker": "1",
        "sparam1": "-o stratum+tcp://eu.hamsterpool.com",
        "sparam2": "-p x",
        "algos": [
            { "algo": "scrypt", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:7771 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "scryptn", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:7772 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "sha256", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:7774 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "x11", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3508 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "qubit", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:7776 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "x13", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:7773 -u _ACCOUNT_._WORKER_ _SPARAM2_" },
            { "algo": "neoscrypt", "folder": "_APARAM1_", "command": "_APARAM2_", "arguments": "_APARAM3_ _SPARAM1_:3650 -u _ACCOUNT_._WORKER_ _SPARAM2_" }
        ]
    }
}

Release history:
  • 29-December-2014: Version 1.6.1 - Option to selection price type for YAAMP (current est, 24hr est, or 24hr actual).
  • 15-December-2014: Version 1.6.0 - Configure new algorithms, including API identifiers, via the conf file.
  • 9-December-2014: Version 1.5.6 - Add support for HamsterPool.
  • 21-November-2014: Version 1.5.5 - Add support for WePayBTC.
  • 13-November-2014: Version 1.5.4 - Option to minimize application on startup.
  • 6-November-2014: Version 1.5.3 - NeoScrypt support for NiceHash, WestHash, and TradeMyBit.
  • 30-October-2014: Version 1.5.2 - Fix for Windows XP multicast sender.
  • 30-October-2014: Version 1.5.1 - Move to different multicast address.
  • 29-October-2014: Version 1.5.0 - Send console output to a remote receiver, display console output from remote senders.
  • 26-October-2014: Version 1.4.5 - Bug fix for freeze when invalid miner program specified in the config file.
  • 25-October-2014: Version 1.4.4 - Bug fixes and examples in config file.
  • 21-October-2014: Version 1.4.3 - Algorithm level substitutions.
  • 20-October-2014: Version 1.4.2 - Add support for LTCRabbit.
  • 19-October-2014: Version 1.4.1 - Fix for issue launching cudaminer for display in console.
  • 18-October-2014: Version 1.4.0 - Run miner inside of program, no separate window anymore.
  • 17-October-2014: Version 1.3.1 - Add activity log.
  • 8-October-2014: Version 1.3.0 - Download exchange rate for local currency.
  • 7-October-2014: Version 1.2.1 - Fix service level running time display.
  • 6-October-2014: Version 1.2.1 - Add WafflePool.
  • 5-October-2014: Version 1.2.0 - Add donation mining.
  • 29-September-2014: Version 1.1.2 - Add minimize to tray modes in config file and more grid sorting UI improvement.
  • 25-September-2014: Version 1.1.1 - Hopefully fix a stack overflow bug related to price sorting.
  • 23-September-2014: Version 1.1.0 - Top level service summary and more config options.
  • 14-September-2014: Version 1.0.3 - Option to create 'error.log' file when exceptions occur in the controlller.
  • 5-September-2014: Version 1.0.2 - Fix TradeMyBit parsing error.
  • 4-September-2014: Version 1.0.1 - Fix autostart bug and do price loads asynchronously.
  • 4-September-2014: Version 1.0.0 of Miner Control.
  • 13-July-2014: Version 1.1.1 (final release) of NiceHash Control.
  • 16-June-2014: Version 1.0.0 of NiceHash Control.

Donation addresses:
4  Alternate cryptocurrencies / Mining (Altcoins) / [ANN] NiceHash Control 1.1.1 - Auto profit switching control for NiceHash servic on: June 17, 2014, 01:16:45 AM
I recently discovered NiceHash and quickly moved my mining efforts over to this cloud mining service.  There was one small problem, however.  I use nVIDIA cards and there is no one mining app which works for all NiceHash supported algorithms.  I'm using ccminer for two and cudaminer for three of the algorithms.  The let me to create NiceHashControl which can use the NiceHash API for gather pricing information, combine that with your own settings for hash rate and power consumption per algorithm, and finally launch the correct mining application.  The app checks pricing once a minute and if a new algorithm is more profitable it will kill the existing miner and start the next one.

Behavior is still a bit rough but I've had it running on my computer for several days now.  I plan to tighten things up to handle conditions such as the NiceHash API not responding (which has happened) before.  Currently, I'm only releasing the binary as the code needs to be cleaned up so I wouldn't die of embarrassment when others looks at it.  Once things are cleaned up I'll get the source out there.

Legal disclaimer: This program is not created, supported, or endorsed by NiceHash.  It is my own creation and you use it at your own risk.

Download: http://stuffofinterest.com/NiceHashControl/NiceHashControl-1.1.1.zip

Screen shot:



Configuration file:

Code: (Configuration file)
{
"address":"1PMj3nrVq5CH4TXdJSnHHLPdvcXinjG72y",
        "worker":"pc1",
"power":0.10,
"exchange":600,
        "mintime":5,
        "maxtime":240,
        "switchtime":3,
"algos":[
{ "algo":3, "hashrate":5200, "power":50, "folder":"", "command":"cmd.exe", "arguments":"/c test-run.bat x11 _ADDRESS_" },
{ "algo":4, "hashrate":4000, "power":50, "folder":"", "command":"cmd.exe", "arguments":"/c test-run.bat x13 _ADDRESS_" },
{ "algo":0, "hashrate":540, "power":50, "folder":"", "command":"cmd.exe", "arguments":"/c test-run.bat scrypt _ADDRESS_" },
{ "algo":2, "hashrate":270, "power":50, "folder":"", "command":"cmd.exe", "arguments":"/c test-run.bat scrypt-n _ADDRESS_" },
{ "algo":5, "hashrate":34000, "power":50, "folder":"", "command":"cmd.exe", "arguments":"/c test-run.bat keccak _ADDRESS_" },
{ "algo":1, "hashrate":0, "power":0, "folder":"", "command":"", "arguments":"" },
{ "algo":6, "hashrate":2850, "power":50, "folder":"", "command":"cmd.exe", "arguments":"/c test-run.bat x15 _ADDRESS_" },
{ "algo":7, "hashrate":16100, "power":50, "folder":"", "command":"cmd.exe", "arguments":"/c test-run.bat nist5 _ADDRESS_" },
]
}

Legend:
  • address - Bitcoin address your miners are sending to, for balance and hash rate monitoring and substituting in command arguments
  • worker - Worker ID to append on end of address in argruments
  • mintime - Minimum time in minutes to mine on new algorithm before auto-switch is allowed
  • maxtime - Maximum time in minutes to mine an algorithm under auto mode before a restart occurs
  • switchtime - Time in minutes that the current algorithm has to no longer be the best before switching to a new one under auto mode
  • power - Rate per KW/hour in your currency units
  • exchange - Bitcoin price in your currency units for calculating power cost in Bitcoin
  • algo - NiceHash algorithm ID
  • hashrate - Your hashrate in kHash/sec
  • power - Watts your GPU pulls when mining an algorithm
  • folder - Folder where mining app is located, blank if same as the NiceHash.exe file
  • command - Command to execute
  • arguments - Arguments to include with the command
  • _ADDRESS_ - Substitutes the above address in arguments with worker if specified

Instructions:
  • Download into a folder on your Windows computer
  • Make sure .NET Framework 4.5 4.0 is installed
  • Modify NiceHash.conf with the settings for your own mining applications
  • Start NiceHashControl.exe
  • Click "Start" for each miner to confirm it launches and does not require confirmation each time it is opened
  • Click "Auto" to change over to auto selection mode
  • Profit!!

Command line arguments:
  • -a | --auto-start Start mining in automatic mode as soon as the application starts.
  • -t | --minimize-to-tray Minimize to the tool tray and hide miner when minimize icon is clicked.

Q & A:
  • Q: How can I start mining automatically when NiceHashControl starts? A: Launch with "NiceHashControl.exe --auto-start".
  • Q: NiceHash Control starts to display, freezes for a second, and then crashes.  What is happening? A: Most likely there is an error in the config file.  NHC is sensitive to the formatting of this file and will crash badly if there is an error.  Make sure your "key":"value" pairs are all correctly named and that any path backslashes are created as double-backslash ("\\").
  • Q: Will NiceHash Control work on Windows XP? A: Yes, as of version 1.0.4 it is compiled against .NET Framework 4.0 which is supported on Windows XP.

I'll add answers to questions on this thread to the Q & A as warranted.  Of course, that also depends on if there are enough (or any) donations to warrant continued support.

Here is the configuration file I'm currently using to show how both ccminer and cudaminer can be invoked.  Note that the "name" parameter is just for information and is not used by the program.  Also, the SHA256 configuration is completely missing as I'm not foolish enough to try and mine this with a GPU.

Code: (Sample configuration)
{
"address":"1PMj3nrVq5CH4TXdJSnHHLPdvcXinjG72y",
        "worker":"1",
"power":0.10,
"exchange":600,
        "mintime":5,
        "maxtime":240,
        "switchtime":3,
"algos":[
{
"name":"x11",
"algo":3,
"hashrate":5200,
"power":50,
"folder":"C:\\CryptoMining\\NHC\\ccminer",
"command":"ccminer.exe",
"arguments":"-a x11 -d 0,1 -q -o stratum+tcp://stratum.nicehash.com:3336 -u _ADDRESS_ -p d=0.08"
},
{
"name":"x13",
"algo":4,
"hashrate":4000,
"power":50,
"folder":"C:\\CryptoMining\\NHC\\ccminer",
"command":"ccminer.exe",
"arguments":"-a x13 -d 0,1 -q -o stratum+tcp://stratum.nicehash.com:3337 -u _ADDRESS_ -p d=0.08"
},
{
"name":"Scrypt",
"algo":0,
"hashrate":540,
"power":50,
"folder":"C:\\CryptoMining\\NHC\\cudaminer",
"command":"cudaminer.exe",
"arguments":"-a scrypt -d 0,1 -i 1,0 -l T5x24,T5x24 -o stratum+tcp://stratum.nicehash.com:3333 -u _ADDRESS_ -p x"
},
{
"name":"Scrypt-N",
"algo":2,
"hashrate":270,
"power":50,
"folder":"C:\\CryptoMining\\NHC\\cudaminer",
"command":"cudaminer.exe",
"arguments":"-a scrypt:2048 -d 0,1 -i 1,0 -o stratum+tcp://stratum.nicehash.com:3335 -u _ADDRESS_ -p x"
},
{
"name":"keccak",
"algo":5,
"hashrate":34000,
"power":50,
"folder":"C:\\CryptoMining\\NHC\\cudaminer",
"command":"cudaminer.exe",
"arguments":"-a keccak -d 0,1 -i 1,0 -l T85x5,T427x1 -o stratum+tcp://stratum.nicehash.com:3338 -u _ADDRESS_ -p x"
},
{
"name":"x15",
"algo":6,
"hashrate":2850,
"power":50,
"folder":"C:\\CryptoMining\\NHC\\ccminer-x15",
"command":"ccminer.exe",
"arguments":"-a x15 -d 0,1 -q -o stratum+tcp://stratum.nicehash.com:3339 -u _ADDRESS_ -p d=0.08"
},
{
"name":"nist5",
"algo":7,
"hashrate":16100,
"power":50,
"folder":"C:\\CryptoMining\\NHC\\ccminer",
"command":"ccminer.exe",
"arguments":"-a nist5 -d 0,1 -q -o stratum+tcp://stratum.nicehash.com:3340 -u _ADDRESS_ -p d=0.08"
}
]
}

Release history:
  • 13-July-2014: Version 1.1.1 to fix killing off child processes for the miner.
  • 12-July-2014: Version 1.1.0 with min time and max time to mine plus timer before switching.
  • 6-July-2014: Version 1.0.4 with minimize to tool tray support.
  • 3-July-2014: Version 1.0.3 with X15 and Nist5 support.
  • 18-June-2014: Version 1.0.2 to fix non-US decimal parsing issue.
  • 16-June-2014: Version 1.0.1 with auto-start capability.
  • 16-June-2014: Version 1.0.0.

Donation addresses:
5  Alternate cryptocurrencies / Altcoin Discussion / Could proof of Blockchain (PoBC) be the solution to ASIC industrial mining? on: April 17, 2014, 07:31:05 PM
Several things going on in Cryptocurrency and Bitcoin in particular have been bothering me.  First, mining is becoming increasingly centralized into industrial operations.  Second, there is no incentive for people to operate a full node with blockchain history.  Third, specialized hardware (ASIC) is causing a runaway in difficulty and removing any possible RoI for small miners.

I have an idea which could address all three issues to at least some degree. 

Most coins out there today use proof of work (PoW), proof of stake (PoS), or a combination of the two.  Proof of work has led to the runaway difficulty out there as the only way to make more is to add more hashing power.  We are far beyond the amount of hashing power needed simply to keep the network secure.  Some of the estimates of power useage for mining claim enough wattage to run a city.  Proof of stake has its own issue.  Sitting on a stake means that there is a counter incentive to using the currency for transactions.  This leads to hoarding rather than economic activity.

What if we tried a proof of blockchain (PoBC) model?  In order to generate a valid hash you need access to the entire blockchain or at least information from every block in the blockchain.

Currently, in Bitcoin, a hash is generated as follows:
   sha256(sha256(block_header))

I’d like to see a hash generation done this way instead:
   sha256(sha256(block_header)+history_block_hash))

1. Start with the header of the block being worked. 
2. Generate the first sha256 checksum.
3. Use the last 32 bits of that checksum as an index into the blockchain history which could return anywhere from the first block up to the last block generated before the one being worked.
4. Use the selected history block to generate another hash (more on that later).
5. Append the history hash to the first header hash.
6. Generate the outer hash over the header and history hashes.

As for how to generate the history hash I can see three methods of doing it.  Each requires a different amount of information to be available and the technique selected can be determined if you want to give the miner a chance of keeping the entire working set in memory or if you want to ensure frequent trips back to disk (unless the miner has terabytes of RAM).

1. Use the hash of the selected block (smallest amount with only 32 bytes per block needed).
2. Use the header of the selected block with the current block inner hash appended and then generate a hash on this (80 bytes per block needed).
3. (my favorite) Take the entire selected block with the current block inner hash appended and then generate a hash on this (requires the entire blockchain to be available).

So, why would we want to do this? 

First, it should stop the ASIC miners in their tracks.  For even the smallest history dataset above you would need to have 16MB of working data per year of blockchain if the block generation time is set at one minute.  The ASIC can’t store this much information internally so it will be going back to an external store for every computation.

Next, it promotes having more copies of the entire blockchain on more computers.  If you want to mine, you will have to dedicate more hardware and storage.  This will make it much harder for the industrial size miners to scale up as they can’t just add racks of ASIC chips.  There are ways of scaling but they will require high speed networks or lots of storage per mining node.  I’m not even sure a GPU miner will work under this model.  It may be better to go back to the old days of CPU mining.

I’m curious if anyone has explored a concept like this for an altcoin.  I see this as being a way to force a coin to scale out since anyone wanting to mine will need to operate a full node containing the entire blockchain.

I’d also like to come up with a way to prevent too much hashing power from being concentrated on one copy of the history.  If anyone has an idea for how this could be achieved I’d really like to hear it.  This would be another way of preventing the industrial miners from sucking all the air out of the room.  I’d much rather see 100,000 small miners (and full network nodes) than 10 giants.

Hope this can spark some discussion.  I decided to post it under the altcoin area since I don't think the existing Bitcoin could be modified to incorporate such a concept.  Plus, it would be so disruptive to the status quo in Bitcoin that it would never be accepted if it could be done.

StuffOfInterest (hobby miner, programmer, and what if idea speculator)
6  Other / Beginners & Help / Decided to jump in with my mini-minter (photo included) on: October 11, 2013, 11:27:17 AM
While sitting around during the government shutdown (locked out from my contract work site) I decided to finally spend some time learning about Bitcoin.  Over the course of a few days I setup BitMinter on a PC with an OpenCL compatible video card and let it start working (at a fantastic 18 MH/s).  Next I setup a wallet on Blockchain.info to receive all those new minted coins (yea, like that will ever happen with the video card miner).  Continuing on, just to see what it would do, I installed the full Bitcoin-QT client and let it sync up.  Finally, so that I can get money in and out eventually, I setup accounts on Dwolla and CampBX, started priming the pump with a small transaction, and will not sit back and wait a month so I can bring cash in, convert it to Bitcoin, and move it on to my wallet (or the other way, of course).

After letting this run for a couple of days and reading more about the mining hardware options I took the big plunge.  For $154 I picked up seven of the USB Block Erupters, a USB hub, and a small USB connected fan.  The parts showed up yesterday and I'm now hashing along at about 2,300 MH/s.  At this rate I may actually see a few mBTC before the difficultly level shoots high enough that I'll consume more in power than what the miners can produce in $ equivalent coins.  According to one calculator that point will come in about six months.  It also shows that I'll never break even on my investment.

So, with no hope of ever breaking even why did I start this?  Really just to learn about the technology.  If nothing else, my little mini-minter makes a nice piece of desk art.  The little lights flashing every time a work unit completes is fun to watch out of the corner of my eye when working.

Now, for a prediction.  I do think the difficultly level will plateau or at least slow down its increase in the near future.  When the coin produced are worth at the power consumption level there is no incentive for people to stand up any more of the $10K plus hashing rigs as there will never be a return on investment.  There may be a few hobbyists like me who still bring on small setups and keep a slight increase in the difficultly level but that could also be offset by larger rigs dropping off if they are unable to make any money.  Guess we will see in the next six months.

Finally, a question.  I understand the reasoning for distributing the transaction fees to miners as it is the new blocks which protect the integrity of the Bitcoin network.  What I don't follow is why there is no commission be paid out to the people running the full Bitcoin-QT nodes?  Considering the amount of disk storage (12GB plus) and the network bandwidth (45 active connections to mine yesterday) there is a definite resource commitment to operate this software.  This software is also as critical as the miners as it keeps the data distributed and prevents anyone from taking over the network.  If there was a percentage of the transaction fee going to these node operators it would help to ensure there are always plenty of active nodes in the network.  Perhaps I'm missing something here.

Guess that is enough for my "hello world" message to get out of the newbie jail.

Here is a quick photo of the setup.  One of the Erupters is in an internal USB port in my computer while the other six and the fan are on the hub.
Pages: [1]
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!