README.md is based on README.txt - updated on 10/11/2019 (dd/mm/yyyy) - latest version can be found here: https://github.com/MultiPoolMiner/MultiPoolMiner/blob/master/README.txt
Any bitcoin donations are greatly appreciated: 1MsrCoAt8qM53HUMsUxvy9gMj3QVbHLazH
Done. You are all set to mine the most profitable coins and maximise your profits using MultiPoolMiner.
Listed in alphabetical order. Note: For basic operation not all parameters must be defined through start.bat.
-AllowedBadShareRatioAllowed ratio of bad shares (total / bad) as reported by the miner. If the ratio exceeds the configured threshold then the miner will marked as failed. Allowed values: 0.00 - 1.00. Default of 0 disables this check
-API_KeyRequired only if you are mining at MiningPoolHub. Adding this parameter / key pair allows MPM to gather the balances at the pool.The API_Key can be found in the MiningPoolHub Account detail page.
-APIPortPort for the MPM API and web GUI. The miner port range will start from APIPort +1. Default is 3999. 0 disables the API.
-AlgorithmSupported algorithms sorted by pool can be found at https://multipoolminer.io/algorithms. Use commas to separate multiple values.
The following algorithms are currently supported:
Bitcore, Blakecoin, Blake2s, BlakeVanilla, C11, CryptoNightV7, CryptoNightHeavy, Ethash, X11, Decred, Equihash, Groestl, HMQ1725, HSR, JHA, Keccak, Lbry, Lyra2RE2, Lyra2z, MyriadGroestl, NeoScrypt, Pascal, Phi, Phi2, Phi1612, Polytimos, Quark, Qubit, Scrypt, SHA256, Sib, Skunk, Skein, Timetravel, Tribus, Veltor, X11, X12, X11evo, X16R, X16S, X17, Yescrypt
*Note that the list of supported algorithms can change depending on the capabilities of the supported miner binaries. Some algos are now being mined with ASICs and are no longer profitable when mined with CPU/GPU and will get removed from MPM.
Note that the pool selected also needs to support the required algorithm(s) or your specified pool (-PoolName) will be ignored when mining certain algorithms. The -Algorithm command is higher in execution hierarchy and can override pool selection. This feature comes handy when you mine on Zpool but also want to mine ethash coins (which is not supported by Zpool). WARNING! If you add all algorithms listed above, you may find your earnings spread across multiple pools regardless what pool(s) you specified with the -PoolName command.
-BasePowerUsageAdditional base power usage (in Watt) for running the computer, monitor etc. regardless of mining hardware. Allowed values: 0.0 - 999, default is 0
-BenchmarkIntervalMultiPoolMiner's update interval in seconds during benchmarks / power metering. This is a universal timer for running the entire script (downloading/processing APIs, calculation etc). It determines how long a benchmark is run for each miner file (miner/algorithm/coin). Default is 60.Note: This value correlates with -MinHashRateSamples. If you set -MinHashRateSamples too high, then MPM cannot get enough samples for reliable measurement (recommendation: 10 or more). In this case increase the benchmark interval length.
-CoinName [Zcash, ZeroCoin etc.]Limit mining to the listed coins only; this is also a per-pool setting (see Advanced Configuration). Use commas to separate multiple values.Note: Only the pools ending in ...-Coin expose all coin names in their API. Check the web dashboard / pools to see which pools expose which values.
-ConfigFile [Path\ConfigFile.txt]The default config file name is '.\Config.txt'If the config file does not exist MPM will create a config file with default values. If the file name does not have an extension MPM will add .txt file name extension.By default MPM will use the values from the command line. If you hardcode config values directly in the config file, then these values will override the command line parameters (see Advanced Configuration).
-Currency [BTC, USD, EUR, GBP, ETH ...]Choose the default currency or currencies your profit stats will be shown in. Use commas to separate multiple values.Important: MultiPoolMiner will use the first currency in the list as main currency. All profit / earning numbers will be displayed in the main (=first in the list) currency.Note: Instead af BTC you can also use mBTC (= BTC / 1000).
-CurrencySymbol [BTC, LTC, ZEC etc.]Limit mining to the listed currency only; this is also a per-pool setting (see Advanced Configuration). Use commas to separate multiple values.Note: Only the pools ending in ...-Coin expose all currency symbols in their API. Check the web dashboard / pools to see which pools expose which values.
-DashboardLaunch web dashboard after MPM start.
-DelaySpecify the number of seconds required to pass before opening each miner. It is useful when cards are more sensitive to switching and need some extra time to recover (eg. clear DAG files from memory)
-DeviceNameChoose the relevant GPU(s) and/or CPU mining. [CPU, GPU, GPU#02, AMD, NVIDIA, AMD#02, OpenCL#03#02 etc.]. Use commas to separate multiple values.
-DisableDevFeeMiningDisable miner developer fees (Note: not all miners support turning off their built in fees, others will reduce the hashrate).This is also a per-miner setting (see Advanced Configuration).
-DisableDeviceDetectionAll miner by default create separate instances for each card model.To disable add -DisableDeviceDetection to your start batch file. This decreases profit.Note: Changing this parameter this will trigger some benchmarking.
-DisableEstimateCorrectionSome pools overestimate the projected profits.By default MPM will reduce the projected algo price by a correction factor (actual_last24h / estimate_last24h) to counter pool the overestimated prices.Note: Not all pools include the information required for this to work in their API (currently know are MiningPoolHub & Nicehash). For these pools this setting is ignored.This is also a per-miner setting (see Advanced Configuration).
-DisableMinersWithDevFeeUse only miners that do not have a dev fee built in.
-DonateDonation of mining time in minutes per day to aaronsace. Default is 24, minimum is 10 minutes per day (less than 0.7% fee). If Interval is set higher than the donation time, the interval will prime. The downloaded miner software can have their own donation system built in. Check the readme file of the respective miner used for more details.
-ExcludeAlgorithmSimilar to the -Algorithm command but it is used to exclude unwanted algorithms. Supported algorithms sorted by pool can be found at https://multipoolminer.io/algorithms. Use commas to separate multiple values.This is also a per-pool setting (see Advanced Configuration).
-ExcludeCoinName [Zcash, ZeroCoin etc.]Similar to the -CoinName command but it is used to exclude selected coins from being mined. Use commas to separate multiple values.This is also a per-pool setting (see Advanced Configuration).Note: Only the pools ending in ...-Coin expose all coin names in their API. Check the web dashboard / pools to see which pools expose which values.
-ExcludeCurrencySymbol [DGB, LTC, ZEC etc.]Similar to the -CurrencySymbol command but it is used to exclude selected currency symbols from being mined. Use commas to separate multiple values.This is also a per-pool setting (see Advanced Configuration).Note: Only the pools ending in ...-Coin expose all currency symbols in their API. Check the web dashboard / pools to see which pools expose which values.
-ExcludeDeviceNameSimilar to the -DeviceName command but it is used to exclude unwanted devices for mining. [CPU, GPU, GPU#02, AMD, NVIDIA, AMD#02, OpenCL#03#02 etc.]. Use commas to separate multiple values.
-ExcludeMinerNameSimilar to the -MinerName command but it is used to exclude certain miners you don't want to use. This is useful if a miner is causing issues with your machine. Use commas to separate multiple values.Important: Newer miners, e.g. ClaymoreEthash create several child-miner names, e.g. ClaymoreEthash-GPU#01-Pascal-40. These can also be used with -ExcludeMinerName.The parameter value(s) can be in one of the 3 forms: MinerBaseName e.g. 'TeamRed', MinerBaseName-Version, e.g. 'TeamRed-v0.5.6' or MinerName, e.g. 'TeamRed-v0.5.6-1xEllesmere8GB'. Use commas to separate multiple values.
-ExcludePoolNameSimilar to the -PoolName command but it is used to exclude unwanted mining pools. Use commas to separate multiple values.
-MinHashRateSamplesMinimum number of hashrate samples MPM will collect during benchmark per interval (higher numbers produce more exact numbers, but might prolong benchmaking). Allowed values: 10 - 99 (default is 10)Note: This value correlates with -BenchmarkInterval. If MPM cannot get the minimum valid has rate samples during the configured interval, it will automatically extend the interval to up to 3x the interval length.
-HashRateSamplesPerIntervalApproximate number of hashrate samples that MPM tries to collect per interval (higher numbers produce more exact numbers, but use more CPU cycles and memory). Allowed values: 5 - 20Note: This value correlates with -Interval. If you set -Interval too short, then MPM cannot get enough samples for reliable measurement (recommendation: 10 or more). In this case increase the interval length.
-HWiNFO64_SensorMappingCustom HWiNFO64 sensor mapping, only required when $MeasurePowerUsage is $true, see ConfigHWinfo64.pdfNote: This requires advanced configuration steps (see ConfigHWinfo64.pdf)
-IgnoreFeesBeginning with version 3.1.0 MPM makes miner and pool fees part of the profitability calculation. This will lead to somewhat lower, but more accurate profit estimates.Include this command to ignore miner and pool fees (as older versions did)
-IgnorePowerCostInclude this command to ignore the power costs when calculating profit. MPM will use the miner(s) that create the highest earning regardless of the power cost, so the resulting profit may be lower.
-IntervalMultiPoolMiner's update interval in seconds. This is an universal timer for running the entire script (downloading/processing APIs, calculation etc). It also determines how long a benchmark is run for each miner file (miner/algorithm/coin). Default is 60.Note: This value correlates with -MinHashRateSamples. If you set -MinHashRateSamples too short, then MPM cannot get enough samples for reliable measurement (anything over 10 is fine). In this case increase the interval length.
-IntervalMultiplierInterval multiplier per algorithm during benchmarking, if an algorithm is not listed the default of 1 is used.The default values are @{"EquihashR15053" = 2; "Mtp" = 2; "MtpNicehash" = 2; "ProgPow" = 2; "Rfv2" = 2; "X16r" = 5; "X16Rt" = 3; "X16RtGin" = 3; "X16RtVeil" = 3}Note: The default values can be overwritten by specifying other values in the config file (Advanced configuration via config file required, see below).
-MeasurePowerUsageInclude this command to to gather power usage per device. This is a pre-requisite to calculate power costs and effective earnings.Note: This requires advanced configuration steps (see ConfigHWinfo64.pdf)
-MinAccuracyOnly pools with price accuracy greater than the configured value. Allowed values: 0 - 1 (default is 0.5 = 50%)Sometimes pools report erroneously high price spikes, just to self-correct after a few intervals. A value of 0.5 will ignore any princing information with a margin of error greater than 50%.
-MinerNameSpecify to only include (restrict to) certain miner applications.The parameter value(s) can be in one of the 3 forms: MinerBaseName e.g. 'TeamRed', MinerBaseName-Version, e.g. 'TeamRed-v0.5.6' or MinerName, e.g. 'TeamRed-v0.5.6-1xEllesmere8GB'. Use commas to separate multiple values.
-MinerstatusKeyBy default the MPM monitor uses the BTC address ('-Wallet') to identify your mining machine (rig). Use -MinerstatusKey [your-miner-status-key] to anonymize your rig. To get your minerstatuskey goto to https://multipoolminer.io/monitor
-MinerstatusURL https://multipoolminer.io/monitor/miner.phpReport and monitor your mining rig's status by including the command above. Wallet address must be set even if you are only using MiningPoolHub as a pool. You can access the reported information by entering your wallet address on the https://multipoolminer.io/monitor web address. By using this service you understand and accept the terms and conditions detailed in this document (further below).
-MinWorkerMinimum numner of workers at the pool required to mine on algo / coin, if less skip the algo / coin, there is little point in mining an algo or coin if there are only very few miners working on it, default: {"*": = 10}, to always mine all coins set to 0.Wildcards (* and ?) for the algorithm names are supported. If an algorithm name/wildcard matches more than one entry then the lower number takes priority.This is also a per-pool setting (see Advanced Configuration).
-PoolBalancesUpdateIntervalMPM queries the pool balances every n minutes. Default is 15, minimum is 0 (=on every loop). MPM does this to minimize the requests sent to the pools. Pools usually do not update the balances in real time, so querying on each loop is unnecessary.Note: The balance overview is still shown on each loop.
-Poolname [ahashpool[-algo / -coin], blazepool[-algo / -coin], blockmasters[-algo / -coin], hashrefinery[-algo / -coin], miningpoolhub[-algo / -coin], nicehash(old), nlpool[-algo / -coin], phiphipool (deprecated), ravenminer, zergpool[-algo / -coin], zpool[-algo / -coin]]The following pools are currently supported (in alphabetical order); use commas to separate multiple values:
- AHashPool-Algo / AHashPool-Coin https://www.ahashpool.com/
Payout in BTC (Bitcoin address must be provided using the *-Wallet* command)
AHashPool-Coin allows mining selected coins only, e.g mine only ZClassic (Advanced configuration via config. file required, see below).
- BlazePool-Algo / BlazePool-Coin http://www.blazepool.com/
Payout in BTC (Bitcoin address must be provided using the *-Wallet* command)
BlazePool-Coin allows mining selected coins only, e.g mine only ZClassic (Advanced configuration via config. file required, see below).
- BlockMasters-Algo / BlockMasters-Coin http://www.blockmasters.co/
Payout in BTC (Bitcoin address must be provided using the -wallet command, see below), or any currency available in API (Advanced configuration via config file required, see below).
BlockMasters-Coin allows mining selected coins only, e.g mine only ZClassic (Advanced configuration via Config.txt required, see below).
- HashRefinery-Algo / HashRefinery-Coin http://pool.hashrefinery.com
Payout in BTC (Bitcoin address must be provided using the *-Wallet* command)
HashRefinery-Coin allows mining selected coins only, e.g mine only ZClassic (Advanced configuration via config. file required, see below).
- MiningPoolHub-Algo / MiningPooHub-Coin https://miningpoolhub.com/
- 'miningpoolhub-algo' parameter uses the 17xxx ports therefore allows the pool to decide on which coin is mined of a specific algorithm
- 'miningpoolhub-coin' allows for MultiPoolMiner to calculate and determine what is mined from all of the available coins (20xxx ports).
Usage of the 'miningpoolhub' parameter is recommended as the pool have internal rules against switching before a block is found therefore prevents its users losing shares submitted due to early switching. A registered account is required when mining on MiningPoolHub (username must be provided using the *-Username* command).
Payout in BTC (Bitcoin address must be provided using the *-Wallet* command), or any currency available in API (Advanced configuration via config file required, see below).
MiningPooHub-Coin allows mining selected coins only, e.g mine only ZClassic (Advanced configuration via config file required, see below).
- Nicehash(old) https://www.nicehash.com / https://old.nicehash.com
Payout in BTC (Bitcoin address must be provided using the *-Wallet* command) or BCH, ETX, LTC, XRP or AND ZEC (currency must be provided in config file (Advanced configuration via config file required, see below).
- NLPool https://www.nlpool.nl/
Payout in BTC (Bitcoin address must be provided using the -wallet command, see below), LTC or any currency available in API (Advanced configuration via config file required, see below).
- PhiPhiPool https://www.phi-phi-pool.com/ (Deprecated)
Note: PhiPhiPool no longer offers auto-conversion to BTC. Do NOT mine with a BTC address.
A separate wallet address for each mined currency must be provided in config file (Advanced configuration via config file required, see below).
- Ravenminer https://ravenminer.com
Payout in RVN. A separate RVN wallet address must be provided in config file (Advanced configuration via config file required, see below).
- ZergPool-Algo / ZergPool-coin http://zergpool.eu
Payout in BTC (Bitcoin address must be provided using the *-Wallet* command), or any currency available in API (Advanced configuration via config file required, see below).
ZergPool-Coin allows mining selected coins only, e.g mine only ZClassic (Advanced configuration via config file required, see below).
- Zpool-Algo / Zpool-Coin http://www.zpool.ca/
Payout in BTC (Bitcoin address must be provided using the *-Wallet* command), or any currency available in API (Advanced configuration via config file required, see below).
Zpool-Coin allows mining selected coins only, e.g mine only ZClassic (Advanced configuration via config file required, see below).
***IMPORTANT**: For the list of default configured pools consult 'start.bat.' This does not rule out other pools to be included. Selecting multiple pools is allowed and will be used on a failover basis OR if first specified pool does not support that algorithm/coin. See the *-Algorithm* command for further details and example.*
-PowerPricesPower price per kW·h, set value for each time frame, e.g. {"00:00"=0.3;"06:30"=0.6;"18:30"=0.3}, 24hr format!
-PricePenaltyFactorDefault factor with which MPM multiplies the prices reported by ALL pools. The default value is 1 (valid range is from 0.1 to 1.0).E.g. If you feel that the general profit estimations as reported by MPM are too high, e.g. %20, then set -PricePenaltyFactor to 0.8.This is also settable per pool (see advanced configuration below). The value set on the pool level will override this general setting.
-ProfitabilityThreshold = 0Minimum profit (in $Currency[0]) that must be made otherwise all mining will stop, set to 0 to allow mining even when making losses. Allowed values: 0.0 - 999, default is 0
-ProxySpecify your proxy address if applicable, i.e http://192.0.0.1:8080
-Region [Europe/US/Asia]Choose your region or the region closest to you.
-ReportStatusIntervalSeconds until next miner status update (https://multipoolminer.io/monitor). Allowed values 30 - 300. Set to 0 to disable status reporting.
-ShowAllMiners (replaces '-UseFastestMinerPerAlgoOnly' as used in versions before 3.3.0)Include this command to list all available miners per algo and device index in the summary screen.By default, if there are several miners available to mine the same algo, only the most profitable of them will be listed in the summary screen.Note: In benchmark mode ALL available miners wil be listed
-ShowAllPoolBalancesInclude this command to display the balances of all pools (including those that are excluded with -ExcludeMinerName) on the summary screen and in the web GUI.
-ShowMinerWindowInclude this command to show the running miner windows (minimized).By default MPM hides most miner windows as to not steal focus (Miners of API type 'Wrapper' will remain hidden). Hidden miners write their output to files in the Log folder.
-ShowPowerUsageInclude this command to show power usage in miner overview listNote: This requires advanced configuration steps (see ConfigHWinfo64.pdf)
-SingleAlgoMiningTo prevent dual algorithm mining, add -SingleAlgoMining to your start batch file.
-SSLSpecifying the -SSL command (without a boolean value of true or false) will restrict the miner application list to include only the miners that support secure connection.
-SwitchingPreventionSince version 2.6, the delta value (integer) that was used to determine how often MultiPoolMiner is allowed to switch, is now user-configurable on a scale of 1 to infinity on an intensity basis. Default is 1 (Start.bat default is 2). Recommended values are 1-10 where 1 means the most frequent switching and 10 means the least switching. Please note setting this value to zero (0) will not turn this function off! Please see further explanation in MULTIPOOLMINER'S LOGIC section below.
-UserNameYour username you use to login to MiningPoolHub.
-WalletYour Bitcoin payout address. Required when mining on AhashPool, BlazePool, Hash Refinery, Nicehash and Zpool (unless you have defined another payout currency (Advanced configuration via config file required, see below).
-WarmupTimeTime a miner is allowed to warm up before it could get marked as failed, e.g. to compile the binaries or to get the API ready. Default is 30 (seconds).
-WatchdogInclude this command to enable the watchdog feature which detects and handles miner and other related failures.It works on a unified interval that is defaulted to 60 seconds. Watchdog timers expire if three of those intervals pass without being kicked. There are three stages as to what action is taken when watchdog timers expire and is determined by the number of related expired timers.
Watchdog timers reset after three times the number of seconds it takes to get to stage 3.
-WorkerNameTo identify your mining rig.
---------- (check "start.bat" file in root folder) ----------
@echo offcd /d %~dp0
rem ON MINING RIGS SET MININGRIG=TRUESET MININGRIG=FALSE
if not "%GPU_FORCE_64BIT_PTR%"=="1" (setx GPU_FORCE_64BIT_PTR 1) > nulif not "%GPU_MAX_HEAP_SIZE%"=="100" (setx GPU_MAX_HEAP_SIZE 100) > nulif not "%GPU_USE_SYNC_OBJECTS%"=="1" (setx GPU_USE_SYNC_OBJECTS 1) > nulif not "%GPU_MAX_ALLOC_PERCENT%"=="100" (setx GPU_MAX_ALLOC_PERCENT 100) > nulif not "%GPU_SINGLE_ALLOC_PERCENT%"=="100" (setx GPU_SINGLE_ALLOC_PERCENT 100) > nulif not "%CUDA_DEVICE_ORDER%"=="PCI_BUS_ID" (setx CUDA_DEVICE_ORDER PCI_BUS_ID) > nul
set "command=& .\multipoolminer.ps1 -Wallet 1Q24z7gHPDbedkaWDTFqhMF8g7iHMehsCb -UserName aaronsace -WorkerName multipoolminer -Region europe -Currency btc,usd,eur -DeviceName amd,nvidia,cpu -PoolName miningpoolhubcoins,zpool,nicehash -Algorithm blake2s,cuckaroo39,cuckatoo31,cryptonightR,cryptonightV8,cryptonightheavy,decrednicehash,ethash,ethash2gb,ethash3gb,equihash,equihash1445,equihash1505,keccak,lbry,lyra2re3,mtp,mtpnicehash,neoscrypt,pascal,sib,skein,skunk,sonoa,timetravel10,x16r,x16rt,x16s,x17,x22i -Donate 24 -Watchdog -MinerStatusURL https://multipoolminer.io/monitor/miner.php -SwitchingPrevention 2"
if exist "~*.dll" del "~*.dll" > nul 2>&1
if /I "%MININGRIG%" EQU "TRUE" goto MINING
rem Launch web dashboardset "command=%command% -Dashboard"
if exist ".\SnakeTail.exe" goto SNAKETAIL
start pwsh -noexit -executionpolicy bypass -command "& .\reader.ps1 -log 'MultiPoolMiner_\d\d\d\d-\d\d-\d\d.txt' -sort '^[^_]*_' -quickstart"goto MINING
:SNAKETAILtasklist /fi "WINDOWTITLE eq SnakeTail - MPM_SnakeTail_LogReader*" /fo TABLE 2>nul | find /I /N "SnakeTail.exe" > nul 2>&1if "%ERRORLEVEL%"=="1" start /min .\SnakeTail.exe .\MPM_SnakeTail_LogReader.xml
:MININGpwsh -noexit -executionpolicy bypass -windowstyle maximized -command "%command%"
echo Powershell 6 or later is required. Cannot continue.pause
---------- END OF CONTENT OF START.BAT ----------
MPM supports customized configuration via config files. The default config file name is '.\Config.txt'.If you do not include the command line parameter -ConfigFile [Path\FileName.txt] then MPM will use the default file name.
If the config file does not exist MPM will create a config file with default values. If the file name does not have an extension MPM will add .txt file name extension.The default config file contains only the parameters which are also available per command line.Note: More config items are added to the live configuration during runtime. For full list of available config items at runtime see the API at http://localhost:3999/config. All items could also be added manually to the config file (use with caution as this might lead to unpredictable results).
The config file is a JSON file and human readable / editable. A good primer for understanding the JSON structure can be found here: https://www.tutorialspoint.com/json/index.htm
Warning: The JSON file structure is very fragile - every comma counts, so be careful when editing this file manually. To test the validity of the structure use a web service like https://jsonblob.com (copy/paste the complete file).
{
"Algorithm": "$Algorithm",
"AllowedBadShareRatio": "$AllowedBadShareRatio",
"API_ID": "$API_ID",
"API_Key": "$API_Key",
"APIPort": "$APIPort",
"BasePowerUsage": "$BasePowerUsage",
"BenchmarkInterval": "$BenchmarkInterval",
"CoinName": "$CoinName",
"ConfigFile": "$ConfigFile",
"Currency": "$Currency",
"CurrencySymbol": "$CurrencySymbol",
"Dashboard": "$Dashboard",
"Debug": "$Debug",
"Delay": "$Delay",
"DeviceName": "$DeviceName",
"DisableDevFeeMining": "$DisableDevFeeMining",
"DisableDeviceDetection": "$DisableDeviceDetection",
"DisableEstimateCorrection": "$DisableEstimateCorrection",
"DisableMinersWithDevFee": "$DisableMinersWithDevFee",
"Donate": "$Donate",
"ErrorAction": "$ErrorAction",
"ErrorVariable": "$ErrorVariable",
"ExcludeAlgorithm": "$ExcludeAlgorithm",
"ExcludeCurrencySymbol": "$ExcludeCurrencySymbol",
"ExcludeCoinName": "$ExcludeCoinName",
"ExcludeDeviceName": "$ExcludeDeviceName",
"ExcludeMinerName": "$ExcludeMinerName",
"ExcludePoolName": "$ExcludePoolName",
"HashRateSamplesPerInterval": "$HashRateSamplesPerInterval",
"HWiNFO64_SensorMapping": "$HWiNFO64_SensorMapping",
"IgnoreFees": "$IgnoreFees",
"IgnorePowerCost": "$IgnorePowerCost",
"InformationAction": "$InformationAction",
"InformationVariable": "$InformationVariable",
"Interval": "$Interval",
"IntervalMultiplier": "$IntervalMultiplier",
"MeasurePowerUsage": "$MeasurePowerUsage",
"MinAccuracy": 0.5,
"MinerName": "$MinerName",
"MinerStatusKey": "$MinerStatusKey",
"MinerStatusUrl": "$MinerStatusUrl",
"MinHashRateSamples": "$MinHashRateSamples",
"Currency": "$Currency",
"MinWorker": "$MinWorker",
"OutBuffer": "$OutBuffer",
"OutVariable": "$OutVariable",
"PipelineVariable": "$PipelineVariable",
"PoolBalancesUpdateInterval": "$PoolBalancesUpdateInterval",
"PoolName": "$PoolName",
"PowerPrices": "$PowerPrices",
"PricePenaltyFactor": "$PricePenaltyFactor",
"ProfitabilityThreshold": "$ProfitabilityThreshold",
"Proxy": "$Proxy",
"Region": "$Region",
"ReportStatusInterval": "$ReportStatusInterval",
"ShowAllMiners": "$ShowAllMiners",
"ShowAllPoolBalances": "$ShowAllPoolBalances",
"ShowMinerWindow": "$ShowMinerWindow",
"ShowPowerUsage": "$ShowPowerUsage",
"SingleAlgoMining": "$SingleAlgoMining",
"SSL": "$SSL",
"SwitchingPrevention": "$SwitchingPrevention",
"UserName": "$UserName",
"Verbose": "$Verbose",
"Wallet": "$Wallet",
"WarmupTime": "$WarmupTime",
"WarningAction": "$WarningAction",
"WarningVariable": "$WarningVariable",
"Watchdog": "$Watchdog",
"WorkerName": "$WorkerName",
"Pools": {},
"MinersLegacy": {},
"Wallets": {
"BTC": "$Wallet"
},
"VersionCompatibility": "3.3.0"
}
There is a section for Pools, Miners and a general section
Settings for each configured pool are stored in its own subsection. These settings are only valid for the named pool.
Only mine the selected coins at the specified pool.
E.g. To mine only Zcash & ZeroCoin at Zpool:
"Zpool-Coin": {
"CoinName": [
"Zcash",
"ZeroCoin"
]
}
Note: Only the pools ending in ...-Coin expose all coin names in their API. Check the web dashboard / pools to see which pools expose which values.
Only mine the selected currencies at the specified pool.
E.g. To mine only LTC & ZEC at Zpool:
"Zpool-Coin": {
"CurrencySymbol": [
"LTC",
"ZEC"
]
}
Note: Only the pools ending in ...-Coin expose all currency symbols in their API. Check the web dashboard / pools to see which pools expose which values.
Some pools overestimate the projected profits. By default MPM will reduce the projected algo price by a correction factor (actual_last24h / estimate_last24h) to counter the pool overestimated prices.E.g. To disable this at Zpool:
"Zpool-Algo": {
"DisableEstimateCorrection": false
}
####ExcludeAlgorithm per pool
Do not use the configured algorithms for mining at the specified pool.
E.g. To NOT mine Equihash and Ethash2gb at Zpool:
"Zpool-Coin": {
"ExcludeAlgorithm": [
"Equihash",
"Ethash2gb"
]
}
Exclude selected coins from being mined at the specified pool.
E.g. To NOT mine Zcash & ZeroCoin at Zpool:
"Zpool-Coin": {
"ExcludeCoinName": [
"Zcash",
"ZeroCoin"
]
}
Note: Only the pools ending in ...-Coin expose all coin names in their API. Check the web dashboard / pools to see which pools expose which values.
Exclude selected currency symbol from being mined at the specified pool.
E.g. To NOT mine DGB & LTC at Zpool:
"Zpool-Coin": {
"ExcludeCurrencySymbol": [
"DGB",
"LTC"
]
}
Note: Only the pools ending in ...-Coin expose all currency symbols in their API. Check the web dashboard / pools to see which pools expose which values.
Do not use the pool endpoints in select regions. This may be useful when a pool has a problem with its endpoints in some regions, e.g. https://bitcointalk.org/index.php?topic=472510.msg51637436#msg51637436.
E.g. To NOT use the MiningPoolHub mining endpoints in region 'Europe':
"MiningPoolHub-Algo": {
"ExcludeRegion": [
"Europe"
]
}
Note: The values for 'Regions' must match the definitions in 'Regions.txt'.
This parameter allows to define a required minimum number of workers at the pool per algorithm. If there are less then the configured number of workers MPM will skip the affected algorithms.Wildcards (* and ?) for the algorithm names are supported. If an algorithm name/wildcard matches more than one entry then the lower number takes priority.Important: The general '-MinWorker' value is always applied. Only algorithms matching the global workers count will eventually be handled by the per-pool config.
E.g. To ignore 'Ethash*' & 'Equihash1445' algorithms at MiningPoolHub if there are less than 10 workers set MinWorker like this:
"MiningPoolHub-Algo": {
"MinWorker": {
"Ethash*": 10,
"Equihash1445": 10
}
}
Note: Not all pools support this, for more information consult the pools web page or check the MPM web GUIIf -MinWorker is set on a general AND pool level, then the lower number takes priority.
If you have a NiceHash internal wallet you can configure MPM/NiceHash Pool to mine to the internal address. MPM will then use the lower pool fee of 1% for calculations.
To use the NiceHash internal wallet modify the NiceHash pool section (you may have to create is first). Enter your "<YOUR_NICEHASH_INTERNAL_WALLET>" (of course you need to insert the real BTC address), and set the flag '"IsInternalWallet": true':
"NiceHash": {
"Wallets": {
"BTC": "<YOUR_NICEHASH_INTERNAL_WALLET>"
},
"IsInternalWallet": true
}
If a pool allows payout in another currency than BTC you can set the currency you wish to be paid.By default MPM will add ALL currencies configured by $Wallet as possible payout currencies for the pool.
For each pool you can statically add a section similar to this to your config file:
"Zpool-Algo": {
"Wallets": {
"BTC": "$Wallet"
},
"Worker": "$WorkerName"
}
The payout currency is defined by this line:"BTC": "$Wallet", (MPM will use the the wallet address from the start.bat file)
E.g. to change the payout currency for Zpool to LiteCoin replace the line for BTC with "LTC": "<YOUR_LITECOIN_ADDRESS>", (of course you need to insert a real LTC address)
"Zpool-Algo": {
"Wallets": {
"LTC": "<YOUR_LITECOIN_ADDRESS>"
},
"Worker": "$WorkerName"
}
Note: Not all pools support this, for more information consult the pools web page
If you feel that a pool is exaggerating its estimations then set a penalty factor to lower projected projected calculations.
E.g. You feel that Zpool is exaggerating its estimations by 10% - Set PricePenaltyFactor to 0.9:
"Zpool-Algo": {
"PricePenaltyFactor": 0.9
}
Note: This is also a general parameter (see -PricePenaltyFactor). If both parameters - general and pool - are present, then the pool parameter takes precedence.
Only use the pool endpoints is selected regions. This may be useful when a pool has a problem with its endpoints in some regions, e.g. https://bitcointalk.org/index.php?topic=472510.msg51637436#msg51637436.
E.g. To use MiningPoolHub mining endpoints in regions 'Asia' and 'US' ONLY:
"MiningPoolHub-Algo": {
"Region": [
"Asia",
"US"
]
}
Note: The values for 'Regions' must match the definitions in 'Regions.txt'.
Check the pools web page for more information first!For Blockmasters & ZergPool(Coins) solo or party mining edit the config file like this:
"Pools": {
"Blockmasters-Algo": {
"PasswordSuffix": {
"Algorithm": {
"*": "",
"Equihash": ",m=solo"
}
}
},
"ZergPool-Coin": {
"PasswordSuffix": {
"Algorithm": {
"*": "",
"Equihash": ",m=solo"
},
"CoinName": {
"*": "",
"Digibyte": ",m=solo"
}
}
}
}
"*" stands for any algorithm / coinname. No other wildcards are allowed.All values are cumulative, so if you specify a value for algorithm AND coinname, then both values will be appended.
Settings for each configured miner are stored in its own subsection. These settings are only valid for the named miner.
E.g. To exclude the Ethash3gb algorithm from any version of the ClaymoreEthash miner:
"MinersLegacy": {
"ClaymoreEthash": {
"*": {
"ExcludeAlgorithm": [
"Ethash2gb"
]
}
}
}
E.g. To exclude the Ethash2gb or Blake2s algorithms from ClaymoreEthash-v15.0 miner:
"MinersLegacy": {
"ClaymoreEthash": {
"v15.0": {
"ExcludeAlgorithm": [
"Blake2s",
"Ethash2gb"
]
}
}
}
"*" stands for ANY miner version.The algorithm name must be entered in the normalized form as returned by Get-Algorithm.If both, a version specific and generic config ("*") exist, then all matching algorithms are excluded.
Note: not all miners support turning off their built in fees, others will reduce the hashrate, check the miners web page for more information
E.g. To disable the dev fee mining from any version of the ClaymoreEthash miner:
"MinersLegacy": {
"ClaymoreEthash": {
"*": {
"DisableDevFeeMining": true
}
}
}
E.g. To disable the dev fee mining from ClaymoreEthash-v15.0 miner:
"MinersLegacy": {
"ClaymoreEthash": {
"v15.0": {
"DisableDevFeeMining": true
}
}
}
"*" stands for ANY miner version.If this setting is defined in multiple places (version specific, version generic ("*") and global), then the most specific value is used.
The mining intensities for secondary algorithms can be configured in the config file.
The miner name must be entered without the ending version number (e.g. for ClaymoreEthash-v15.0 remove -v15.0)The algorithm names must be entered as the miner uses it, do not use the normalized algorithm name as returned by Get-Algorithm.
"MinersLegacy": {
"ClaymoreEthash": {
"*": {
"SecondaryAlgoIntensities": {
"blake2s": [
45,
60,
75
],
"pascal": [
30,
60,
90
]
}
},
"v15.0": {
"SecondaryAlgoIntensities": {
"decred": [
25,
40,
65
]
}
}
}
}
"*" stands for ANY versionIf both, specific (e.g. miner version) and generic config ("*") exist, then only the specific config is used. The generic config will be ignored entirely.If you do not specify clustom values for all algorithms, then the miners default values will be applied for the unconfigured algorithms.
Storing the miner configuration in the config file allows for easier version / miner file upgrades. There is no need to edit the miner files.
The miner name must be entered without the ending version number (e.g. for ClaymoreEthash-v15.0 remove -v15.0)The algorithm name must be entered in the normalized form as returned by Get-Algorithm.Note: All parameter values must be entered with a leading space (' ') character!
"MinersLegacy": {
"ClaymoreEthash": {
"*": {
"Commands": {
"*": " --no-crashreport",
"Ethash2gb": " -ethi 9",
"Ethash2gbPascal-20": " -colors"
},
"CommonCommands": ""
},
"v15.0": {
"Commands": {
"*": " --no-crashreport",
"Ethash2gb": " -ethi 9",
"Ethash2gbPascal-20": " -colors"
},
"CommonCommands": ""
}
}
}
"*" stands for ANY version or ANY algorithm.If both, specific (e.g. miner version / algorithm name) and generic config ("*") exist, then only the specific config is used. The generic config will be ignored entirely.Important: The miner config defined in the config file overrides all 'out-of-the-box' config that is defined in the miner definition file.
Commands: These settings will be added to the miner command line for the selected miner algorithm.CommonCommands: These settings will be added to the miner command line for ALL miner algorithms.Commands and CommonCommands are cumulative.
Note: If you configure Persistent miner configuration and Customize miner commands, then the config data from Persistent miner configuration take precedence.
MPM stores all default miner commands (= what algos to mine and the commands to do so) in the miner file. You can override these commands with your own by modifing the config file.
The miner name must be entered without the ending version number (e.g. for ClaymoreEthash-v15.0 remove -v15.0)The algorithm name must be entered in the normalized form as returned by Get-Algorithm.Commands must match the data structure as found in the existing miner files. Not all miners use the same parameters.
"MinersLegacy": {
"ClaymoreEthash": {
"*": {
"CustomCommands": [
{
"MainAlgorithm": "Ethash2gb",
"MinMemGB": 2,
"SecondaryAlgorithm": "blake2s",
"SecondaryIntensity": 25,
"Params": " -colors"
},
{
"MainAlgorithm": "ethash3gb",
"MinMemGB": 2,
"SecondaryAlgorithm": "blake2s",
"SecondaryIntensity": 35,
"Params": " -colors"
}
],
"CommonCommands": " -dbg -1"
},
"v15.0": {
"CustomCommands": [
{
"MainAlgorithm": "Ethash2gb",
"MinMemGB": 2,
"SecondaryAlgorithm": "blake2s",
"SecondaryIntensity": 25,
"Params": " -colors"
},
{
"MainAlgorithm": "ethash3gb",
"MinMemGB": 2,
"SecondaryAlgorithm": "blake2s",
"SecondaryIntensity": 35,
"Params": " -colors"
}
],
"CommonCommands": " -dbg -1"
}
}
}
"*" stands for ANY version or ANY algorithm.If both, specific (e.g. miner version / algorithm name) and generic config ("*") exist, then only the specific config is used. The generic config will be ignored entirely.Important: The custom miner commands defined in the config file override ALL 'out-of-the-box' commands that are defined in the miner definition file. Ensure you include all algorithms and the needed commands in the 'CustomCommands'.
Note: If you configure Persistent miner configuration and Customize miner commands, then the config data from Persistent miner configuration take precedence.
MPM can execute any program/script/batch file on any of these events:
Modify the config file to define the program and its parameters. E.g.
"MinersLegacy": {
"*": {
"PreStartCommand": "_ the command put here would be run before ANY miner gets started",
"PostStartCommand": "cmd.exe /c ECHO $((Get-Date).ToUniversalTime()): Starting miner ($($Miner.Name) {$(($Miner.Algorithm | ForEach-Object {\"$($_)@$($Pools.$_.Name)\"}) -join \"; \")}). >> .\\Logs\\minerstart.log",
"PreStopCommand": "REM run this command before the miner gets stopped",
"PostStopCommand": "cmd.exe /c ECHO $((Get-Date).ToUniversalTime()): Stopped miner ($($Miner.Name) {$(($Miner.Algorithm | ForEach-Object {\"$($_)@$($Pools.$_.Name)\"}) -join \"; \")}). >> .\\Logs\\minerstop.log",
"PostFailureCommand": "_ the command put here would be run after any miner failure"
},
"lolMinerEquihash": {
"*": {
"PreStartCommand": "'C:\\Program Files (x86)\\MSI Afterburner\\MSIAfterburner.exe' -Profile1",
"PostStartCommand": ""
"PreStopCommand": "_ the command put here would be run before lolMinerEquihash miner (any version) gets stopped",
"PostStopCommand": "",
"PostFailureCommand": ""
}
},
"CryptoDredge": {
"v0.22.0": {
"PreStartCommand": "'C:\\Program Files (x86)\\MSI Afterburner\\MSIAfterburner.exe' -Profile2",
"PostStartCommand": ""
"PreStopCommand": "_ the command put here would be run before CryptoDredge-v0.20.2 miner gets stopped",
"PostStopCommand": "",
"PostFailureCommand": "shutdown /r /t 10"
}
}
}
"*" stands for ANY miner or ANY miner version.The miner name must be entered without the ending version number (e.g. for CryptoDredge-v0.20.2 remove -v0.20.2)Important: If two or more entries match, then the more specific entry is executed.
Double quotes (") or backslashes must be escaped with backslash as shown below.To execute simple batch file commands you need to use 'cmd.exe /c '.
You can also use any MPM internal variables or simple powershell code like this:"PreStartCommand": "$(if (($Miner.Algorithm | Select-Object -Index 0) -eq "MTP") {"'C:\Program Files\Tools\MSI Afterburner\MSIAfterburner.exe' -Profile1"})","PostStartCommand": "cmd.exe /c ECHO $((Get-Date).ToUniversalTime()): Started miner ($($Miner.Name) {$(($Miner.Algorithm | ForEach-Object {"$($)@$($Pools.$.Name)"}) -join "; ")}). >> .\Logs\minerstart.log"
Settings in this section affect the overall behaviour of MPM and will take precedence over command line parameters.
Beginning with version 3.1.0 MPM makes miner and pool fees part of the profitability calculation. This will lead to somewhat lower, but more accurate profit estimates.
To ignore miner and pool fees (as older versions did) add '"IgnoreFees": true' to the general section:
{
"SwitchingPrevention": "$SwitchingPrevention",
"IgnoreFees": true
}
Some algorithms produce very fluctuating hash rate numbers. In oder to get more stable values these algorithms require a longer benchmark period.To override the defaults add a section similar to this to the general section in the config file (these are the default values):
"IntervalMultiplier": {
"EquihashR15053": 2,
"Mtp": 2,
"MtpNicehash": 2,
"ProgPow": 2,
"Rfv2": 2,
"X16r": 5,
"X16Rt": 3,
"X16RtGin": 3,
"X16RtVeil": 3
}
Note: The custom config section in the config file replaces the defaults for ALL algorithms. Any algorithm not explicitly configured will be set to the default value of 1 (unless there is a hardcoded value in the miner file).
Default factor with which MPM multiplies the prices reported by ALL pools. The default value is 1 (valid range is from 0.1 to 1.0).E.g. You feel that MPM is exaggerating its profit estimations by 20% for ALL pools - Set PricePenaltyFactor to 0.8:
}
"SwitchingPrevention": "$SwitchingPrevention",
"PricePenaltyFactor": 0.8
}
Note: This is also a pool parameter (see PricePenaltyFactor per pool). If both parameters - general and pool - are present, then the pool parameter takes precedence.
By default MPM hides most miner windows as to not steal focus. All miners write their output to files in the Log folder.
To show the miner windows add '"ShowMinerWindow": true' to the general section:
{
"SwitchingPrevention": "$SwitchingPrevention",
"ShowMinerWindow": true
}
Note: Showing the miner windows disables writing the miner output to log files. Miners of API type 'Wrapper' will remain hidden.
MPM can gather the pending BTC balances from all configured pools.
To display the balances of all enabled pools (excluding those that are excluded with -ExcludeMinerName) on the summary screen and in the web GUI add '"ShowPoolBalances": true' to the general section:{"SwitchingPrevention": "$SwitchingPrevention","ShowPoolBalances": true}
To display the sum of each currency in the balances (depending on 'ShowPoolBalancesExcludedPools' including those that are excluded with 'ExcludeMinerName') and the exchange rates for all currencies on the summary screen add '"ShowPoolBalancesDetails": true' to the general section:{"SwitchingPrevention": "$SwitchingPrevention","ShowPoolBalancesDetails": true}
To display the balances of all pools (including those that are excluded with -ExcludeMinerName) on the summary screen and in the web GUI add '"ShowPoolBalances": true' to the general section:{"SwitchingPrevention": "$SwitchingPrevention","ShowPoolBalancesExcludedPools": true}Note: Only balances in BTC are listed, other currencies are currently not supported.
As more and more algorithms can be mined with ASICs mining them with GPUs becomes unprofitable.To add algorithms to the list edit 'UnprofitableAlgorithms.txt' in the MPM directory.
[
"Bitcoin",
"Blake2s",
"BlakeCoin",
"BlakeVanilla",
"Cryptolight",
"Cryptonight",
"CryptonightV7",
"Decred",
"Groestl",
"Keccak",
"KeccakC",
"Lbry",
"Lyra2RE",
"Lyra2RE2",
"Lyra2z",
"MyriadGroestl",
"Nist5",
"Quark",
"Qubit",
"Scrypt",
"ScryptN",
"SHA256d",
"SHA256t",
"Sia",
"Sib",
"Skein",
"X11",
"X13",
"X14",
"X15"
]
Note: MPM will no longer mine/benchmark these algorithms as main algorithms, but they will still be used as secondary algorithm for dual miners.
[Price] x (1 - ([Fluctuation] x [Switching Prevention] x 0.9^[Intervals Past]))
i.e. 123 x (1 - (0.2 x 2 x 0.9^5)
where:
123 is BTC
1 is 100%
0.2 is 80% accuracy
0.9 is 10% reduction
5 is minutes if interval is 60 seconds
If SwitchingPrevention = 2 and accuracy of most profitable coin = 90%
Then NegativeValue = -20%
The negative value then decays by 10% every minute.
It can switch at any moment but to put the negative value into perspective:
Takes 6 minutes for 20% to reduce to 10%.
Takes 28 minutes for 20% to reduce to 1%.
If SwitchingPrevention = 4 and accuracy of most profitable coin = 90%
Then NegativeValue = -40%
It takes 13 minutes for 40% to reduce to 10%.
0.9 ^ 13 * 40 = 10
The percentage amount that a reported estimated profit value is reduced, is based on the calculation below.
Percent Estimated Profit Reduction = (Margin of Error * SwitchingPrevention) / (Value that grows exponentially based on the number of minutes current miner has been running)
This means that the longer the current miner is running, the less MPM takes the Margin of Error into consideration and the less it reduces the estimated profit value. By adjusting the -SwitchingPrevention value up, you increase the effect the Margin of Error has on the calculation and, therefore, increase the amount of current miner run-time required to reduce this effect.
In practice, this explains why when you first launch MPM it may pick a pool/algorithm combo that has a lower value in the "Currency/Day" column, as it is favoring a more accurate combo. Over time, assuming the more profitable pool/algorithm stays more profitable, the accuracy will have less and less weight in the miner selection calculation process until MPM eventually switches over to it.
Please note: that a new install of MultiPoolMiner has no historical information on which to build accurate "margin-of-error" values. MPM will, therefore, sometimes make less desirable miner selections and switch more often until it can gather enough coin data to stabilize its decision-making process.
MultiPoolMiner has a built in Web GUI at http://localhost:3999 (port is 3999 unless you have changed the default API port)
MultiPoolMiner allows basic monitoring through its built in API.
API data is available at http://localhost:3999/ (port is 3999 unless you have changed the default API port)
For a list of supported API commands open [MPM directory]APIDocs.html with your web browser.
There are known issues with the following miners not submitting shares or show higher hashrate than what they actually do:
"x17" = "" # X17
"x17" = " -i 20" # X17
ErrorCode error = method(handle, name, <IntPtr>Marshal.SizeOf<T>(),h.AddrOfPinnedObject(), out size);
[Math]::Min([Math]::Max($Stat.Week_Fluctuation * 2, 0.1), 0.9)
0.1), 0.9)
0.3), 0.75)