From 8d6b37d70180d30f549dfe60925487301e01d219 Mon Sep 17 00:00:00 2001 From: Useless Guru <30080938+UselessGuru@users.noreply.github.com> Date: Fri, 13 Sep 2024 17:03:46 +0200 Subject: [PATCH] v6.3.4 Enhancement: - Legacy GUI: -- button suspends core (same --P in console window) Fixes: - Core: Benchmarking or power usage measuring not stopping on time when no valid samples are found - Core: Watchdog not suspending algorithm@pool - Core: Watchdog suspending wrong miner Improvements: - Minor code optimizations Miner updates: - Rigel-v1.19.0 - SRBMinerMulti-v2.6.4 --- Balances/HashCryptos.ps1 | 4 +- Balances/HiveON.ps1 | 4 +- Balances/MiningDutch.ps1 | 4 +- Balances/NiceHash External.ps1 | 4 +- Balances/NiceHash Internal.ps1 | 4 +- Balances/ProHashing.ps1 | 4 +- Balances/ZergPool.ps1 | 4 +- Balances/Zpool.ps1 | 4 +- Brains/HashCryptos.ps1 | 4 +- Brains/MiningDutch.ps1 | 4 +- Brains/ProHashing.ps1 | 4 +- Brains/ZPool.ps1 | 4 +- Brains/ZergPool.ps1 | 4 +- Changelog.txt | 36 +- Config/Config.json | 163 ++ Config/Config.json_2024-09-08_10-01-01.backup | 165 ++ Config/Config.json_2024-09-08_15-55-17.backup | 163 ++ Config/Config.json_2024-09-08_16-52-58.backup | 163 ++ Config/Config.json_2024-09-08_20-57-48.backup | 163 ++ Config/Config.json_2024-09-13_11-00-02.backup | 163 ++ Config/Config.json_2024-09-13_11-06-41.backup | 164 ++ Config/PoolsConfig.json | 55 + Config/WindowSettings.json | 21 + Config/config.json_2024-09-09_10-53-35.backup | 163 ++ Config/config.json_2024-09-11_22-52-25.backup | 163 ++ Config/config.json_2024-09-11_22-53-10.backup | 164 ++ Config/config.json_2024-09-13_14-13-44.backup | 163 ++ Data/Algorithms.json | 2 + Data/CurrencyAlgorithm.json | 8 +- Data/DagData.json | 278 +-- Includes/APIServer.psm1 | 10 +- Includes/BalancesTracker.ps1 | 4 +- Includes/Core.ps1 | 24 +- Includes/Core_dev.ps1 | 1530 ----------------- Includes/Downloader.ps1 | 4 +- Includes/Include.psm1 | 6 +- Includes/LegacyGUI.ps1 | 139 +- Includes/MinerAPIs/BzMiner.ps1 | 4 +- Includes/MinerAPIs/Ccminer.ps1 | 4 +- Includes/MinerAPIs/EthMiner.ps1 | 4 +- Includes/MinerAPIs/FireIce.ps1 | 4 +- Includes/MinerAPIs/Gminer.ps1 | 4 +- Includes/MinerAPIs/HellMiner.ps1 | 4 +- Includes/MinerAPIs/MiniZ.ps1 | 4 +- Includes/MinerAPIs/NBMiner.ps1 | 4 +- Includes/MinerAPIs/NanoMiner.ps1 | 4 +- Includes/MinerAPIs/OneZero.ps1 | 4 +- Includes/MinerAPIs/Rigel.ps1 | 4 +- Includes/MinerAPIs/SRBMiner.ps1 | 4 +- Includes/MinerAPIs/TeamBlackMiner.ps1 | 4 +- Includes/MinerAPIs/Trex.ps1 | 4 +- Includes/MinerAPIs/Xgminer.ps1 | 4 +- Includes/MinerAPIs/XmRig.ps1 | 4 +- Includes/MinerAPIs/lolMiner.ps1 | 4 +- Miners/BzMiner-v21.4.0.ps1 | 4 +- Miners/CcminerAlexis78-v1.5.2.ps1 | 4 +- Miners/CcminerDyn-v1.0.2.ps1 | 4 +- Miners/CcminerKlausT-v8.25.ps1 | 4 +- Miners/CcminerKlausT-v8.26x2.ps1 | 4 +- Miners/CcminerLyra2z330-v8.21r9.ps1 | 4 +- Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1 | 4 +- Miners/CcminerMemeHash-v2.5.5.9.ps1 | 4 +- Miners/CcminerNeoscryptXaya-v0.2.ps1 | 4 +- Miners/CcminerVerusCpu-v3.8.3.ps1 | 4 +- Miners/CcminerVerusGpu-v3.8.3.ps1 | 4 +- Miners/ClaymoreNeoscrypt-v1.2.ps1 | 4 +- Miners/CpuMiner-v1.4.ps1 | 4 +- Miners/CpuMinerAurum-v3.23.1.ps1 | 4 +- Miners/CryptoDredge-v0.16.0.ps1 | 4 +- Miners/CryptoDredge-v0.27.0.ps1 | 4 +- Miners/EthMiner-v0.19.0.18.ps1 | 4 +- Miners/EvrProgPow-v1p3p0.ps1 | 4 +- Miners/FrkHashMiner-v1.3.14.ps1 | 4 +- Miners/GMiner-v2.75.ps1 | 4 +- Miners/GMiner-v3.44.ps1 | 6 +- Miners/HellMiner-v0.59.1.ps1 | 4 +- Miners/JayddeeCpu-v24.4.ps1 | 4 +- Miners/KawpowMiner-v1.2.4cl.ps1 | 4 +- Miners/KawpowMiner-v1.2.4cuda.ps1 | 4 +- Miners/Kudaraidee-v1.2.0a.ps1 | 4 +- Miners/MeowPowMiner-v2.0.0cl.ps1 | 4 +- Miners/MeowPowMiner-v2.0.0cuda.ps1 | 4 +- Miners/MiniZ-v2.4d.ps1 | 6 +- Miners/NBMiner-v42.3.ps1 | 4 +- Miners/NSFMiner-v1.3.14.ps1 | 4 +- Miners/NanoMiner-v3.9.2.ps1 | 4 +- Miners/Ninjarig-1.0.3.ps1 | 4 +- Miners/NosuchCpu-v3.8.8.1.ps1 | 4 +- Miners/OneZeroMiner-v1.3.7.ps1 | 4 +- Miners/PhoenixMiner-v6.2c.ps1 | 36 +- Miners/Radiator-v1.0.0.ps1 | 4 +- Miners/Raptor3umCpu-v2.0.ps1 | 4 +- Miners/Rigel-v1.19.0.ps1 | 4 +- Miners/RplantCpu-v5.0.41.ps1 | 4 +- Miners/RrkzCpu-v4.2.ps1 | 4 +- Miners/SCCminer-v1.1.0.ps1 | 4 +- Miners/SRBMinerMulti-v0.9.4.ps1 | 4 +- Miners/SRBMinerMulti-v2.6.4.ps1 | 200 +-- Miners/SgMinerFancyIX-v0.9.4.ps1 | 4 +- Miners/Suprminer-v2.31v2.ps1 | 4 +- Miners/TTMiner-v2024.3.2.ps1 | 4 +- Miners/TTMiner-v5.0.3.ps1 | 4 +- Miners/TeamBlackMiner-v2.25.ps1 | 4 +- Miners/TeamRedMiner-v0.10.21.ps1 | 4 +- Miners/TeleMerakiMiner-v1.5.0.ps1 | 4 +- Miners/Trex-v0.26.8.ps1 | 4 +- Miners/Wildrig-v0.40.8.ps1 | 4 +- Miners/XLArig-v5.2.4.ps1 | 4 +- Miners/XmRig-v6.22.0.3.ps1 | 4 +- Miners/XmrStak-v2.10.8.ps1 | 4 +- Miners/ZealotEnemy-v2.6.3.ps1 | 4 +- ...{lolMiner-v1.88.ps1 => lolMiner-v1.89.ps1} | 206 +-- Pools/HashCryptos.ps1 | 4 +- Pools/HiveON.ps1 | 4 +- Pools/MiningDutch.ps1 | 4 +- Pools/NiceHash.ps1 | 4 +- Pools/ProHashing.ps1 | 4 +- Pools/ZPool.ps1 | 4 +- Pools/ZergPool.ps1 | 4 +- README.md | 2 +- UG-Miner.ps1 | 12 +- Version.txt | 2 +- Web/APIdocs.html | 2 +- Web/minersoptimal.html | 2 +- Web/scripts/demo.ps1 | 4 +- 125 files changed, 2568 insertions(+), 2184 deletions(-) create mode 100644 Config/Config.json create mode 100644 Config/Config.json_2024-09-08_10-01-01.backup create mode 100644 Config/Config.json_2024-09-08_15-55-17.backup create mode 100644 Config/Config.json_2024-09-08_16-52-58.backup create mode 100644 Config/Config.json_2024-09-08_20-57-48.backup create mode 100644 Config/Config.json_2024-09-13_11-00-02.backup create mode 100644 Config/Config.json_2024-09-13_11-06-41.backup create mode 100644 Config/PoolsConfig.json create mode 100644 Config/WindowSettings.json create mode 100644 Config/config.json_2024-09-09_10-53-35.backup create mode 100644 Config/config.json_2024-09-11_22-52-25.backup create mode 100644 Config/config.json_2024-09-11_22-53-10.backup create mode 100644 Config/config.json_2024-09-13_14-13-44.backup delete mode 100644 Includes/Core_dev.ps1 rename Miners/{lolMiner-v1.88.ps1 => lolMiner-v1.89.ps1} (58%) diff --git a/Balances/HashCryptos.ps1 b/Balances/HashCryptos.ps1 index 3d3cca8a..6b137140 100644 --- a/Balances/HashCryptos.ps1 +++ b/Balances/HashCryptos.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\HashCryptos.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/HiveON.ps1 b/Balances/HiveON.ps1 index cf65db32..c0ee9069 100644 --- a/Balances/HiveON.ps1 +++ b/Balances/HiveON.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\Hiveon.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/MiningDutch.ps1 b/Balances/MiningDutch.ps1 index 25c07973..a77ecf3b 100644 --- a/Balances/MiningDutch.ps1 +++ b/Balances/MiningDutch.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\MiningDutch.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/NiceHash External.ps1 b/Balances/NiceHash External.ps1 index bb22cf41..26df7abc 100644 --- a/Balances/NiceHash External.ps1 +++ b/Balances/NiceHash External.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\NiceHash Internal.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/NiceHash Internal.ps1 b/Balances/NiceHash Internal.ps1 index 152a18b4..8535ca8f 100644 --- a/Balances/NiceHash Internal.ps1 +++ b/Balances/NiceHash Internal.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\NiceHash Internal.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/ProHashing.ps1 b/Balances/ProHashing.ps1 index d6c5a83d..480010b0 100644 --- a/Balances/ProHashing.ps1 +++ b/Balances/ProHashing.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\ProHashing.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/ZergPool.ps1 b/Balances/ZergPool.ps1 index 442c5f47..b34529de 100644 --- a/Balances/ZergPool.ps1 +++ b/Balances/ZergPool.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\ZergPool.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/Zpool.ps1 b/Balances/Zpool.ps1 index 47c416bb..5818112d 100644 --- a/Balances/Zpool.ps1 +++ b/Balances/Zpool.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\Zpool.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Brains/HashCryptos.ps1 b/Brains/HashCryptos.ps1 index d5e96519..d349909c 100644 --- a/Brains/HashCryptos.ps1 +++ b/Brains/HashCryptos.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Brains\MiningDutch.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> using module ..\Includes\Include.psm1 diff --git a/Brains/MiningDutch.ps1 b/Brains/MiningDutch.ps1 index 96842651..684fa7c6 100644 --- a/Brains/MiningDutch.ps1 +++ b/Brains/MiningDutch.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Brains\MiningDutch.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> using module ..\Includes\Include.psm1 diff --git a/Brains/ProHashing.ps1 b/Brains/ProHashing.ps1 index 1e9e663f..87c2c0bb 100644 --- a/Brains/ProHashing.ps1 +++ b/Brains/ProHashing.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Brains\ProHashing.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> using module ..\Includes\Include.psm1 diff --git a/Brains/ZPool.ps1 b/Brains/ZPool.ps1 index 70edd009..7a4dec2c 100644 --- a/Brains/ZPool.ps1 +++ b/Brains/ZPool.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Brains\ZPool.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> using module ..\Includes\Include.psm1 diff --git a/Brains/ZergPool.ps1 b/Brains/ZergPool.ps1 index a326200e..7df2e121 100644 --- a/Brains/ZergPool.ps1 +++ b/Brains/ZergPool.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Brains\ZergPool.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> using module ..\Includes\Include.psm1 diff --git a/Changelog.txt b/Changelog.txt index 1f55062a..d84a2774 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -4,14 +4,48 @@ Known issues: -> It is recommended to set it to 'Windows Console Host' +Changelog UG-Miner 6.3.4 2024/09/13 +=================================== + +Changes: +- Legacy GUI: Use --P instead of -- button to suspend core (same as in console window) + +Improvements: +- Web GUI / Miners tables: Optimize colum width handling +- Core: Use 'Close-CoreRunspace' instead of 'Stop-Core' on error in 'Core.ps1' + +Miner changes: +- lolMiner-v1.89 + + +Changelog UG-Miner 6.3.3 2024/09/11 +=================================== + +Enhancement: +- Legacy GUI: -- button suspends core (same --P in console window) + +Fixes: +- Core: Benchmarking or power usage measuring not stopping on time when no valid samples are found +- Core: Watchdog not suspending algorithm@pool +- Core: Watchdog suspending wrong miner + +Improvements: +- Minor code optimizations + +Miner updates: +- Rigel-v1.19.0 +- SRBMinerMulti-v2.6.4 + + Changelog UG-Miner 6.3.2 2024/09/09 =================================== Changes: -- Keep miners when paused +- Keep miners when mining is paused Enhancements: - Core / Includes.psm1: Function 'Update-DAGdata' can now handle TLS (ProgPowTelestai) data +- Core: Add support for 'HeavyHashKarlsenV2' & 'HeavyHashPyrinV2' algorithms Fixes: - Legacy GUI: Miners table not getting cleared when no miners available diff --git a/Config/Config.json b/Config/Config.json new file mode 100644 index 00000000..905d14bb --- /dev/null +++ b/Config/Config.json @@ -0,0 +1,163 @@ +// This file was generated by UG-Miner +// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version +{ + "Algorithm": [], + "APILogfile": "", + "APIPort": 3999, + "AutoReboot": true, + "AutoUpdate": true, + "AutoUpdateCheckInterval": 1, + "BackupOnAutoUpdate": true, + "BadShareRatioThreshold": 0.05, + "BalancesKeepAlive": true, + "BalancesShowAverages": true, + "BalancesShowInAllCurrencies": false, + "BalancesShowInFIATcurrency": true, + "BalancesShowSums": false, + "BalancesTrackerExcludePools": [ + "MiningPoolHub" + ], + "BalancesTrackerLog": false, + "BalancesTrackerPollInterval": 0, + "BenchmarkAllPoolAlgorithmCombinations": true, + "CalculatePowerCost": true, + "ConfigFileVersion": "6.3.4", + "CPUMinerProcessPriority": -2, + "CPUMiningReserveCPUcore": 1, + "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352", + "Currency": [], + "DecimalsMax": 8, + "Delay": 0, + "DisableCpuMiningOnBattery": false, + "DisableDualAlgoMining": false, + "DisableMinerFee": true, + "DisableMinersWithFee": false, + "DisableSingleAlgoMining": false, + "Donation": 2, + "DryRun": true, + "EarningsAdjustmentFactor": 0.8, + "ExcludeDeviceName": [], + "ExcludeMinerName": [], + "ExtraCurrencies": [ + "ETH", + "EUR", + "THB", + "USD" + ], + "FIATcurrency": "CHF", + "GPUMinerProcessPriority": -1, + "IdleDetection": false, + "IdleSec": 5, + "IgnoreMinerFee": false, + "IgnorePoolFee": false, + "IgnorePowerCost": true, + "Interval": 120, + "LegacyGUI": true, + "LegacyGUIStartMinimized": false, + "LogBalanceAPIResponse": false, + "LogToFile": [ + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogToScreen": [ + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml", + "LogViewerExe": ".\\Utils\\SnakeTail.exe", + "MinAccuracy": 0, + "MinCycle": 3, + "MinDataSample": 20, + "MinerSet": 3, + "MinerSwitchingThreshold": 2, + "MinerUseBestPoolsOnly": false, + "MinerWindowStyle": "minimized", + "MinerWindowStyleNormalWhenBenchmarking": false, + "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714", + "MiningDutchUserName": "UselessGuru", + "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98", + "MiningPoolHubUserName": "UselessGuru", + "MinWorker": 0, + "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00", + "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5", + "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb", + "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R", + "NiceHashWalletIsInternal": true, + "OpenFirewallPorts": true, + "PayoutCurrency": "BTC", + "PoolAllow0Hashrate": true, + "PoolAPIallowedFailureCount": 3, + "PoolAPIretryInterval": 3, + "PoolAPItimeout": 5, + "PoolName": [ + "HashCryptosPlus", + "Hiveon", + "MiningDutchPlus", + "MiningPoolHub", + "NiceHash", + "ProHashingPlus", + "ZergPoolPlus", + "ZPoolPlus" + ], + "PoolsConfigFile": ".\\Config\\PoolsConfig.json", + "PoolTimeout": 30, + "PowerConsumption": { + "GPU#05": 20 + }, + "PowerConsumptionIdleSystemW": 120, + "PowerPricekWh": { + "00:00": 0.4 + }, + "ProfitabilityThreshold": -20, + "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a", + "ProHashingMiningMode": "PPLNS", + "ProHashingUserName": "UselessGuru", + "Proxy": "", + "Region": "Europe", + "ReportToServer": false, + "ShowAccuracy": true, + "ShowAllMiners": false, + "ShowChangeLog": true, + "ShowCoinName": true, + "ShowConsole": true, + "ShowCurrency": true, + "ShowEarning": false, + "ShowEarningBias": true, + "ShowMinerFee": true, + "ShowPool": true, + "ShowPoolBalances": false, + "ShowPoolFee": true, + "ShowPowerConsumption": true, + "ShowPowerCost": true, + "ShowProfit": false, + "ShowProfitBias": true, + "ShowShares": true, + "ShowUser": true, + "ShowWorkerStatus": false, + "SSL": "Prefer", + "SSLallowSelfSignedCertificate": true, + "StartupMode": "Running", + "SubtractBadShares": true, + "SyncWindow": 3, + "Transcript": false, + "UIStyle": "light", + "UnrealMinerEarningFactor": 1, + "UnrealPoolPriceFactor": 5, + "UseAnycast": true, + "UseColorForMinerStatus": true, + "UsemBTC": true, + "UseMinerTweaks": false, + "Wallets": { + "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF", + "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f", + "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287" + }, + "Watchdog": true, + "WatchdogCount": 2, + "WebGUI": true, + "WorkerName": "Blackbox" +} diff --git a/Config/Config.json_2024-09-08_10-01-01.backup b/Config/Config.json_2024-09-08_10-01-01.backup new file mode 100644 index 00000000..7145be38 --- /dev/null +++ b/Config/Config.json_2024-09-08_10-01-01.backup @@ -0,0 +1,165 @@ +// This file was generated by UG-Miner +// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version +{ + "Algorithm": [], + "APILogfile": "", + "APIPort": 3999, + "AutoReboot": true, + "AutoUpdate": true, + "AutoUpdateCheckInterval": 1, + "BackupOnAutoUpdate": true, + "BadShareRatioThreshold": 0.05, + "BalancesKeepAlive": true, + "BalancesShowAverages": true, + "BalancesShowInAllCurrencies": false, + "BalancesShowInFIATcurrency": true, + "BalancesShowSums": false, + "BalancesTrackerExcludePools": [ + "MiningPoolHub" + ], + "BalancesTrackerLog": false, + "BalancesTrackerPollInterval": 10, + "BenchmarkAllPoolAlgorithmCombinations": true, + "CalculatePowerCost": true, + "ConfigFileVersion": "6.3.2", + "CPUMinerProcessPriority": -2, + "CPUMiningReserveCPUcore": 1, + "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352", + "Currency": [], + "DecimalsMax": 8, + "Delay": 0, + "DisableCpuMiningOnBattery": false, + "DisableDualAlgoMining": false, + "DisableMinerFee": true, + "DisableMinersWithFee": false, + "DisableSingleAlgoMining": false, + "Donation": 2, + "DryRun": true, + "EarningsAdjustmentFactor": 0.8, + "ExcludeDeviceName": [], + "ExcludeMinerName": [ + "TeamBlackMiner" + ], + "ExtraCurrencies": [ + "ETH", + "EUR", + "THB", + "USD" + ], + "FIATcurrency": "CHF", + "GPUMinerProcessPriority": -1, + "IdleDetection": false, + "IdleSec": 5, + "IgnoreMinerFee": false, + "IgnorePoolFee": false, + "IgnorePowerCost": true, + "Interval": 120, + "LegacyGUI": true, + "LegacyGUIStartMinimized": false, + "LogBalanceAPIResponse": false, + "LogToFile": [ + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogToScreen": [ + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml", + "LogViewerExe": ".\\Utils\\SnakeTail.exe", + "MinAccuracy": 0, + "MinCycle": 3, + "MinDataSample": 20, + "MinerSet": 3, + "MinerSwitchingThreshold": 2, + "MinerUseBestPoolsOnly": false, + "MinerWindowStyle": "minimized", + "MinerWindowStyleNormalWhenBenchmarking": false, + "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714", + "MiningDutchUserName": "UselessGuru", + "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98", + "MiningPoolHubUserName": "UselessGuru", + "MinWorker": 0, + "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00", + "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5", + "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb", + "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R", + "NiceHashWalletIsInternal": true, + "OpenFirewallPorts": true, + "PayoutCurrency": "BTC", + "PoolAllow0Hashrate": false, + "PoolAPIallowedFailureCount": 3, + "PoolAPIretryInterval": 3, + "PoolAPItimeout": 5, + "PoolName": [ + "HashCryptosPlus", + "Hiveon", + "MiningDutchPlus", + "MiningPoolHub", + "NiceHash", + "ProHashingPlus", + "ZergPoolPlus", + "ZPoolPlus" + ], + "PoolsConfigFile": ".\\Config\\PoolsConfig.json", + "PoolTimeout": 30, + "PowerConsumption": { + "GPU#05": 20 + }, + "PowerConsumptionIdleSystemW": 120, + "PowerPricekWh": { + "00:00": 0.4 + }, + "ProfitabilityThreshold": -20, + "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a", + "ProHashingMiningMode": "PPLNS", + "ProHashingUserName": "UselessGuru", + "Proxy": "", + "Region": "Europe", + "ReportToServer": false, + "ShowAccuracy": true, + "ShowAllMiners": false, + "ShowChangeLog": true, + "ShowCoinName": true, + "ShowConsole": true, + "ShowCurrency": true, + "ShowEarning": false, + "ShowEarningBias": true, + "ShowMinerFee": true, + "ShowPool": true, + "ShowPoolBalances": false, + "ShowPoolFee": true, + "ShowPowerConsumption": true, + "ShowPowerCost": true, + "ShowProfit": false, + "ShowProfitBias": true, + "ShowShares": true, + "ShowUser": true, + "ShowWorkerStatus": false, + "SSL": "Prefer", + "SSLallowSelfSignedCertificate": true, + "StartupMode": "Running", + "SubtractBadShares": true, + "SyncWindow": 3, + "Transcript": false, + "UIStyle": "light", + "UnrealMinerEarningFactor": 1, + "UnrealPoolPriceFactor": 5, + "UseAnycast": true, + "UseColorForMinerStatus": true, + "UsemBTC": true, + "UseMinerTweaks": false, + "Wallets": { + "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF", + "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f", + "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287" + }, + "Watchdog": false, + "WatchdogCount": 2, + "WebGUI": true, + "WorkerName": "Blackbox" +} diff --git a/Config/Config.json_2024-09-08_15-55-17.backup b/Config/Config.json_2024-09-08_15-55-17.backup new file mode 100644 index 00000000..cddd7c53 --- /dev/null +++ b/Config/Config.json_2024-09-08_15-55-17.backup @@ -0,0 +1,163 @@ +// This file was generated by UG-Miner +// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version +{ + "Algorithm": [], + "APILogfile": "", + "APIPort": 3999, + "AutoReboot": true, + "AutoUpdate": true, + "AutoUpdateCheckInterval": 1, + "BackupOnAutoUpdate": true, + "BadShareRatioThreshold": 0.05, + "BalancesKeepAlive": true, + "BalancesShowAverages": true, + "BalancesShowInAllCurrencies": false, + "BalancesShowInFIATcurrency": true, + "BalancesShowSums": false, + "BalancesTrackerExcludePools": [ + "MiningPoolHub" + ], + "BalancesTrackerLog": false, + "BalancesTrackerPollInterval": 10, + "BenchmarkAllPoolAlgorithmCombinations": true, + "CalculatePowerCost": true, + "ConfigFileVersion": "6.3.2", + "CPUMinerProcessPriority": -2, + "CPUMiningReserveCPUcore": 1, + "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352", + "Currency": [], + "DecimalsMax": 8, + "Delay": 0, + "DisableCpuMiningOnBattery": false, + "DisableDualAlgoMining": false, + "DisableMinerFee": true, + "DisableMinersWithFee": false, + "DisableSingleAlgoMining": false, + "Donation": 2, + "DryRun": true, + "EarningsAdjustmentFactor": 0.8, + "ExcludeDeviceName": [], + "ExcludeMinerName": [], + "ExtraCurrencies": [ + "ETH", + "EUR", + "THB", + "USD" + ], + "FIATcurrency": "CHF", + "GPUMinerProcessPriority": -1, + "IdleDetection": false, + "IdleSec": 5, + "IgnoreMinerFee": false, + "IgnorePoolFee": false, + "IgnorePowerCost": true, + "Interval": 120, + "LegacyGUI": true, + "LegacyGUIStartMinimized": false, + "LogBalanceAPIResponse": false, + "LogToFile": [ + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogToScreen": [ + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml", + "LogViewerExe": ".\\Utils\\SnakeTail.exe", + "MinAccuracy": 0, + "MinCycle": 3, + "MinDataSample": 20, + "MinerSet": 3, + "MinerSwitchingThreshold": 2, + "MinerUseBestPoolsOnly": false, + "MinerWindowStyle": "minimized", + "MinerWindowStyleNormalWhenBenchmarking": false, + "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714", + "MiningDutchUserName": "UselessGuru", + "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98", + "MiningPoolHubUserName": "UselessGuru", + "MinWorker": 0, + "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00", + "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5", + "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb", + "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R", + "NiceHashWalletIsInternal": true, + "OpenFirewallPorts": true, + "PayoutCurrency": "BTC", + "PoolAllow0Hashrate": false, + "PoolAPIallowedFailureCount": 3, + "PoolAPIretryInterval": 3, + "PoolAPItimeout": 5, + "PoolName": [ + "HashCryptosPlus", + "Hiveon", + "MiningDutchPlus", + "MiningPoolHub", + "NiceHash", + "ProHashingPlus", + "ZergPoolPlus", + "ZPoolPlus" + ], + "PoolsConfigFile": ".\\Config\\PoolsConfig.json", + "PoolTimeout": 30, + "PowerConsumption": { + "GPU#05": 20 + }, + "PowerConsumptionIdleSystemW": 120, + "PowerPricekWh": { + "00:00": 0.4 + }, + "ProfitabilityThreshold": -20, + "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a", + "ProHashingMiningMode": "PPLNS", + "ProHashingUserName": "UselessGuru", + "Proxy": "", + "Region": "Europe", + "ReportToServer": false, + "ShowAccuracy": true, + "ShowAllMiners": false, + "ShowChangeLog": true, + "ShowCoinName": true, + "ShowConsole": true, + "ShowCurrency": true, + "ShowEarning": false, + "ShowEarningBias": true, + "ShowMinerFee": true, + "ShowPool": true, + "ShowPoolBalances": false, + "ShowPoolFee": true, + "ShowPowerConsumption": true, + "ShowPowerCost": true, + "ShowProfit": false, + "ShowProfitBias": true, + "ShowShares": true, + "ShowUser": true, + "ShowWorkerStatus": false, + "SSL": "Prefer", + "SSLallowSelfSignedCertificate": true, + "StartupMode": "Running", + "SubtractBadShares": true, + "SyncWindow": 3, + "Transcript": false, + "UIStyle": "light", + "UnrealMinerEarningFactor": 1, + "UnrealPoolPriceFactor": 5, + "UseAnycast": true, + "UseColorForMinerStatus": true, + "UsemBTC": true, + "UseMinerTweaks": false, + "Wallets": { + "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF", + "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f", + "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287" + }, + "Watchdog": false, + "WatchdogCount": 2, + "WebGUI": true, + "WorkerName": "Blackbox" +} diff --git a/Config/Config.json_2024-09-08_16-52-58.backup b/Config/Config.json_2024-09-08_16-52-58.backup new file mode 100644 index 00000000..ca33261f --- /dev/null +++ b/Config/Config.json_2024-09-08_16-52-58.backup @@ -0,0 +1,163 @@ +// This file was generated by UG-Miner +// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version +{ + "Algorithm": [], + "APILogfile": "", + "APIPort": 3999, + "AutoReboot": true, + "AutoUpdate": true, + "AutoUpdateCheckInterval": 1, + "BackupOnAutoUpdate": true, + "BadShareRatioThreshold": 0.05, + "BalancesKeepAlive": true, + "BalancesShowAverages": true, + "BalancesShowInAllCurrencies": false, + "BalancesShowInFIATcurrency": true, + "BalancesShowSums": false, + "BalancesTrackerExcludePools": [ + "MiningPoolHub" + ], + "BalancesTrackerLog": false, + "BalancesTrackerPollInterval": 10, + "BenchmarkAllPoolAlgorithmCombinations": true, + "CalculatePowerCost": true, + "ConfigFileVersion": "6.3.2", + "CPUMinerProcessPriority": -2, + "CPUMiningReserveCPUcore": 1, + "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352", + "Currency": [], + "DecimalsMax": 8, + "Delay": 0, + "DisableCpuMiningOnBattery": false, + "DisableDualAlgoMining": false, + "DisableMinerFee": true, + "DisableMinersWithFee": false, + "DisableSingleAlgoMining": false, + "Donation": 2, + "DryRun": true, + "EarningsAdjustmentFactor": 0.8, + "ExcludeDeviceName": [], + "ExcludeMinerName": [], + "ExtraCurrencies": [ + "ETH", + "EUR", + "THB", + "USD" + ], + "FIATcurrency": "CHF", + "GPUMinerProcessPriority": -1, + "IdleDetection": true, + "IdleSec": 5, + "IgnoreMinerFee": false, + "IgnorePoolFee": false, + "IgnorePowerCost": true, + "Interval": 120, + "LegacyGUI": true, + "LegacyGUIStartMinimized": false, + "LogBalanceAPIResponse": false, + "LogToFile": [ + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogToScreen": [ + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml", + "LogViewerExe": ".\\Utils\\SnakeTail.exe", + "MinAccuracy": 0, + "MinCycle": 3, + "MinDataSample": 20, + "MinerSet": 3, + "MinerSwitchingThreshold": 2, + "MinerUseBestPoolsOnly": false, + "MinerWindowStyle": "minimized", + "MinerWindowStyleNormalWhenBenchmarking": false, + "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714", + "MiningDutchUserName": "UselessGuru", + "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98", + "MiningPoolHubUserName": "UselessGuru", + "MinWorker": 0, + "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00", + "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5", + "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb", + "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R", + "NiceHashWalletIsInternal": true, + "OpenFirewallPorts": true, + "PayoutCurrency": "BTC", + "PoolAllow0Hashrate": false, + "PoolAPIallowedFailureCount": 3, + "PoolAPIretryInterval": 3, + "PoolAPItimeout": 5, + "PoolName": [ + "HashCryptosPlus", + "Hiveon", + "MiningDutchPlus", + "MiningPoolHub", + "NiceHash", + "ProHashingPlus", + "ZergPoolPlus", + "ZPoolPlus" + ], + "PoolsConfigFile": ".\\Config\\PoolsConfig.json", + "PoolTimeout": 30, + "PowerConsumption": { + "GPU#05": 20 + }, + "PowerConsumptionIdleSystemW": 120, + "PowerPricekWh": { + "00:00": 0.4 + }, + "ProfitabilityThreshold": -20, + "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a", + "ProHashingMiningMode": "PPLNS", + "ProHashingUserName": "UselessGuru", + "Proxy": "", + "Region": "Europe", + "ReportToServer": false, + "ShowAccuracy": true, + "ShowAllMiners": false, + "ShowChangeLog": true, + "ShowCoinName": true, + "ShowConsole": true, + "ShowCurrency": true, + "ShowEarning": false, + "ShowEarningBias": true, + "ShowMinerFee": true, + "ShowPool": true, + "ShowPoolBalances": false, + "ShowPoolFee": true, + "ShowPowerConsumption": true, + "ShowPowerCost": true, + "ShowProfit": false, + "ShowProfitBias": true, + "ShowShares": true, + "ShowUser": true, + "ShowWorkerStatus": false, + "SSL": "Prefer", + "SSLallowSelfSignedCertificate": true, + "StartupMode": "Running", + "SubtractBadShares": true, + "SyncWindow": 3, + "Transcript": false, + "UIStyle": "light", + "UnrealMinerEarningFactor": 1, + "UnrealPoolPriceFactor": 5, + "UseAnycast": true, + "UseColorForMinerStatus": true, + "UsemBTC": true, + "UseMinerTweaks": false, + "Wallets": { + "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF", + "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f", + "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287" + }, + "Watchdog": false, + "WatchdogCount": 2, + "WebGUI": true, + "WorkerName": "Blackbox" +} diff --git a/Config/Config.json_2024-09-08_20-57-48.backup b/Config/Config.json_2024-09-08_20-57-48.backup new file mode 100644 index 00000000..cddd7c53 --- /dev/null +++ b/Config/Config.json_2024-09-08_20-57-48.backup @@ -0,0 +1,163 @@ +// This file was generated by UG-Miner +// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version +{ + "Algorithm": [], + "APILogfile": "", + "APIPort": 3999, + "AutoReboot": true, + "AutoUpdate": true, + "AutoUpdateCheckInterval": 1, + "BackupOnAutoUpdate": true, + "BadShareRatioThreshold": 0.05, + "BalancesKeepAlive": true, + "BalancesShowAverages": true, + "BalancesShowInAllCurrencies": false, + "BalancesShowInFIATcurrency": true, + "BalancesShowSums": false, + "BalancesTrackerExcludePools": [ + "MiningPoolHub" + ], + "BalancesTrackerLog": false, + "BalancesTrackerPollInterval": 10, + "BenchmarkAllPoolAlgorithmCombinations": true, + "CalculatePowerCost": true, + "ConfigFileVersion": "6.3.2", + "CPUMinerProcessPriority": -2, + "CPUMiningReserveCPUcore": 1, + "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352", + "Currency": [], + "DecimalsMax": 8, + "Delay": 0, + "DisableCpuMiningOnBattery": false, + "DisableDualAlgoMining": false, + "DisableMinerFee": true, + "DisableMinersWithFee": false, + "DisableSingleAlgoMining": false, + "Donation": 2, + "DryRun": true, + "EarningsAdjustmentFactor": 0.8, + "ExcludeDeviceName": [], + "ExcludeMinerName": [], + "ExtraCurrencies": [ + "ETH", + "EUR", + "THB", + "USD" + ], + "FIATcurrency": "CHF", + "GPUMinerProcessPriority": -1, + "IdleDetection": false, + "IdleSec": 5, + "IgnoreMinerFee": false, + "IgnorePoolFee": false, + "IgnorePowerCost": true, + "Interval": 120, + "LegacyGUI": true, + "LegacyGUIStartMinimized": false, + "LogBalanceAPIResponse": false, + "LogToFile": [ + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogToScreen": [ + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml", + "LogViewerExe": ".\\Utils\\SnakeTail.exe", + "MinAccuracy": 0, + "MinCycle": 3, + "MinDataSample": 20, + "MinerSet": 3, + "MinerSwitchingThreshold": 2, + "MinerUseBestPoolsOnly": false, + "MinerWindowStyle": "minimized", + "MinerWindowStyleNormalWhenBenchmarking": false, + "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714", + "MiningDutchUserName": "UselessGuru", + "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98", + "MiningPoolHubUserName": "UselessGuru", + "MinWorker": 0, + "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00", + "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5", + "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb", + "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R", + "NiceHashWalletIsInternal": true, + "OpenFirewallPorts": true, + "PayoutCurrency": "BTC", + "PoolAllow0Hashrate": false, + "PoolAPIallowedFailureCount": 3, + "PoolAPIretryInterval": 3, + "PoolAPItimeout": 5, + "PoolName": [ + "HashCryptosPlus", + "Hiveon", + "MiningDutchPlus", + "MiningPoolHub", + "NiceHash", + "ProHashingPlus", + "ZergPoolPlus", + "ZPoolPlus" + ], + "PoolsConfigFile": ".\\Config\\PoolsConfig.json", + "PoolTimeout": 30, + "PowerConsumption": { + "GPU#05": 20 + }, + "PowerConsumptionIdleSystemW": 120, + "PowerPricekWh": { + "00:00": 0.4 + }, + "ProfitabilityThreshold": -20, + "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a", + "ProHashingMiningMode": "PPLNS", + "ProHashingUserName": "UselessGuru", + "Proxy": "", + "Region": "Europe", + "ReportToServer": false, + "ShowAccuracy": true, + "ShowAllMiners": false, + "ShowChangeLog": true, + "ShowCoinName": true, + "ShowConsole": true, + "ShowCurrency": true, + "ShowEarning": false, + "ShowEarningBias": true, + "ShowMinerFee": true, + "ShowPool": true, + "ShowPoolBalances": false, + "ShowPoolFee": true, + "ShowPowerConsumption": true, + "ShowPowerCost": true, + "ShowProfit": false, + "ShowProfitBias": true, + "ShowShares": true, + "ShowUser": true, + "ShowWorkerStatus": false, + "SSL": "Prefer", + "SSLallowSelfSignedCertificate": true, + "StartupMode": "Running", + "SubtractBadShares": true, + "SyncWindow": 3, + "Transcript": false, + "UIStyle": "light", + "UnrealMinerEarningFactor": 1, + "UnrealPoolPriceFactor": 5, + "UseAnycast": true, + "UseColorForMinerStatus": true, + "UsemBTC": true, + "UseMinerTweaks": false, + "Wallets": { + "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF", + "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f", + "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287" + }, + "Watchdog": false, + "WatchdogCount": 2, + "WebGUI": true, + "WorkerName": "Blackbox" +} diff --git a/Config/Config.json_2024-09-13_11-00-02.backup b/Config/Config.json_2024-09-13_11-00-02.backup new file mode 100644 index 00000000..29a87c6b --- /dev/null +++ b/Config/Config.json_2024-09-13_11-00-02.backup @@ -0,0 +1,163 @@ +// This file was generated by UG-Miner +// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version +{ + "Algorithm": [], + "APILogfile": "", + "APIPort": 3999, + "AutoReboot": true, + "AutoUpdate": true, + "AutoUpdateCheckInterval": 1, + "BackupOnAutoUpdate": true, + "BadShareRatioThreshold": 0.05, + "BalancesKeepAlive": true, + "BalancesShowAverages": true, + "BalancesShowInAllCurrencies": false, + "BalancesShowInFIATcurrency": true, + "BalancesShowSums": false, + "BalancesTrackerExcludePools": [ + "MiningPoolHub" + ], + "BalancesTrackerLog": false, + "BalancesTrackerPollInterval": 0, + "BenchmarkAllPoolAlgorithmCombinations": true, + "CalculatePowerCost": true, + "ConfigFileVersion": "6.3.4", + "CPUMinerProcessPriority": -2, + "CPUMiningReserveCPUcore": 1, + "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352", + "Currency": [], + "DecimalsMax": 8, + "Delay": 0, + "DisableCpuMiningOnBattery": false, + "DisableDualAlgoMining": false, + "DisableMinerFee": true, + "DisableMinersWithFee": false, + "DisableSingleAlgoMining": false, + "Donation": 2, + "DryRun": true, + "EarningsAdjustmentFactor": 0.8, + "ExcludeDeviceName": [], + "ExcludeMinerName": [], + "ExtraCurrencies": [ + "ETH", + "EUR", + "THB", + "USD" + ], + "FIATcurrency": "CHF", + "GPUMinerProcessPriority": -1, + "IdleDetection": false, + "IdleSec": 5, + "IgnoreMinerFee": false, + "IgnorePoolFee": false, + "IgnorePowerCost": true, + "Interval": 120, + "LegacyGUI": true, + "LegacyGUIStartMinimized": false, + "LogBalanceAPIResponse": false, + "LogToFile": [ + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogToScreen": [ + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml", + "LogViewerExe": ".\\Utils\\SnakeTail.exe", + "MinAccuracy": 0, + "MinCycle": 3, + "MinDataSample": 20, + "MinerSet": 3, + "MinerSwitchingThreshold": 2, + "MinerUseBestPoolsOnly": false, + "MinerWindowStyle": "minimized", + "MinerWindowStyleNormalWhenBenchmarking": false, + "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714", + "MiningDutchUserName": "UselessGuru", + "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98", + "MiningPoolHubUserName": "UselessGuru", + "MinWorker": 0, + "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00", + "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5", + "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb", + "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R", + "NiceHashWalletIsInternal": true, + "OpenFirewallPorts": true, + "PayoutCurrency": "BTC", + "PoolAllow0Hashrate": false, + "PoolAPIallowedFailureCount": 3, + "PoolAPIretryInterval": 3, + "PoolAPItimeout": 5, + "PoolName": [ + "HashCryptosPlus", + "Hiveon", + "MiningDutchPlus", + "MiningPoolHub", + "NiceHash", + "ProHashingPlus", + "ZergPoolPlus", + "ZPoolPlus" + ], + "PoolsConfigFile": ".\\Config\\PoolsConfig.json", + "PoolTimeout": 30, + "PowerConsumption": { + "GPU#05": 20 + }, + "PowerConsumptionIdleSystemW": 120, + "PowerPricekWh": { + "00:00": 0.4 + }, + "ProfitabilityThreshold": -20, + "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a", + "ProHashingMiningMode": "PPLNS", + "ProHashingUserName": "UselessGuru", + "Proxy": "", + "Region": "Europe", + "ReportToServer": false, + "ShowAccuracy": true, + "ShowAllMiners": false, + "ShowChangeLog": true, + "ShowCoinName": true, + "ShowConsole": true, + "ShowCurrency": true, + "ShowEarning": false, + "ShowEarningBias": true, + "ShowMinerFee": true, + "ShowPool": true, + "ShowPoolBalances": false, + "ShowPoolFee": true, + "ShowPowerConsumption": true, + "ShowPowerCost": true, + "ShowProfit": false, + "ShowProfitBias": true, + "ShowShares": true, + "ShowUser": true, + "ShowWorkerStatus": false, + "SSL": "Prefer", + "SSLallowSelfSignedCertificate": true, + "StartupMode": "Running", + "SubtractBadShares": true, + "SyncWindow": 3, + "Transcript": false, + "UIStyle": "light", + "UnrealMinerEarningFactor": 1, + "UnrealPoolPriceFactor": 5, + "UseAnycast": true, + "UseColorForMinerStatus": true, + "UsemBTC": true, + "UseMinerTweaks": false, + "Wallets": { + "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF", + "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f", + "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287" + }, + "Watchdog": true, + "WatchdogCount": 2, + "WebGUI": true, + "WorkerName": "Blackbox" +} diff --git a/Config/Config.json_2024-09-13_11-06-41.backup b/Config/Config.json_2024-09-13_11-06-41.backup new file mode 100644 index 00000000..15e9a8f5 --- /dev/null +++ b/Config/Config.json_2024-09-13_11-06-41.backup @@ -0,0 +1,164 @@ +// This file was generated by UG-Miner +// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version +{ + "Algorithm": [], + "APILogfile": "", + "APIPort": 3999, + "AutoReboot": true, + "AutoUpdate": true, + "AutoUpdateCheckInterval": 1, + "BackupOnAutoUpdate": true, + "BadShareRatioThreshold": 0.05, + "BalancesKeepAlive": true, + "BalancesShowAverages": true, + "BalancesShowInAllCurrencies": false, + "BalancesShowInFIATcurrency": true, + "BalancesShowSums": false, + "BalancesTrackerExcludePools": [ + "MiningPoolHub" + ], + "BalancesTrackerLog": false, + "BalancesTrackerPollInterval": 0, + "BenchmarkAllPoolAlgorithmCombinations": true, + "CalculatePowerCost": true, + "ConfigFileVersion": "6.3.4", + "CPUMinerProcessPriority": -2, + "CPUMiningReserveCPUcore": 1, + "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352", + "Currency": [], + "DecimalsMax": 8, + "Delay": 0, + "DisableCpuMiningOnBattery": false, + "DisableDualAlgoMining": false, + "DisableMinerFee": true, + "DisableMinersWithFee": false, + "DisableSingleAlgoMining": false, + "Donation": 2, + "DryRun": true, + "EarningsAdjustmentFactor": 0.8, + "ExcludeDeviceName": [], + "ExcludeMinerName": [], + "ExtraCurrencies": [ + "ETH", + "EUR", + "THB", + "USD" + ], + "FIATcurrency": "CHF", + "GPUMinerProcessPriority": -1, + "IdleDetection": false, + "IdleSec": 5, + "IgnoreMinerFee": false, + "IgnorePoolFee": false, + "IgnorePowerCost": true, + "Interval": 120, + "LegacyGUI": true, + "LegacyGUIStartMinimized": false, + "LogBalanceAPIResponse": false, + "LogToFile": [ + "Debug", + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogToScreen": [ + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml", + "LogViewerExe": ".\\Utils\\SnakeTail.exe", + "MinAccuracy": 0, + "MinCycle": 3, + "MinDataSample": 20, + "MinerSet": 3, + "MinerSwitchingThreshold": 2, + "MinerUseBestPoolsOnly": false, + "MinerWindowStyle": "minimized", + "MinerWindowStyleNormalWhenBenchmarking": false, + "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714", + "MiningDutchUserName": "UselessGuru", + "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98", + "MiningPoolHubUserName": "UselessGuru", + "MinWorker": 0, + "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00", + "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5", + "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb", + "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R", + "NiceHashWalletIsInternal": true, + "OpenFirewallPorts": true, + "PayoutCurrency": "BTC", + "PoolAllow0Hashrate": false, + "PoolAPIallowedFailureCount": 3, + "PoolAPIretryInterval": 3, + "PoolAPItimeout": 5, + "PoolName": [ + "HashCryptosPlus", + "Hiveon", + "MiningDutchPlus", + "MiningPoolHub", + "NiceHash", + "ProHashingPlus", + "ZergPoolPlus", + "ZPoolPlus" + ], + "PoolsConfigFile": ".\\Config\\PoolsConfig.json", + "PoolTimeout": 30, + "PowerConsumption": { + "GPU#05": 20 + }, + "PowerConsumptionIdleSystemW": 120, + "PowerPricekWh": { + "00:00": 0.4 + }, + "ProfitabilityThreshold": -20, + "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a", + "ProHashingMiningMode": "PPLNS", + "ProHashingUserName": "UselessGuru", + "Proxy": "", + "Region": "Europe", + "ReportToServer": false, + "ShowAccuracy": true, + "ShowAllMiners": false, + "ShowChangeLog": true, + "ShowCoinName": true, + "ShowConsole": true, + "ShowCurrency": true, + "ShowEarning": false, + "ShowEarningBias": true, + "ShowMinerFee": true, + "ShowPool": true, + "ShowPoolBalances": false, + "ShowPoolFee": true, + "ShowPowerConsumption": true, + "ShowPowerCost": true, + "ShowProfit": false, + "ShowProfitBias": true, + "ShowShares": true, + "ShowUser": true, + "ShowWorkerStatus": false, + "SSL": "Prefer", + "SSLallowSelfSignedCertificate": true, + "StartupMode": "Running", + "SubtractBadShares": true, + "SyncWindow": 3, + "Transcript": false, + "UIStyle": "light", + "UnrealMinerEarningFactor": 1, + "UnrealPoolPriceFactor": 5, + "UseAnycast": true, + "UseColorForMinerStatus": true, + "UsemBTC": true, + "UseMinerTweaks": false, + "Wallets": { + "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF", + "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f", + "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287" + }, + "Watchdog": true, + "WatchdogCount": 2, + "WebGUI": true, + "WorkerName": "Blackbox" +} diff --git a/Config/PoolsConfig.json b/Config/PoolsConfig.json new file mode 100644 index 00000000..b6260e26 --- /dev/null +++ b/Config/PoolsConfig.json @@ -0,0 +1,55 @@ +{ + "HashCryptos": { + "Algorithm": [ + "-MemeHash" + ], + "BrainDebug": false + }, + "Hiveon": { + "Algorithm": [] + }, + "MiningDutch": { + "Algorithm": [ + "-MemeHash", + "-YescryptR16" + ], + "BrainDebug": false, + "EarningsAdjustmentFactor": 0.8, + "ExcludeRegion": [] + }, + "MiningPoolHub": { + "ExcludeRegion": [], + "PayoutThreshold": { + "ETH": 0.25, + "mBTC": 50 + } + }, + "NiceHash": { + "Algorithm": [] + }, + "ProHashing": { + "Algorithm": [ + ], + "BrainDebug": false + }, + "ZergPool": { + "Algorithm": [ + "_-Ethash", + "_-EthashB3", + "_-HeavyHashKarlsen", + "_-HeavyHashPyrin", + "_-Kawpow" + ], + "BrainDebug": false, + "Currency": [ + "_-NXL" + ], + "PoolAllow0Hashrate": false, + "SSL": "Never", + "SSLselfSignedCertificate": true + }, + "ZPool": { + "Algorithm": [], + "BrainDebug": false + } +} diff --git a/Config/WindowSettings.json b/Config/WindowSettings.json new file mode 100644 index 00000000..48047e13 --- /dev/null +++ b/Config/WindowSettings.json @@ -0,0 +1,21 @@ +{ + "Location": { + "IsEmpty": false, + "X": 948, + "Y": 542 + }, + "Size": { + "IsEmpty": false, + "Width": 2215, + "Height": 1178 + }, + "X": 948, + "Y": 542, + "Width": 2215, + "Height": 1178, + "Left": 948, + "Top": 542, + "Right": 3163, + "Bottom": 1720, + "IsEmpty": false +} diff --git a/Config/config.json_2024-09-09_10-53-35.backup b/Config/config.json_2024-09-09_10-53-35.backup new file mode 100644 index 00000000..e61297e3 --- /dev/null +++ b/Config/config.json_2024-09-09_10-53-35.backup @@ -0,0 +1,163 @@ +// This file was generated by UG-Miner +// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version +{ + "Algorithm": [], + "APILogfile": "", + "APIPort": 3999, + "AutoReboot": true, + "AutoUpdate": true, + "AutoUpdateCheckInterval": 1, + "BackupOnAutoUpdate": true, + "BadShareRatioThreshold": 0.05, + "BalancesKeepAlive": true, + "BalancesShowAverages": true, + "BalancesShowInAllCurrencies": false, + "BalancesShowInFIATcurrency": true, + "BalancesShowSums": false, + "BalancesTrackerExcludePools": [ + "MiningPoolHub" + ], + "BalancesTrackerLog": false, + "BalancesTrackerPollInterval": 10, + "BenchmarkAllPoolAlgorithmCombinations": true, + "CalculatePowerCost": true, + "ConfigFileVersion": "6.3.2", + "CPUMinerProcessPriority": -2, + "CPUMiningReserveCPUcore": 1, + "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352", + "Currency": [], + "DecimalsMax": 8, + "Delay": 0, + "DisableCpuMiningOnBattery": false, + "DisableDualAlgoMining": false, + "DisableMinerFee": true, + "DisableMinersWithFee": false, + "DisableSingleAlgoMining": false, + "Donation": 2, + "DryRun": true, + "EarningsAdjustmentFactor": 0.8, + "ExcludeDeviceName": [], + "ExcludeMinerName": [], + "ExtraCurrencies": [ + "ETH", + "EUR", + "THB", + "USD" + ], + "FIATcurrency": "CHF", + "GPUMinerProcessPriority": -1, + "IdleDetection": false, + "IdleSec": 5, + "IgnoreMinerFee": false, + "IgnorePoolFee": false, + "IgnorePowerCost": true, + "Interval": 120, + "LegacyGUI": true, + "LegacyGUIStartMinimized": false, + "LogBalanceAPIResponse": false, + "LogToFile": [ + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogToScreen": [ + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml", + "LogViewerExe": ".\\Utils\\SnakeTail.exe", + "MinAccuracy": 0, + "MinCycle": 3, + "MinDataSample": 20, + "MinerSet": 3, + "MinerSwitchingThreshold": 2, + "MinerUseBestPoolsOnly": false, + "MinerWindowStyle": "minimized", + "MinerWindowStyleNormalWhenBenchmarking": false, + "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714", + "MiningDutchUserName": "UselessGuru", + "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98", + "MiningPoolHubUserName": "UselessGuru", + "MinWorker": 0, + "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00", + "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5", + "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb", + "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R", + "NiceHashWalletIsInternal": true, + "OpenFirewallPorts": true, + "PayoutCurrency": "BTC", + "PoolAllow0Hashrate": false, + "PoolAPIallowedFailureCount": 3, + "PoolAPIretryInterval": 3, + "PoolAPItimeout": 5, + "PoolName": [ + "HashCryptosPlus", + "Hiveon", + "MiningDutchPlus", + "MiningPoolHub", + "NiceHash", + "ProHashingPlus", + "ZergPoolPlus", + "ZPoolPlus" + ], + "PoolsConfigFile": ".\\Config\\PoolsConfig.json", + "PoolTimeout": 30, + "PowerConsumption": { + "GPU#05": 20 + }, + "PowerConsumptionIdleSystemW": 120, + "PowerPricekWh": { + "00:00": 0.4 + }, + "ProfitabilityThreshold": -20, + "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a", + "ProHashingMiningMode": "PPLNS", + "ProHashingUserName": "UselessGuru", + "Proxy": "", + "Region": "Europe", + "ReportToServer": false, + "ShowAccuracy": true, + "ShowAllMiners": false, + "ShowChangeLog": true, + "ShowCoinName": true, + "ShowConsole": true, + "ShowCurrency": true, + "ShowEarning": false, + "ShowEarningBias": true, + "ShowMinerFee": true, + "ShowPool": true, + "ShowPoolBalances": false, + "ShowPoolFee": true, + "ShowPowerConsumption": true, + "ShowPowerCost": true, + "ShowProfit": false, + "ShowProfitBias": true, + "ShowShares": true, + "ShowUser": true, + "ShowWorkerStatus": false, + "SSL": "Prefer", + "SSLallowSelfSignedCertificate": true, + "StartupMode": "Running", + "SubtractBadShares": true, + "SyncWindow": 3, + "Transcript": false, + "UIStyle": "light", + "UnrealMinerEarningFactor": 1, + "UnrealPoolPriceFactor": 5, + "UseAnycast": true, + "UseColorForMinerStatus": true, + "UsemBTC": true, + "UseMinerTweaks": false, + "Wallets": { + "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF", + "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f", + "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287" + }, + "Watchdog": true, + "WatchdogCount": 2, + "WebGUI": true, + "WorkerName": "Blackbox" +} diff --git a/Config/config.json_2024-09-11_22-52-25.backup b/Config/config.json_2024-09-11_22-52-25.backup new file mode 100644 index 00000000..29a87c6b --- /dev/null +++ b/Config/config.json_2024-09-11_22-52-25.backup @@ -0,0 +1,163 @@ +// This file was generated by UG-Miner +// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version +{ + "Algorithm": [], + "APILogfile": "", + "APIPort": 3999, + "AutoReboot": true, + "AutoUpdate": true, + "AutoUpdateCheckInterval": 1, + "BackupOnAutoUpdate": true, + "BadShareRatioThreshold": 0.05, + "BalancesKeepAlive": true, + "BalancesShowAverages": true, + "BalancesShowInAllCurrencies": false, + "BalancesShowInFIATcurrency": true, + "BalancesShowSums": false, + "BalancesTrackerExcludePools": [ + "MiningPoolHub" + ], + "BalancesTrackerLog": false, + "BalancesTrackerPollInterval": 0, + "BenchmarkAllPoolAlgorithmCombinations": true, + "CalculatePowerCost": true, + "ConfigFileVersion": "6.3.4", + "CPUMinerProcessPriority": -2, + "CPUMiningReserveCPUcore": 1, + "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352", + "Currency": [], + "DecimalsMax": 8, + "Delay": 0, + "DisableCpuMiningOnBattery": false, + "DisableDualAlgoMining": false, + "DisableMinerFee": true, + "DisableMinersWithFee": false, + "DisableSingleAlgoMining": false, + "Donation": 2, + "DryRun": true, + "EarningsAdjustmentFactor": 0.8, + "ExcludeDeviceName": [], + "ExcludeMinerName": [], + "ExtraCurrencies": [ + "ETH", + "EUR", + "THB", + "USD" + ], + "FIATcurrency": "CHF", + "GPUMinerProcessPriority": -1, + "IdleDetection": false, + "IdleSec": 5, + "IgnoreMinerFee": false, + "IgnorePoolFee": false, + "IgnorePowerCost": true, + "Interval": 120, + "LegacyGUI": true, + "LegacyGUIStartMinimized": false, + "LogBalanceAPIResponse": false, + "LogToFile": [ + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogToScreen": [ + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml", + "LogViewerExe": ".\\Utils\\SnakeTail.exe", + "MinAccuracy": 0, + "MinCycle": 3, + "MinDataSample": 20, + "MinerSet": 3, + "MinerSwitchingThreshold": 2, + "MinerUseBestPoolsOnly": false, + "MinerWindowStyle": "minimized", + "MinerWindowStyleNormalWhenBenchmarking": false, + "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714", + "MiningDutchUserName": "UselessGuru", + "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98", + "MiningPoolHubUserName": "UselessGuru", + "MinWorker": 0, + "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00", + "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5", + "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb", + "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R", + "NiceHashWalletIsInternal": true, + "OpenFirewallPorts": true, + "PayoutCurrency": "BTC", + "PoolAllow0Hashrate": false, + "PoolAPIallowedFailureCount": 3, + "PoolAPIretryInterval": 3, + "PoolAPItimeout": 5, + "PoolName": [ + "HashCryptosPlus", + "Hiveon", + "MiningDutchPlus", + "MiningPoolHub", + "NiceHash", + "ProHashingPlus", + "ZergPoolPlus", + "ZPoolPlus" + ], + "PoolsConfigFile": ".\\Config\\PoolsConfig.json", + "PoolTimeout": 30, + "PowerConsumption": { + "GPU#05": 20 + }, + "PowerConsumptionIdleSystemW": 120, + "PowerPricekWh": { + "00:00": 0.4 + }, + "ProfitabilityThreshold": -20, + "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a", + "ProHashingMiningMode": "PPLNS", + "ProHashingUserName": "UselessGuru", + "Proxy": "", + "Region": "Europe", + "ReportToServer": false, + "ShowAccuracy": true, + "ShowAllMiners": false, + "ShowChangeLog": true, + "ShowCoinName": true, + "ShowConsole": true, + "ShowCurrency": true, + "ShowEarning": false, + "ShowEarningBias": true, + "ShowMinerFee": true, + "ShowPool": true, + "ShowPoolBalances": false, + "ShowPoolFee": true, + "ShowPowerConsumption": true, + "ShowPowerCost": true, + "ShowProfit": false, + "ShowProfitBias": true, + "ShowShares": true, + "ShowUser": true, + "ShowWorkerStatus": false, + "SSL": "Prefer", + "SSLallowSelfSignedCertificate": true, + "StartupMode": "Running", + "SubtractBadShares": true, + "SyncWindow": 3, + "Transcript": false, + "UIStyle": "light", + "UnrealMinerEarningFactor": 1, + "UnrealPoolPriceFactor": 5, + "UseAnycast": true, + "UseColorForMinerStatus": true, + "UsemBTC": true, + "UseMinerTweaks": false, + "Wallets": { + "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF", + "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f", + "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287" + }, + "Watchdog": true, + "WatchdogCount": 2, + "WebGUI": true, + "WorkerName": "Blackbox" +} diff --git a/Config/config.json_2024-09-11_22-53-10.backup b/Config/config.json_2024-09-11_22-53-10.backup new file mode 100644 index 00000000..15e9a8f5 --- /dev/null +++ b/Config/config.json_2024-09-11_22-53-10.backup @@ -0,0 +1,164 @@ +// This file was generated by UG-Miner +// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version +{ + "Algorithm": [], + "APILogfile": "", + "APIPort": 3999, + "AutoReboot": true, + "AutoUpdate": true, + "AutoUpdateCheckInterval": 1, + "BackupOnAutoUpdate": true, + "BadShareRatioThreshold": 0.05, + "BalancesKeepAlive": true, + "BalancesShowAverages": true, + "BalancesShowInAllCurrencies": false, + "BalancesShowInFIATcurrency": true, + "BalancesShowSums": false, + "BalancesTrackerExcludePools": [ + "MiningPoolHub" + ], + "BalancesTrackerLog": false, + "BalancesTrackerPollInterval": 0, + "BenchmarkAllPoolAlgorithmCombinations": true, + "CalculatePowerCost": true, + "ConfigFileVersion": "6.3.4", + "CPUMinerProcessPriority": -2, + "CPUMiningReserveCPUcore": 1, + "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352", + "Currency": [], + "DecimalsMax": 8, + "Delay": 0, + "DisableCpuMiningOnBattery": false, + "DisableDualAlgoMining": false, + "DisableMinerFee": true, + "DisableMinersWithFee": false, + "DisableSingleAlgoMining": false, + "Donation": 2, + "DryRun": true, + "EarningsAdjustmentFactor": 0.8, + "ExcludeDeviceName": [], + "ExcludeMinerName": [], + "ExtraCurrencies": [ + "ETH", + "EUR", + "THB", + "USD" + ], + "FIATcurrency": "CHF", + "GPUMinerProcessPriority": -1, + "IdleDetection": false, + "IdleSec": 5, + "IgnoreMinerFee": false, + "IgnorePoolFee": false, + "IgnorePowerCost": true, + "Interval": 120, + "LegacyGUI": true, + "LegacyGUIStartMinimized": false, + "LogBalanceAPIResponse": false, + "LogToFile": [ + "Debug", + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogToScreen": [ + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml", + "LogViewerExe": ".\\Utils\\SnakeTail.exe", + "MinAccuracy": 0, + "MinCycle": 3, + "MinDataSample": 20, + "MinerSet": 3, + "MinerSwitchingThreshold": 2, + "MinerUseBestPoolsOnly": false, + "MinerWindowStyle": "minimized", + "MinerWindowStyleNormalWhenBenchmarking": false, + "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714", + "MiningDutchUserName": "UselessGuru", + "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98", + "MiningPoolHubUserName": "UselessGuru", + "MinWorker": 0, + "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00", + "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5", + "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb", + "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R", + "NiceHashWalletIsInternal": true, + "OpenFirewallPorts": true, + "PayoutCurrency": "BTC", + "PoolAllow0Hashrate": false, + "PoolAPIallowedFailureCount": 3, + "PoolAPIretryInterval": 3, + "PoolAPItimeout": 5, + "PoolName": [ + "HashCryptosPlus", + "Hiveon", + "MiningDutchPlus", + "MiningPoolHub", + "NiceHash", + "ProHashingPlus", + "ZergPoolPlus", + "ZPoolPlus" + ], + "PoolsConfigFile": ".\\Config\\PoolsConfig.json", + "PoolTimeout": 30, + "PowerConsumption": { + "GPU#05": 20 + }, + "PowerConsumptionIdleSystemW": 120, + "PowerPricekWh": { + "00:00": 0.4 + }, + "ProfitabilityThreshold": -20, + "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a", + "ProHashingMiningMode": "PPLNS", + "ProHashingUserName": "UselessGuru", + "Proxy": "", + "Region": "Europe", + "ReportToServer": false, + "ShowAccuracy": true, + "ShowAllMiners": false, + "ShowChangeLog": true, + "ShowCoinName": true, + "ShowConsole": true, + "ShowCurrency": true, + "ShowEarning": false, + "ShowEarningBias": true, + "ShowMinerFee": true, + "ShowPool": true, + "ShowPoolBalances": false, + "ShowPoolFee": true, + "ShowPowerConsumption": true, + "ShowPowerCost": true, + "ShowProfit": false, + "ShowProfitBias": true, + "ShowShares": true, + "ShowUser": true, + "ShowWorkerStatus": false, + "SSL": "Prefer", + "SSLallowSelfSignedCertificate": true, + "StartupMode": "Running", + "SubtractBadShares": true, + "SyncWindow": 3, + "Transcript": false, + "UIStyle": "light", + "UnrealMinerEarningFactor": 1, + "UnrealPoolPriceFactor": 5, + "UseAnycast": true, + "UseColorForMinerStatus": true, + "UsemBTC": true, + "UseMinerTweaks": false, + "Wallets": { + "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF", + "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f", + "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287" + }, + "Watchdog": true, + "WatchdogCount": 2, + "WebGUI": true, + "WorkerName": "Blackbox" +} diff --git a/Config/config.json_2024-09-13_14-13-44.backup b/Config/config.json_2024-09-13_14-13-44.backup new file mode 100644 index 00000000..29a87c6b --- /dev/null +++ b/Config/config.json_2024-09-13_14-13-44.backup @@ -0,0 +1,163 @@ +// This file was generated by UG-Miner +// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version +{ + "Algorithm": [], + "APILogfile": "", + "APIPort": 3999, + "AutoReboot": true, + "AutoUpdate": true, + "AutoUpdateCheckInterval": 1, + "BackupOnAutoUpdate": true, + "BadShareRatioThreshold": 0.05, + "BalancesKeepAlive": true, + "BalancesShowAverages": true, + "BalancesShowInAllCurrencies": false, + "BalancesShowInFIATcurrency": true, + "BalancesShowSums": false, + "BalancesTrackerExcludePools": [ + "MiningPoolHub" + ], + "BalancesTrackerLog": false, + "BalancesTrackerPollInterval": 0, + "BenchmarkAllPoolAlgorithmCombinations": true, + "CalculatePowerCost": true, + "ConfigFileVersion": "6.3.4", + "CPUMinerProcessPriority": -2, + "CPUMiningReserveCPUcore": 1, + "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352", + "Currency": [], + "DecimalsMax": 8, + "Delay": 0, + "DisableCpuMiningOnBattery": false, + "DisableDualAlgoMining": false, + "DisableMinerFee": true, + "DisableMinersWithFee": false, + "DisableSingleAlgoMining": false, + "Donation": 2, + "DryRun": true, + "EarningsAdjustmentFactor": 0.8, + "ExcludeDeviceName": [], + "ExcludeMinerName": [], + "ExtraCurrencies": [ + "ETH", + "EUR", + "THB", + "USD" + ], + "FIATcurrency": "CHF", + "GPUMinerProcessPriority": -1, + "IdleDetection": false, + "IdleSec": 5, + "IgnoreMinerFee": false, + "IgnorePoolFee": false, + "IgnorePowerCost": true, + "Interval": 120, + "LegacyGUI": true, + "LegacyGUIStartMinimized": false, + "LogBalanceAPIResponse": false, + "LogToFile": [ + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogToScreen": [ + "Error", + "Info", + "Verbose", + "Warn" + ], + "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml", + "LogViewerExe": ".\\Utils\\SnakeTail.exe", + "MinAccuracy": 0, + "MinCycle": 3, + "MinDataSample": 20, + "MinerSet": 3, + "MinerSwitchingThreshold": 2, + "MinerUseBestPoolsOnly": false, + "MinerWindowStyle": "minimized", + "MinerWindowStyleNormalWhenBenchmarking": false, + "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714", + "MiningDutchUserName": "UselessGuru", + "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98", + "MiningPoolHubUserName": "UselessGuru", + "MinWorker": 0, + "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00", + "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5", + "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb", + "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R", + "NiceHashWalletIsInternal": true, + "OpenFirewallPorts": true, + "PayoutCurrency": "BTC", + "PoolAllow0Hashrate": false, + "PoolAPIallowedFailureCount": 3, + "PoolAPIretryInterval": 3, + "PoolAPItimeout": 5, + "PoolName": [ + "HashCryptosPlus", + "Hiveon", + "MiningDutchPlus", + "MiningPoolHub", + "NiceHash", + "ProHashingPlus", + "ZergPoolPlus", + "ZPoolPlus" + ], + "PoolsConfigFile": ".\\Config\\PoolsConfig.json", + "PoolTimeout": 30, + "PowerConsumption": { + "GPU#05": 20 + }, + "PowerConsumptionIdleSystemW": 120, + "PowerPricekWh": { + "00:00": 0.4 + }, + "ProfitabilityThreshold": -20, + "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a", + "ProHashingMiningMode": "PPLNS", + "ProHashingUserName": "UselessGuru", + "Proxy": "", + "Region": "Europe", + "ReportToServer": false, + "ShowAccuracy": true, + "ShowAllMiners": false, + "ShowChangeLog": true, + "ShowCoinName": true, + "ShowConsole": true, + "ShowCurrency": true, + "ShowEarning": false, + "ShowEarningBias": true, + "ShowMinerFee": true, + "ShowPool": true, + "ShowPoolBalances": false, + "ShowPoolFee": true, + "ShowPowerConsumption": true, + "ShowPowerCost": true, + "ShowProfit": false, + "ShowProfitBias": true, + "ShowShares": true, + "ShowUser": true, + "ShowWorkerStatus": false, + "SSL": "Prefer", + "SSLallowSelfSignedCertificate": true, + "StartupMode": "Running", + "SubtractBadShares": true, + "SyncWindow": 3, + "Transcript": false, + "UIStyle": "light", + "UnrealMinerEarningFactor": 1, + "UnrealPoolPriceFactor": 5, + "UseAnycast": true, + "UseColorForMinerStatus": true, + "UsemBTC": true, + "UseMinerTweaks": false, + "Wallets": { + "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF", + "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f", + "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287" + }, + "Watchdog": true, + "WatchdogCount": 2, + "WebGUI": true, + "WorkerName": "Blackbox" +} diff --git a/Data/Algorithms.json b/Data/Algorithms.json index 3f008a11..c284c082 100644 --- a/Data/Algorithms.json +++ b/Data/Algorithms.json @@ -146,6 +146,7 @@ "kangaroo12": "K12", "karlsen": "HeavyHashKarlsen", "karlsenhash": "HeavyHashKarlsen", + "karlsenhashv2": "HeavyHashKarlsenV2", "kaspa": "HeavyHashKaspa", "kawpow": "KawPow", "keccakc": "KeccakC", @@ -214,6 +215,7 @@ "progpowzano": "ProgPowZ", "pyrin": "HeavyHashPyrin", "pyrinhash": "HeavyHashPyrin", + "pyrinhashv2": "HeavyHashPyrinV2", "pufferfish2bmb": "Pufferfish2BMB", "qogecoin": "QogeCoin", "radiant": "SHA512256d", diff --git a/Data/CurrencyAlgorithm.json b/Data/CurrencyAlgorithm.json index a4319d25..be0d92f3 100644 --- a/Data/CurrencyAlgorithm.json +++ b/Data/CurrencyAlgorithm.json @@ -196,7 +196,7 @@ "KCN": "Flex", "KEY": "MinotaurX", "KIIRO": "FiroPow", - "KLS": "HeavyHashKarlsen", + "KLS": "HeavyHashKarlsenV2", "KMD": "Equihash2009", "KOT": "Scrypt", "KZC": "X11", @@ -263,7 +263,7 @@ "PEP": "Scrypt", "PEPE2": "Memehash", "PEPENET": "Scrypt", - "PEPEW": "MemeHash", + "PEPEW": "XelisV2PepePow", "PGC": "Ethash", "PGN": "X21s", "PHL": "X16r", @@ -277,7 +277,7 @@ "PRIV": "Yespower", "PUG": "Heavyhashkarlsen", "PXC": "Neoscrypt", - "PYI": "HeavyHashPyrin", + "PYI": "HeavyHashPyrinV2", "PYRK": "Lyra2z330", "QCH": "Yespower", "QKC": "Ethash", @@ -313,8 +313,6 @@ "SERO": "ProgPowSero", "SHAHE": "X16rv2", "SHND": "SHA256", - "SIN": null, - "SISPOP": null, "SKY": "SHAndwich256", "SKYDOGE": "SHAndwich256", "SKYT": "Ghostrider", diff --git a/Data/DagData.json b/Data/DagData.json index ddb0baf1..ae28090f 100644 --- a/Data/DagData.json +++ b/Data/DagData.json @@ -1,7 +1,7 @@ { "Algorithm": { "Autolykos2": { - "BlockHeight": 1349661, + "BlockHeight": 1351264, "CoinName": [ "Ergo" ], @@ -9,10 +9,10 @@ "ERG" ], "DAGsize": 4324915245, - "Epoch": 913 + "Epoch": 914 }, "EtcHash": { - "BlockHeight": 20664951, + "BlockHeight": 20679980, "CoinName": [ "EthereumClassic" ], @@ -23,7 +23,7 @@ "Epoch": 346 }, "Ethash": { - "BlockHeight": 20250327, + "BlockHeight": 20265719, "CoinName": [ "EthereumPow" ], @@ -45,7 +45,7 @@ "Epoch": 139 }, "EvrProgPow": { - "BlockHeight": 974642, + "BlockHeight": 977972, "CoinName": [ "Evrmore" ], @@ -56,18 +56,18 @@ "Epoch": 83 }, "FiroPow": { - "BlockHeight": 955744, + "BlockHeight": 957052, "CoinName": [ "Firo" ], "Currency": [ "FIRO" ], - "DAGsize": 7256145536, - "Epoch": 737 + "DAGsize": 7264533376, + "Epoch": 738 }, "FishHash": { - "BlockHeight": 736588, + "BlockHeight": 739980, "CoinName": [ "Ironfish" ], @@ -78,15 +78,15 @@ "Epoch": 448 }, "KawPow": { - "BlockHeight": 3493098, + "BlockHeight": 3496447, "CoinName": [ "Raven" ], "Currency": [ "RVN" ], - "DAGsize": 4991221376, - "Epoch": 467 + "DAGsize": 4999607168, + "Epoch": 468 }, "MeowPow": { "BlockHeight": 971453, @@ -100,7 +100,7 @@ "Epoch": 131 }, "Octopus": { - "BlockHeight": 104434833, + "BlockHeight": 104612521, "CoinName": [ "Conflux" ], @@ -111,7 +111,7 @@ "Epoch": 201 }, "ProgPowSero": { - "BlockHeight": 13413710, + "BlockHeight": 13427626, "CoinName": [ "Sero" ], @@ -122,7 +122,7 @@ "Epoch": 449 }, "ProgPowTelestai": { - "BlockHeight": 55733, + "BlockHeight": 59026, "CoinName": [ "Telestai" ], @@ -133,7 +133,7 @@ "Epoch": 6 }, "ProgPowZ": { - "BlockHeight": 2805034, + "BlockHeight": 2808334, "CoinName": [ "Zano" ], @@ -144,7 +144,7 @@ "Epoch": 95 }, "SCCpow": { - "BlockHeight": 985575, + "BlockHeight": 987183, "CoinName": [ "StakeCubeCoin" ], @@ -174,36 +174,36 @@ }, "Currency": { "*": { - "BlockHeight": 104434833, + "BlockHeight": 104612521, "Currency": "*", "DAGsize": 7667185408, - "Epoch": 913 + "Epoch": 914 }, "AIDP": { "Algorithm": "KawPow", - "BlockHeight": 197141, + "BlockHeight": 200543, "CoinName": "AiDepin", "DAGsize": 1308619904, - "Date": "2024-09-11T05:09:14.7532933Z", + "Date": "2024-09-13T13:10:52.1735649Z", "Epoch": 28, "Url": "https://whattomine.com/coins.json" }, "AIPG": { "Algorithm": "KawPow", - "BlockHeight": 396040, + "BlockHeight": 399371, "CoinName": "Aipowergrid", - "DAGsize": 1526726528, - "Date": "2024-09-11T05:09:15.0882032Z", - "Epoch": 54, - "Url": "https://minerstat.com/dag-size-calculator" + "DAGsize": 1535114624, + "Date": "2024-09-13T13:10:52.2327033Z", + "Epoch": 55, + "Url": "https://whattomine.com/coins.json" }, "AITT": { "Algorithm": "KawPow", - "BlockHeight": 1101663, + "BlockHeight": 1115007, "CoinName": "AittCoin", - "DAGsize": 2315251072, - "Date": "2024-09-11T05:09:14.8463703Z", - "Epoch": 148, + "DAGsize": 2332032128, + "Date": "2024-09-13T13:10:52.2715762Z", + "Epoch": 150, "Url": "https://whattomine.com/coins.json" }, "AKA": { @@ -211,7 +211,7 @@ "BlockHeight": 11735607, "CoinName": "", "DAGsize": 4370458496, - "Date": "2024-09-11T05:09:15.0250232Z", + "Date": "2024-09-13T13:10:52.6385203Z", "Epoch": 393, "Url": "https://minerstat.com/dag-size-calculator" }, @@ -226,10 +226,10 @@ }, "ANOK": { "Algorithm": "KawPow", - "BlockHeight": 227724, + "BlockHeight": 230689, "CoinName": "Anokas", "DAGsize": 1342176128, - "Date": "2024-09-11T05:09:14.7756567Z", + "Date": "2024-09-13T13:10:52.1276519Z", "Epoch": 32, "Url": "https://whattomine.com/coins.json" }, @@ -244,37 +244,37 @@ }, "BLOCX": { "Algorithm": "Autolykos2", - "BlockHeight": 294830, + "BlockHeight": 298025, "CoinName": "Blocx", "DAGsize": 2147483648, - "Date": "2024-09-11T05:11:25.057681Z", + "Date": "2024-09-13T13:10:54.9410703Z", "Epoch": 0, "Url": "https://api-explorer.blocxscan.com/api/getblockcount" }, "BTN": { "Algorithm": "Ethash", - "BlockHeight": 2852549, + "BlockHeight": 2868287, "CoinName": "BitnetBtn", "DAGsize": 1887431552, - "Date": "2024-09-11T05:09:14.8439671Z", + "Date": "2024-09-13T13:10:52.3106282Z", "Epoch": 97, "Url": "https://whattomine.com/coins.json" }, "CAU": { "Algorithm": "Ethash", - "BlockHeight": 5239719, + "BlockHeight": 5272984, "CoinName": "", - "DAGsize": 2550134144, - "Date": "2024-09-11T05:09:15.0598786Z", - "Epoch": 176, + "DAGsize": 2558525056, + "Date": "2024-09-13T13:10:52.684509Z", + "Epoch": 177, "Url": "https://minerstat.com/dag-size-calculator" }, "CFX": { "Algorithm": "Octopus", - "BlockHeight": 104434833, + "BlockHeight": 104612521, "CoinName": "Conflux", "DAGsize": 7667185408, - "Date": "2024-09-11T05:09:16.3084934Z", + "Date": "2024-09-13T13:10:54.514506Z", "Epoch": 201, "Url": "https://prohashing.com/api/v1/currencies" }, @@ -289,10 +289,10 @@ }, "CLORE": { "Algorithm": "KawPow", - "BlockHeight": 917962, + "BlockHeight": 921304, "CoinName": "Clore", "DAGsize": 2113928576, - "Date": "2024-09-11T05:09:14.7809396Z", + "Date": "2024-09-13T13:10:52.1823644Z", "Epoch": 124, "Url": "https://whattomine.com/coins.json" }, @@ -307,37 +307,37 @@ }, "DINT": { "Algorithm": "KawPow", - "BlockHeight": 398235, + "BlockHeight": 401422, "CoinName": "Dinartether", "DAGsize": 1535114624, - "Date": "2024-09-11T05:09:15.0859555Z", + "Date": "2024-09-13T13:10:52.7157187Z", "Epoch": 55, "Url": "https://minerstat.com/dag-size-calculator" }, "DOGETHER": { "Algorithm": "Ethash", - "BlockHeight": 1313151, + "BlockHeight": 1324296, "CoinName": "Dogether", - "DAGsize": 1451229056, - "Date": "2024-09-11T05:09:14.8556704Z", - "Epoch": 45, + "DAGsize": 1459615616, + "Date": "2024-09-13T13:10:52.2795806Z", + "Epoch": 46, "Url": "https://whattomine.com/coins.json" }, "EGAZ": { "Algorithm": "EtcHash", - "BlockHeight": 5879737, + "BlockHeight": 5894650, "CoinName": "Etica", - "DAGsize": 2726293376, - "Date": "2024-09-11T05:09:14.8517013Z", - "Epoch": 197, + "DAGsize": 2734685056, + "Date": "2024-09-13T13:10:52.2978268Z", + "Epoch": 198, "Url": "https://whattomine.com/coins.json" }, "EGEM": { "Algorithm": "Ethash", - "BlockHeight": 16387763, + "BlockHeight": 16403687, "CoinName": "EtherGem", "DAGsize": 5670694784, - "Date": "2024-09-11T05:09:14.8364727Z", + "Date": "2024-09-13T13:10:52.2571298Z", "Epoch": 548, "Url": "https://whattomine.com/coins.json" }, @@ -352,11 +352,11 @@ }, "ERG": { "Algorithm": "Autolykos2", - "BlockHeight": 1349661, + "BlockHeight": 1351264, "CoinName": "Ergo", "DAGsize": 4324915245, - "Date": "2024-09-11T05:09:16.3040845Z", - "Epoch": 913, + "Date": "2024-09-13T13:08:49.0958125Z", + "Epoch": 914, "Url": "https://prohashing.com/api/v1/currencies" }, "ESN": { @@ -364,16 +364,16 @@ "BlockHeight": 6408009, "CoinName": "EtherSocial", "DAGsize": 2877286784, - "Date": "2024-09-11T05:09:15.0393522Z", + "Date": "2024-09-13T13:10:52.6659302Z", "Epoch": 215, "Url": "https://minerstat.com/dag-size-calculator" }, "ETC": { "Algorithm": "EtcHash", - "BlockHeight": 20664951, + "BlockHeight": 20679980, "CoinName": "EthereumClassic", "DAGsize": 3976200064, - "Date": "2024-09-11T05:09:16.3101597Z", + "Date": "2024-09-13T13:10:54.6074804Z", "Epoch": 346, "Url": "https://prohashing.com/api/v1/currencies" }, @@ -397,10 +397,10 @@ }, "ETHW": { "Algorithm": "Ethash", - "BlockHeight": 20250327, + "BlockHeight": 20265719, "CoinName": "EthereumPow", "DAGsize": 6752825984, - "Date": "2024-09-11T05:09:16.3059636Z", + "Date": "2024-09-13T13:10:54.4984721Z", "Epoch": 677, "Url": "https://prohashing.com/api/v1/currencies" }, @@ -415,19 +415,19 @@ }, "ETP": { "Algorithm": "Ethash", - "BlockHeight": 9954814, + "BlockHeight": 9964311, "CoinName": "", - "DAGsize": 3867147904, - "Date": "2024-09-11T05:09:15.0310002Z", - "Epoch": 333, + "DAGsize": 3875536256, + "Date": "2024-09-13T13:10:52.6476259Z", + "Epoch": 334, "Url": "https://minerstat.com/dag-size-calculator" }, "EVR": { "Algorithm": "EvrProgPow", - "BlockHeight": 974642, + "BlockHeight": 977972, "CoinName": "Evrmore", "DAGsize": 3917478784, - "Date": "2024-09-11T05:09:16.8916532Z", + "Date": "2024-09-13T13:10:55.1745189Z", "Epoch": 83, "Url": "https://evr.cryptoscope.io/api/getblockcount" }, @@ -442,11 +442,11 @@ }, "FIRO": { "Algorithm": "FiroPow", - "BlockHeight": 955744, + "BlockHeight": 957052, "CoinName": "Firo", - "DAGsize": 7256145536, - "Date": "2024-09-11T05:09:14.7931511Z", - "Epoch": 737, + "DAGsize": 7264533376, + "Date": "2024-09-13T13:10:52.1930582Z", + "Epoch": 738, "Url": "https://whattomine.com/coins.json" }, "FLORA": { @@ -454,17 +454,17 @@ "BlockHeight": 789635, "CoinName": "", "DAGsize": 1308619904, - "Date": "2024-09-11T05:09:15.0930977Z", + "Date": "2024-09-13T13:10:53.2170096Z", "Epoch": 28, "Url": "https://minerstat.com/dag-size-calculator" }, "FREN": { "Algorithm": "KawPow", - "BlockHeight": 1406752, + "BlockHeight": 1413420, "CoinName": "Fren", - "DAGsize": 2659188352, - "Date": "2024-09-11T05:09:14.825258Z", - "Epoch": 189, + "DAGsize": 2667574912, + "Date": "2024-09-13T13:10:52.2237215Z", + "Epoch": 190, "Url": "https://whattomine.com/coins.json" }, "GPN": { @@ -490,34 +490,34 @@ "BlockHeight": 4131748, "CoinName": "Hypra", "DAGsize": 2239758208, - "Date": "2024-09-11T05:09:14.8327338Z", + "Date": "2024-09-13T13:10:52.2639669Z", "Epoch": 139, "Url": "https://whattomine.com/coins.json" }, "IRON": { "Algorithm": "FishHash", - "BlockHeight": 736588, + "BlockHeight": 739980, "CoinName": "Ironfish", "DAGsize": 4831838208, - "Date": "2024-09-11T05:09:14.7415217Z", + "Date": "2024-09-13T13:10:52.142727Z", "Epoch": 448, "Url": "https://whattomine.com/coins.json" }, "KIIRO": { "Algorithm": "FiroPow", - "BlockHeight": 240648, + "BlockHeight": 241974, "CoinName": "KiiroCoin", - "DAGsize": 2642407552, - "Date": "2024-09-11T05:09:14.8225586Z", - "Epoch": 187, + "DAGsize": 2650796416, + "Date": "2024-09-13T13:10:52.2121368Z", + "Epoch": 188, "Url": "https://whattomine.com/coins.json" }, "LRS": { "Algorithm": "Ethash", - "BlockHeight": 1622557, + "BlockHeight": 1638054, "CoinName": "Larissa", "DAGsize": 1543503488, - "Date": "2024-09-11T05:09:14.8575826Z", + "Date": "2024-09-13T13:10:52.3413665Z", "Epoch": 56, "Url": "https://whattomine.com/coins.json" }, @@ -541,38 +541,38 @@ }, "MOAC": { "Algorithm": "Ethash", - "BlockHeight": 14245360, + "BlockHeight": 14261038, "CoinName": "", - "DAGsize": 5066717056, - "Date": "2024-09-11T05:09:15.0196899Z", - "Epoch": 476, + "DAGsize": 5075107456, + "Date": "2024-09-13T13:10:52.6183119Z", + "Epoch": 477, "Url": "https://minerstat.com/dag-size-calculator" }, "NEOX": { "Algorithm": "KawPow", - "BlockHeight": 1211176, + "BlockHeight": 1214517, "CoinName": "Neoxa", "DAGsize": 2441084288, - "Date": "2024-09-11T05:09:14.7882366Z", + "Date": "2024-09-13T13:10:52.1669985Z", "Epoch": 163, "Url": "https://whattomine.com/coins.json" }, "NILU": { "Algorithm": "Ethash", - "BlockHeight": 6244799, + "BlockHeight": 6244803, "CoinName": "", "DAGsize": 2835349376, - "Date": "2024-09-11T05:09:15.0407866Z", + "Date": "2024-09-13T13:10:52.6703164Z", "Epoch": 210, "Url": "https://minerstat.com/dag-size-calculator" }, "NIR": { "Algorithm": "ProgPowZ", - "BlockHeight": 684687, + "BlockHeight": 691421, "CoinName": "Nirmata", - "DAGsize": 1275067264, - "Date": "2024-09-11T05:09:14.7664242Z", - "Epoch": 24, + "DAGsize": 1283453312, + "Date": "2024-09-13T13:10:52.1404446Z", + "Epoch": 25, "Url": "https://whattomine.com/coins.json" }, "NUKO": { @@ -580,26 +580,26 @@ "BlockHeight": 8848535, "CoinName": "", "DAGsize": 3556763264, - "Date": "2024-09-11T05:09:15.0343462Z", + "Date": "2024-09-13T13:10:52.6566518Z", "Epoch": 296, "Url": "https://minerstat.com/dag-size-calculator" }, "OCTA": { "Algorithm": "Ethash", - "BlockHeight": 5440743, + "BlockHeight": 5456315, "CoinName": "Octaspace", "DAGsize": 2608856192, - "Date": "2024-09-11T05:09:14.8385259Z", + "Date": "2024-09-13T13:10:52.2882176Z", "Epoch": 183, "Url": "https://whattomine.com/coins.json" }, "PAPRY": { "Algorithm": "KawPow", - "BlockHeight": 815277, + "BlockHeight": 818630, "CoinName": "Paprika", - "DAGsize": 1996487552, - "Date": "2024-09-11T05:09:15.0786429Z", - "Epoch": 110, + "DAGsize": 2004874624, + "Date": "2024-09-13T13:10:52.7015983Z", + "Epoch": 111, "Url": "https://minerstat.com/dag-size-calculator" }, "PGC": { @@ -622,11 +622,11 @@ }, "QKC": { "Algorithm": "Ethash", - "BlockHeight": 17277895, + "BlockHeight": 17298530, "CoinName": "Quarkchain", - "DAGsize": 5913966976, - "Date": "2024-09-11T05:09:14.8622296Z", - "Epoch": 577, + "DAGsize": 5922352768, + "Date": "2024-09-13T13:10:52.3356136Z", + "Epoch": 578, "Url": "https://whattomine.com/coins.json" }, "REDEV2": { @@ -649,37 +649,37 @@ }, "RVN": { "Algorithm": "KawPow", - "BlockHeight": 3493098, + "BlockHeight": 3496447, "CoinName": "Raven", - "DAGsize": 4991221376, - "Date": "2024-09-11T05:09:15.0216444Z", - "Epoch": 467, - "Url": "https://minerstat.com/dag-size-calculator" + "DAGsize": 4999607168, + "Date": "2024-09-13T13:10:54.505704Z", + "Epoch": 468, + "Url": "https://prohashing.com/api/v1/currencies" }, "SATOX": { "Algorithm": "KawPow", - "BlockHeight": 866426, + "BlockHeight": 869767, "CoinName": "Sato", "DAGsize": 2055208576, - "Date": "2024-09-11T05:09:14.7951634Z", + "Date": "2024-09-13T13:10:52.201592Z", "Epoch": 117, "Url": "https://whattomine.com/coins.json" }, "SCC": { "Algorithm": "SCCpow", - "BlockHeight": 985575, + "BlockHeight": 987183, "CoinName": "StakeCubeCoin", "DAGsize": 3640646528, - "Date": "2024-09-11T05:09:16.5799142Z", + "Date": "2024-09-13T13:10:54.8245283Z", "Epoch": 306, "Url": "https://scc.ccore.online/api/getblockcount" }, "SERO": { "Algorithm": "ProgPowSero", - "BlockHeight": 13413710, + "BlockHeight": 13427626, "CoinName": "Sero", "DAGsize": 4840226176, - "Date": "2024-09-11T05:09:14.7354093Z", + "Date": "2024-09-13T13:10:52.1190153Z", "Epoch": 449, "Url": "https://whattomine.com/coins.json" }, @@ -694,10 +694,10 @@ }, "TLS": { "Algorithm": "ProgPowTelestai", - "BlockHeight": 55733, + "BlockHeight": 59026, "CoinName": "Telestai", "DAGsize": 1124070016, - "Date": "2024-09-11T05:09:16.4646815Z", + "Date": "2024-09-13T13:08:49.3304893Z", "Epoch": 6, "Url": "https://telestai.cryptoscope.io/api/getblockcount/" }, @@ -706,7 +706,7 @@ "BlockHeight": 5517628, "CoinName": "", "DAGsize": 2625631616, - "Date": "2024-09-11T05:09:15.0489109Z", + "Date": "2024-09-13T13:10:52.6787646Z", "Epoch": 185, "Url": "https://minerstat.com/dag-size-calculator" }, @@ -721,11 +721,11 @@ }, "XNA": { "Algorithm": "KawPow", - "BlockHeight": 732248, + "BlockHeight": 735593, "CoinName": "Neurai", - "DAGsize": 1904212096, - "Date": "2024-09-11T05:09:14.7852224Z", - "Epoch": 99, + "DAGsize": 1912601216, + "Date": "2024-09-13T13:10:52.1621318Z", + "Epoch": 100, "Url": "https://whattomine.com/coins.json" }, "XPB": { @@ -739,23 +739,23 @@ }, "ZANO": { "Algorithm": "ProgPowZ", - "BlockHeight": 2805034, + "BlockHeight": 2808334, "CoinName": "Zano", "DAGsize": 1870656896, - "Date": "2024-09-11T05:09:14.761432Z", + "Date": "2024-09-13T13:10:52.0971305Z", "Epoch": 95, "Url": "https://whattomine.com/coins.json" } }, "Updated": { - "https://api-explorer.blocxscan.com/api/getblockcount": "2024-09-11T05:11:25.0579614Z", - "https://evr.cryptoscope.io/api/getblockcount": "2024-09-11T05:09:16.892045Z", + "https://api-explorer.blocxscan.com/api/getblockcount": "2024-09-13T13:10:54.9418562Z", + "https://evr.cryptoscope.io/api/getblockcount": "2024-09-13T13:10:55.1748475Z", "https://mewc.cryptoscope.io/api/getblockcount": "2024-07-14T13:29:49.1181315Z", - "https://minerstat.com/dag-size-calculator": "2024-09-11T05:09:15.1111173Z", - "https://prohashing.com/api/v1/currencies": "2024-09-11T05:09:16.3105579Z", - "https://scc.ccore.online/api/getblockcount": "2024-09-11T05:09:16.580234Z", - "https://telestai.cryptoscope.io/api/getblockcount/": "2024-09-11T05:09:16.4650846Z", - "https://whattomine.com/coins.json": "2024-09-11T05:09:14.8670911Z", + "https://minerstat.com/dag-size-calculator": "2024-09-13T13:10:53.4309219Z", + "https://prohashing.com/api/v1/currencies": "2024-09-13T13:10:54.6078402Z", + "https://scc.ccore.online/api/getblockcount": "2024-09-13T13:10:54.8248518Z", + "https://telestai.cryptoscope.io/api/getblockcount/": "2024-09-13T13:08:49.3308267Z", + "https://whattomine.com/coins.json": "2024-09-13T13:10:52.3443738Z", "https://www.coinexplorer.net/api/v1/SCC/getblockcount": "2024-09-02T06:05:35.3039058Z", "https://zergpool.com/api/currencies": "2024-08-26T19:03:15.0996499Z" } diff --git a/Includes/APIServer.psm1 b/Includes/APIServer.psm1 index c5099801..0c99af96 100644 --- a/Includes/APIServer.psm1 +++ b/Includes/APIServer.psm1 @@ -18,13 +18,13 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\APIServer.psm1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Function Start-APIServer { - $APIVersion = "0.5.4.20" + $APIVersion = "0.5.4.22" If ($Variables.APIRunspace.AsyncObject.IsCompleted -or $Config.APIport -ne $Variables.APIRunspace.APIport) { Stop-APIServer @@ -833,7 +833,7 @@ Function Start-APIServer { Break } "/miners" { - $Data = ConvertTo-Json -Depth 4 -Compress @(($Variables.Miners | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp).ForEach({ If ($_.WorkersRunning) { $_.Workers = $_.WorkersRunning }; $_ }) | Select-Object -ExcludeProperty WorkersRunning | Sort-Object @{ Expression = { $_.Best }; Descending = $true }, DeviceNames, Name) + $Data = ConvertTo-Json -Depth 4 -Compress @(($Variables.Miners | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp).ForEach({ If ($_.WorkersRunning) { $_.Workers = $_.WorkersRunning }; $_ }) | Select-Object -ExcludeProperty WorkersRunning) Break } "/miners/available" { @@ -876,7 +876,7 @@ Function Start-APIServer { } "/miners/optimal" { $Bias = If ($Variables.CalculatePowerCost -and -not $Config.IgnorePowerCost) { "Profit_Bias" } Else { "Earning_Bias" } - $Data = ConvertTo-Json -Depth 4 @($Variables.MinersOptimal | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp | Sort-Object @{ Expression = { $_.Best }; Descending = $true }, DeviceNames, @{ Expression = $Bias; Descending = $true }) + $Data = ConvertTo-Json -Depth 4 @($Variables.MinersOptimal | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp) Remove-Variable Bias Break } diff --git a/Includes/BalancesTracker.ps1 b/Includes/BalancesTracker.ps1 index 97dc459e..4f69bf35 100644 --- a/Includes/BalancesTracker.ps1 +++ b/Includes/BalancesTracker.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\BalancesTracker.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> using module .\Include.psm1 diff --git a/Includes/Core.ps1 b/Includes/Core.ps1 index 26293e15..f8af8a34 100644 --- a/Includes/Core.ps1 +++ b/Includes/Core.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: Core.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> using module .\Include.psm1 @@ -1000,7 +1000,7 @@ Try { Write-Message -Level Info "Selecting best miner$(If (($Variables.EnabledDevices.Model | Select-Object -Unique).Count -gt 1) { " combinations" }) based on$(If ($Variables.CalculatePowerCost -and -not $Config.IgnorePowerCost) { " profit (power cost $($Config.FIATcurrency) $($Variables.PowerPricekWh)/kWâ‹…h)" } Else { " earnings" })..." If ($Miners.Where({ $_.Available }).Count -eq 1) { - $MinersBest = $Variables.MinersBestPerDevice = $Variables.MinersOptimal = $Miners.Where({ $_.Available }) + $MinersBest = $Variables.MinersBestPerDevice = $MinersOptimal = $Miners.Where({ $_.Available }) } Else { $Bias = If ($Variables.CalculatePowerCost -and -not $Config.IgnorePowerCost) { "Profit_Bias" } Else { "Earning_Bias" } @@ -1009,7 +1009,7 @@ Try { $Miners.Where({ $_.Status -eq [MinerStatus]::Running }).ForEach({ $_.$Bias *= $RunningMinerBonusFactor }) # Get the optimal miners per algorithm and device - $Variables.MinersOptimal = ($Miners.Where({ $_.Available -and -not ($_.Benchmark -or $_.MeasurePowerConsumption) }) | Group-Object { [String]$_.DeviceNames }, { [String]$_.Algorithms }).ForEach({ ($_.Group | Sort-Object -Descending -Property KeepRunning, Prioritize, $Bias, Activated, @{ Expression = { $_.WarmupTimes[1] + $_.MinDataSample }; Descending = $true }, @{ Expression = { [String]$_.Algorithms }; Descending = $false } -Top 1).ForEach({ $_.Optimal = $true; $_ }) }) + $MinersOptimal = ($Miners.Where({ $_.Available -and -not ($_.Benchmark -or $_.MeasurePowerConsumption) }) | Group-Object { [String]$_.DeviceNames }, { [String]$_.Algorithms }).ForEach({ ($_.Group | Sort-Object -Descending -Property KeepRunning, Prioritize, $Bias, Activated, @{ Expression = { $_.WarmupTimes[1] + $_.MinDataSample }; Descending = $true }, @{ Expression = { [String]$_.Algorithms }; Descending = $false } -Top 1).ForEach({ $_.Optimal = $true; $_ }) }) # Get the best miners per device $Variables.MinersBestPerDevice = ($Miners.Where({ $_.Available }) | Group-Object { [String]$_.DeviceNames }).ForEach({ $_.Group | Sort-Object -Descending -Property Benchmark, MeasurePowerConsumption, KeepRunning, Prioritize, $Bias, Activated, @{ Expression = { $_.WarmupTimes[1] + $_.MinDataSample }; Descending = $true } -Top 1 }) $Variables.MinerDeviceNamesCombinations = (Get-Combination @($Variables.MinersBestPerDevice | Select-Object DeviceNames -Unique)).Where({ (Compare-Object ($_.Combination | Select-Object -ExpandProperty DeviceNames -Unique) ($_.Combination | Select-Object -ExpandProperty DeviceNames) | Measure-Object).Count -eq 0 }) @@ -1039,7 +1039,7 @@ Try { # Revert running miner bonus $Miners.Where({ $_.Status -eq [MinerStatus]::Running }).ForEach({ $_.$Bias /= $RunningMinerBonusFactor }) - Remove-Variable Bias, MinerCombinations, MinerDeviceNameCount, RunningMinerBonusFactor, SmallestBias -ErrorAction Ignore + Remove-Variable MinerCombinations, MinerDeviceNameCount, RunningMinerBonusFactor, SmallestBias -ErrorAction Ignore } $Variables.PowerConsumptionIdleSystemW = (($Config.PowerConsumptionIdleSystemW - ($MinersBest.Where({ $_.Type -eq "CPU" }) | Measure-Object PowerConsumption -Sum).Sum), 0 | Measure-Object -Maximum).Maximum @@ -1052,10 +1052,9 @@ Try { Else { $Variables.PowerConsumptionIdleSystemW = (($Config.PowerConsumptionIdleSystemW), 0 | Measure-Object -Maximum).Maximum $Variables.BasePowerCost = [Double]($Variables.PowerConsumptionIdleSystemW / 1000 * 24 * $Variables.PowerPricekWh / $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency)) - $Variables.MinersOptimal = $Variables.MinersBestPerDevice = $Variables.MinerDeviceNamesCombinations = $MinersBest = [Miner[]]@() + $Variables.MinersBestPerDevice = $Variables.MinerDeviceNamesCombinations = $MinersBest = $MinersOptimal = [Miner[]]@() $Variables.MiningEarning = $Variables.MiningProfit = $Variables.MiningPowerCost = $Variables.MiningPowerConsumption = [Double]0 } - Remove-Variable Bias -ErrorAction Ignore } $Variables.MinersNeedingBenchmark = $Miners.Where({ $_.Available -and $_.Benchmark }) | Sort-Object -Property Name -Unique @@ -1212,9 +1211,10 @@ Try { ) # Update data in API - $Variables.Miners = $Miners.Where({ $_.SideIndicator -ne "<=" }) + $Variables.Miners = $Miners.Where({ $_.SideIndicator -ne "<=" }) | Sort-Object @{ Expression = { $_.Best }; Descending = $true }, { [String]$_.DeviceNames }, Info $Variables.MinersBest = $MinersBest | Sort-Object { [String]$_.DeviceNames } - Remove-Variable Miners, MinersBest -ErrorAction Ignore + $Variables.MinersOptimal = $MinersOptimal | Sort-Object @{ Expression = { $_.Best }; Descending = $true }, { [String]$_.DeviceNames }, @{ Expression = $Bias; Descending = $true } + Remove-Variable Bias, Miners, MinersBest, MinersOptimal -ErrorAction Ignore $Variables.Miners.ForEach({ $_.PSObject.Properties.Remove("SideIndicator") }) @@ -1500,6 +1500,9 @@ Try { $Proc = Get-Process -Id $PID Write-Message -Level MemDbg "$((Get-Item $MyInvocation.MyCommand.Path).BaseName) runspace: handles: $($Proc.HandleCount) / memory: $($Proc.PrivateMemorySize64 / 1mb) mb" + # Core suspended with P in MainLoop + While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 } + $Variables.RestartCycle = $true If ($Variables.NewMiningStatus -eq "Running") { Write-Message -Level Info "Ending cycle$($Variables.EndCycleMessage)." } @@ -1510,5 +1513,6 @@ Catch { "$(Get-Date -Format "yyyy-MM-dd_HH:mm:ss")" >> $ErrorLogFile $_.Exception | Format-List -Force >> $ErrorLogFile $_.InvocationInfo | Format-List -Force >> $ErrorLogFile - $Variables.EndCycleTime = $Variables.StartCycleTime.AddSeconds($Config.Interval) # Reset timers + # Reset timers + $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime() } \ No newline at end of file diff --git a/Includes/Core_dev.ps1 b/Includes/Core_dev.ps1 deleted file mode 100644 index 05c203ea..00000000 --- a/Includes/Core_dev.ps1 +++ /dev/null @@ -1,1530 +0,0 @@ -<# -Copyright (c) 2018-2024 UselessGuru - - -UG-Miner is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -UG-Miner is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -#> - -<# -Product: UG-Miner -File: Core.ps1 -Version: 6.3.3 -Version date: 2024/09/11 -#> - -using module .\Include.psm1 - -$ErrorLogFile = "Logs\$((Get-Item $MyInvocation.MyCommand.Path).BaseName)_Error_$(Get-Date -Format "yyyy-MM-dd").txt" - -Try { - If ($Config.Transcript) { Start-Transcript -Path ".\Debug\$((Get-Item $MyInvocation.MyCommand.Path).BaseName)-Transcript_$(Get-Date -Format "yyyy-MM-dd_HH-mm-ss").log" } - - (Get-ChildItem -Path ".\Includes\MinerAPIs" -File).ForEach({ . $_.FullName }) - - Do { - Write-Message -Level Info "Started new cycle." - - If ($LegacyGUIform) { $host.UI.RawUI.WindowTitle } - - $Variables.EndCycleMessage = "" - - # Set master timer - $Variables.Timer = [DateTime]::Now.ToUniversalTime() - - # Internet connection must be available - $Global:DebugPreference = "SilentlyContinue" - $NetworkInterface = (Get-NetConnectionProfile).Where({ $_.IPv4Connectivity -eq "Internet" }).InterfaceIndex - $Variables.MyIP = If ($NetworkInterface) { (Get-NetIPAddress -InterfaceIndex $NetworkInterface -AddressFamily IPV4).IPAddress } Else { $null } - $Global:DebugPreference = "Continue" - Remove-Variable NetworkInterface - If (-not $Variables.MyIP) { - $Variables.Summary = "No internet connection - will retry in 60 seconds..." - Write-Message -Level Error $Variables.Summary - $Variables.RefreshNeeded = $true - $Variables.RestartCycle = $true - - #Stop all miners - ForEach ($Miner in $Variables.Miners.Where({ [MinerStatus]::Running, [MinerStatus]::DryRun -contains $_.Status })) { - $Miner.SetStatus([MinerStatus]::Idle) - $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) - } - Remove-Variable Miner -ErrorAction Ignore - - $Variables.Miners.ForEach({ $_.Dispose }) - $Variables.Miners = [Miner[]]@() - $Variables.MinersBenchmarkingOrMeasuring = [Miner[]]@() - $Variables.MinersBest = [Miner[]]@() - $Variables.MinersBestPerDevice = [Miner[]]@() - $Variables.MinerDeviceNamesCombinations = [Miner[]]@() - $Variables.MinersFailed = [Miner[]]@() - $Variables.MinersMissingBinary = [Miner[]]@() - $Variables.MissingMinerFirewallRule = [Miner[]]@() - $Variables.MinersMissingPrerequisite = [Miner[]]@() - $Variables.MinersOptimal = [Miner[]]@() - $Variables.MinersRunning = [Miner[]]@() - - $Variables.MiningEarning = $Variables.MiningProfit = $Variables.MiningPowerCost = $Variables.MiningPowerConsumption = [Double]0 - $Variables.Remove("EndCycleTime") - Start-Sleep -Seconds 60 - Continue - } - - If ($Variables.NewMiningStatus -eq "Running") { - # Read config only if config files have changed - If ((Test-Path -Path $Variables.PoolsConfigFile) -and (Test-Path -Path $Variables.ConfigFile)) { - If ($Variables.ConfigFileTimestamp -ne (Get-Item -Path $Variables.ConfigFile).LastWriteTime -or $Variables.PoolsConfigFileTimestamp -ne (Get-Item -Path $Variables.PoolsConfigFile).LastWriteTime) { - [Void](Read-Config -ConfigFile $Variables.ConfigFile) - Write-Message -Level Verbose "Activated changed configuration." - } - } - } - - $Variables.PoolsConfig = $Config.PoolsConfig.Clone() - - # Tuning parameters require local admin rights - $Variables.ApplyMinerTweaks = $Variables.IsLocalAdmin -and $Config.UseMinerTweaks - - # Must clear all existing miners & watchdog timers due to different miner names - If ($Variables.Miners -and $Config.BenchmarkAllPoolAlgorithmCombinations -ne $Variables.BenchmarkAllPoolAlgorithmCombinations) { - Write-Message -Level Info "Miner naming scheme has changed. Stopping all running miners..." - # Stop all running miners - ForEach ($Miner in $Variables.Miners.Where({ [MinerStatus]::DryRun, [MinerStatus]::Running -contains $_.Status })) { - $Miner.SetStatus([MinerStatus]::Idle) - $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) - } - - $Variables.Miners.ForEach({ $_.Dispose }) - $Variables.Miners = [Miner[]]@() - $Variables.MinersBenchmarkingOrMeasuring = [Miner[]]@() - $Variables.MinersBest = [Miner[]]@() - $Variables.MinersBestPerDevice = [Miner[]]@() - $Variables.MinerDeviceNamesCombinations = [Miner[]]@() - $Variables.MinersFailed = [Miner[]]@() - $Variables.MinersMissingBinary = [Miner[]]@() - $Variables.MissingMinerFirewallRule = [Miner[]]@() - $Variables.MinersMissingPrerequisite = [Miner[]]@() - $Variables.MinersOptimal = [Miner[]]@() - $Variables.MinersRunning = [Miner[]]@() - $Variables.WatchdogTimers = [PSCustomObject[]]@() - - $Variables.MiningEarning = $Variables.MiningProfit = $Variables.MiningPowerCost = $Variables.MiningPowerConsumption = [Double]0 - } - - # Use values from config - $Variables.BenchmarkAllPoolAlgorithmCombinations = $Config.BenchmarkAllPoolAlgorithmCombinations - $Variables.NiceHashWalletIsInternal = $Config.NiceHashWalletIsInternal - $Variables.PoolTimeout = [Math]::Floor($Config.PoolTimeout) - - If ($Variables.EnabledDevices = [Device[]]@($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName }).ForEach({ $_ | Select-Object -Property * }))) { - # Update enabled devices - $Variables.EnabledDevices.ForEach( - { - # Miner name must not contain spaces - $_.Model = $_.Model -replace " " - If ($_.Type -eq "GPU") { - # For GPUs set type equal to vendor - $_.Type = $_.Vendor - } - } - ) - - # Power cost preparations - If ($Variables.CalculatePowerCost = $Config.CalculatePowerCost) { - If ($Variables.EnabledDevices.Count -ge 1) { - # HWiNFO64 verification - $RegistryPath = "HKCU:\Software\HWiNFO64\VSB" - If ($RegValue = Get-ItemProperty -Path $RegistryPath -ErrorAction Ignore) { - $HWiNFO64RegTime = Get-RegTime "HKCU:\Software\HWiNFO64\VSB" - If ($Variables.HWiNFO64RegTime -eq $HWiNFO64RegTime.AddSeconds(5)) { - Write-Message -Level Warn "Power consumption data in registry has not been updated since $($Variables.HWiNFO64RegTime.ToString("yyyy-MM-dd HH:mm:ss")) [HWiNFO64 not running???] - disabling power consumption readout and profit calculations." - $Variables.CalculatePowerCost = $false - } - Else { - $Variables.HWiNFO64RegTime = $HWiNFO64RegTime - $PowerConsumptionData = @{ } - $DeviceName = "" - $RegValue.PSObject.Properties.Where({ $_.Name -match "^Label[0-9]+$" -and (Compare-Object @($_.Value -split " " | Select-Object) @($Variables.EnabledDevices.Name) -IncludeEqual -ExcludeDifferent) }).ForEach( - { - $DeviceName = ($_.Value -split " ")[-1] - Try { - $PowerConsumptionData[$DeviceName] = $RegValue.($_.Name -replace "Label", "Value") - } - Catch { - Write-Message -Level Warn "HWiNFO64 sensor naming is invalid [duplicate sensor for $DeviceName] - disabling power consumption and profit calculations." - $Variables.CalculatePowerCost = $false - } - } - ) - # Add configured power consumption - $Variables.Devices.Name.ForEach( - { - $DeviceName = $_ - If ($ConfiguredPowerConsumption = $Config.PowerConsumption.$_ -as [Double]) { - If ($Variables.EnabledDevices.Name -contains $_ -and -not $PowerConsumptionData.$_) { Write-Message -Level Info "HWiNFO64 cannot read power consumption data for device ($_). Using configured value of $ConfiguredPowerConsumption W." } - $PowerConsumptionData[$_] = "$ConfiguredPowerConsumption W" - } - $Variables.EnabledDevices.Where({ $_.Name -eq $DeviceName }).ForEach({ $_.ConfiguredPowerConsumption = $ConfiguredPowerConsumption }) - $Variables.Devices.Where({ $_.Name -eq $DeviceName }).ForEach({ $_.ConfiguredPowerConsumption = $ConfiguredPowerConsumption }) - } - ) - If ($DeviceNamesMissingSensor = (Compare-Object @($Variables.EnabledDevices.Name) @($PowerConsumptionData.psBase.Keys) -PassThru).Where({ $_.SideIndicator -eq "<=" })) { - Write-Message -Level Warn "HWiNFO64 sensor naming is invalid [missing sensor configuration for $($DeviceNamesMissingSensor -join ", ")] - disabling power consumption and profit calculations." - $Variables.CalculatePowerCost = $false - } - - # Enable read power consumption for configured devices - $Variables.EnabledDevices.ForEach({ $_.ReadPowerConsumption = $PowerConsumptionData.psBase.Keys -contains $_.Name }) - Remove-Variable ConfiguredPowerConsumption, DeviceName, DeviceNamesMissingSensor, PowerConsumptionData, HWiNFO64RegTime -ErrorAction Ignore - } - } - Else { - Write-Message -Level Warn "Cannot read power consumption data from registry [Key '$RegistryPath' does not exist - HWiNFO64 not running???] - disabling power consumption and profit calculations." - $Variables.CalculatePowerCost = $false - } - Remove-Variable RegistryPath, RegValue -ErrorAction Ignore - } - Else { $Variables.CalculatePowerCost = $false } - } - If (-not $Variables.CalculatePowerCost ) { - $Variables.EnabledDevices.ForEach({ $_.ReadPowerConsumption = $false }) - } - - # Power price - If (-not $Config.PowerPricekWh.psBase.Keys) { $Config.PowerPricekWh."00:00" = 0 } - ElseIf ($null -eq $Config.PowerPricekWh."00:00") { - # 00:00h power price is the same as the latest price of the previous day - $Config.PowerPricekWh."00:00" = $Config.PowerPricekWh.($Config.PowerPricekWh.psBase.Keys | Sort-Object -Bottom 1) - } - $Variables.PowerPricekWh = [Double]($Config.PowerPricekWh.($Config.PowerPricekWh.psBase.Keys.Where({ $_ -le (Get-Date -Format HH:mm).ToString() }) | Sort-Object -Bottom 1)) - $Variables.PowerCostBTCperW = [Double](1 / 1000 * 24 * $Variables.PowerPricekWh / $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency)) - - # Core suspended with P in MainLoop - While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 } - - If ($Variables.ConfigReadTimestamp -lt $Variables.Timer -and $Variables.Miners -and $Variables.Pools -and ($Variables.PoolDataCollectedTimeStamp.AddSeconds($Config.Interval) -ge [DateTime]::Now.ToUniversalTime() -and (Compare-Object @($Config.ExtraCurrencies | Select-Object) @($Variables.AllCurrencies | Select-Object)).Where({ $_.SideIndicator -ne "<=" }))) { - # Skip some stuff when previous cycle was shorter than one cycle duration - Write-Message -Level Info "Using $($Variables.Pools.Count) pool$(If ($Variables.Pools.Count -ne 1) { "s" }) from previous cycle$(If ($Variables.Pools.Where({ -not $_.Available })) { ", filtered out $(@($Variables.Pools.Where({ -not $_.Available })).Count) pool$(If (@($Variables.Pools.Where({ -not $_.Available })).Count -ne 1) { "s" })" }). $(@($Variables.Pools.Where({ $_.Available })).Count) available pool$(If (@($Variables.Pools.Where({ $_.Available })).Count -ne 1) { "s" }) remain$(If (@($Variables.Pools.Where({ $_.Available })).Count -eq 1) { "s" })." - - # Apply watchdog to pools - Update-PoolWatchdog -Pools $Variables.Pools - - $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime().AddSeconds($Config.Interval) - } - Else { - $Variables.BeginCycleTime = $Variables.Timer - $Variables.EndCycleTime = $Variables.Timer.AddSeconds($Config.Interval) - - $Variables.CycleStarts += $Variables.Timer - $Variables.CycleStarts = @($Variables.CycleStarts | Sort-Object -Bottom (3, ($Config.SyncWindow + 1) | Measure-Object -Maximum).Maximum) - - # Set minimum Watchdog count 3 - $Variables.WatchdogCount = (3, $Config.WatchdogCount | Measure-Object -Maximum).Maximum - $Variables.WatchdogReset = $Variables.WatchdogCount * $Variables.WatchdogCount * $Variables.WatchdogCount * $Variables.WatchdogCount * $Config.Interval - - # Expire watchdog timers - If ($Config.Watchdog) { $Variables.WatchdogTimers = @($Variables.WatchdogTimers.Where({ $_.Kicked -ge $Variables.Timer.AddSeconds( - $Variables.WatchdogReset) })) } - Else { $Variables.WatchdogTimers = [PSCustomObject[]]@() } - - # Check for new version - If ($Config.AutoUpdateCheckInterval -and $Variables.CheckedForUpdate -lt [DateTime]::Now.AddDays(-$Config.AutoUpdateCheckInterval)) { Get-Version } - - # Load unprofitable algorithms - Try { - If (-not $Variables.UnprofitableAlgorithms -or (Get-ChildItem -Path ".\Data\UnprofitableAlgorithms.json").LastWriteTime -gt $Variables.Timer.AddSeconds( - $Config.Interval)) { - $Variables.UnprofitableAlgorithms = [System.IO.File]::ReadAllLines("$PWD\Data\UnprofitableAlgorithms.json") | ConvertFrom-Json -ErrorAction Stop -AsHashtable | Get-SortedObject - Write-Message -Level Info "Loaded list of unprofitable algorithms ($($Variables.UnprofitableAlgorithms.Count) $(If ($Variables.UnprofitableAlgorithms.Count -ne 1) { "entries" } Else { "entry" }))." - } - } - Catch { - Write-Message -Level Error "Error loading list of unprofitable algorithms. File '.\Data\UnprofitableAlgorithms.json' is not a valid $($Variables.Branding.ProductLabel) JSON data file. Please restore it from your original download." - $Variables.UnprofitableAlgorithms = @{ } - } - - If ($Config.Donation -gt 0) { - If (-not $Variables.DonationStart) { - # Re-Randomize donation start and data once per day, do not donate if remaing time for today is less than donation duration - If (($Variables.DonationLog.Start | Sort-Object -Bottom 1).Date -ne [DateTime]::Today) { - If ($Config.Donation -lt (1440 - [Math]::Floor([DateTime]::Now.TimeOfDay.TotalMinutes))) { - $Variables.DonationStart = [DateTime]::Now.AddMinutes((Get-Random -Minimum 0 -Maximum (1440 - [Math]::Floor([DateTime]::Now.TimeOfDay.TotalMinutes) - $Config.Donation))) - } - # $Variables.DonationStart = [DateTime]::Now - } - } - - If ($Variables.DonationStart -and [DateTime]::Now -ge $Variables.DonationStart) { - If (-not $Variables.DonationEnd) { - $Variables.DonationStart = [DateTime]::Now - # Add pool config to config (in-memory only) - $Variables.DonationRandomPoolsConfig = Get-RandomDonationPoolsConfig - # Ensure full donation period - $Variables.DonationEnd = $Variables.DonationStart.AddMinutes($Config.Donation) - $Variables.EndCycleTime = ($Variables.DonationEnd).ToUniversalTime() - Write-Message -Level Info "Donation run: Mining for '$($Variables.DonationRandom.Name)' for the next $(If (($Config.Donation - ([DateTime]::Now - $Variables.DonationStart).Minutes) -gt 1) { "$($Config.Donation - ([DateTime]::Now - $Variables.DonationStart).Minutes) minutes" } Else { "minute" })." - $Variables.DonationRunning = $true - } - } - } - - If ($Variables.DonationRunning) { - If ($Config.Donation -gt 0 -and [DateTime]::Now -lt $Variables.DonationEnd) { - # Use donation pool config - $Variables.PoolName = $Variables.DonationRandomPoolsConfig.Keys - $Variables.PoolsConfig = $Variables.DonationRandomPoolsConfig - $Variables.NiceHashWalletIsInternal = $false - } - Else { - # Donation end - $Variables.DonationLog = $Variables.DonationLog | Select-Object -Last 365 # Keep data for one year - [Array]$Variables.DonationLog += [PSCustomObject]@{ - Start = $Variables.DonationStart - End = $Variables.DonationEnd - Name = $Variables.DonationRandom.Name - } - $Variables.DonationLog | ConvertTo-Json | Out-File -LiteralPath ".\Logs\DonateLog.json" -Force -ErrorAction Ignore - $Variables.DonationRandomPoolsConfig = $null - $Variables.DonationStart = $null - $Variables.DonationEnd = $null - $Variables.PoolsConfig = $Config.PoolsConfig.Clone() - Write-Message -Level Info "Donation run complete - thank you! Mining for you again. :-)" - $Variables.DonationRunning = $false - } - } - - # Stop / Start brain background jobs - If ($BrainsToStop = (Compare-Object @(Get-PoolBaseName $Config.PoolName | Select-Object) @(Get-PoolBaseName $Variables.PoolName | Select-Object) | Where-Object SideIndicator -EQ "=>").InputObject) { - [Void](Stop-Brain $BrainsToStop) - } - Remove-Variable BrainsToStop - $Variables.PoolName = $Config.PoolName - [Void](Start-Brain @(Get-PoolBaseName $Variables.PoolName)) - - # Core suspended with P in MainLoop - While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 } - - # Remove stats that have been deleted from disk - Try { - If ($StatFiles = [String[]](Get-ChildItem -Path "Stats" -File).BaseName) { - If ($Keys = [String[]]($Stats.psBase.Keys)) { - (Compare-Object $StatFiles $Keys -PassThru).Where({ $_.SideIndicator -eq "=>" }).ForEach( - { - # Remove stat if deleted on disk - $Stats.Remove($_) - } - ) - } - } - } - Catch {} - Remove-Variable Keys, StatFiles -ErrorAction Ignore - - # Get DAG data - [Void](Update-DAGdata) - - # Core suspended with P in MainLoop - While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 } - - # Collect pool data - $Variables.PoolsCount = $Variables.Pools.Count - - If ($Variables.PoolName) { - # Wait for pool data message - If ($Variables.Brains.psBase.Keys.Where({ $Variables.Brains[$_].StartTime -gt $Variables.Timer.AddSeconds(- $Config.Interval) })) { - # Newly started brains, allow extra time for brains to get ready - $Variables.PoolTimeout = 60 - $Message = "Requesting initial pool data from $((Get-PoolBaseName $Variables.PoolName) -join ", " -replace ",([^,]*)$", ' &$1').
This may take up to $($Variables.PoolTimeout) seconds..." - If ($Variables.CycleStarts.Count -le 1) { - $Variables.Summary = $Message - $Variables.RefreshNeeded = $true - } - Write-Message -Level Info ($Message -replace "
", " ") - Remove-Variable Message - } - Else { - Write-Message -Level Info "Requesting pool data from $((Get-PoolBaseName $Variables.PoolName) -join ", " -replace ",([^,]*)$", ' &$1')..." - } - - # Wait for all brains - $PoolDataCollectedTimeStamp = If ($Variables.PoolDataCollectedTimeStamp) { $Variables.PoolDataCollectedTimeStamp } Else { $Variables.ScriptStartTime } - While ([DateTime]::Now.ToUniversalTime() -lt $Variables.Timer.AddSeconds($Variables.PoolTimeout) -and ($Variables.Brains.psBase.Keys.Where({ $Variables.Brains[$_].Updated -lt $PoolDataCollectedTimeStamp }))) { - Start-Sleep -Seconds 1 - } - - $Variables.PoolsNew = $Variables.PoolName.ForEach( - { - $PoolName = Get-PoolBaseName $_ - If (Test-Path -LiteralPath ".\Pools\$PoolName.ps1") { - Try { - & ".\Pools\$PoolName.ps1" -Config $Config -PoolVariant $_ -Variables $Variables - } - Catch { - Write-Message -Level Error "Error in pool file 'Pools\$PoolName.ps1'." - "$(Get-Date -Format "yyyy-MM-dd_HH:mm:ss")" >> $ErrorLogFile - $_.Exception | Format-List -Force >> $ErrorLogFile - $_.InvocationInfo | Format-List -Force >> $ErrorLogFile - } - } - } - ).Where( - { - $_.Updated -gt $PoolDataCollectedTimeStamp - } - ).ForEach( - { - $Pool = $_ - Try { - $Pool = [Pool]$_ - $Pool.Fee = If ($Config.IgnorePoolFee -or $Pool.Fee -lt 0 -or $Pool.Fee -gt 1) { 0 } Else { $Pool.Fee } - $Factor = $Pool.EarningsAdjustmentFactor * (1 - $Pool.Fee) - $Pool.Price *= $Factor - $Pool.Price_Bias = $Pool.Price * $Pool.Accuracy - $Pool.StablePrice *= $Factor - $Pool.CoinName = $Variables.CoinNames[$Pool.Currency] - $Pool - } - Catch { - Write-Message -Level Error "Failed to add pool '$($Pool.Variant) [$($Pool.Algorithm)]' ($($Pool | ConvertTo-Json -Compress))" - "$(Get-Date -Format "yyyy-MM-dd_HH:mm:ss")" >> $ErrorLogFile - $_.Exception | Format-List -Force >> $ErrorLogFile - $_.InvocationInfo | Format-List -Force >> $ErrorLogFile - } - } - ) - Remove-Variable Factor, Pool, PoolDataCollectedTimeStamp, PoolName -ErrorAction Ignore - - If ($PoolsWithoutData = Compare-Object @($Variables.PoolName) @($Variables.PoolsNew.Variant | Sort-Object -Unique) -PassThru) { - Write-Message -Level Warn "No data received from pool$(If ($PoolsWithoutData.Count -gt 1) { "s" }) $($PoolsWithoutData -join ", " -replace ",([^,]*)$", ' &$1')." - } - Remove-Variable PoolsWithoutData - $Variables.PoolDataCollectedTimeStamp = [DateTime]::Now.ToUniversalTime() - - # Expire pools that have not been updated for 1 day - $Timestamp = [DateTime]::Now.ToUniversalTime().AddHours(-24) - $Variables.PoolsExpired = @($Variables.Pools.Where({ $_.Updated -lt $Timestamp })) - $Variables.Pools = $Variables.Pools.Where({ $_.Updated -ge $Timestamp }) - Remove-Variable Timestamp - - # Remove de-configured pools - $PoolsDeconfiguredCount = $Variables.Pools.Where({ $_.Variant -notin $Variables.PoolName }).Count - - If ($Pools = Compare-Object @($Variables.PoolsNew | Select-Object) @($Variables.Pools.Where({ $Variables.PoolName -contains $_.Variant }) | Select-Object) -Property Algorithm, Variant -IncludeEqual -PassThru) { - # Find added & updated pools - $Variables.PoolsAdded = $Pools.Where({ $_.SideIndicator -eq "<=" }) - $Variables.PoolsUpdated = $Pools.Where({ $_.SideIndicator -eq "==" }) - - $Pools.ForEach( - { - $_.Best = $false - $_.Prioritize = $false - - # PoolPorts[0] = non-SSL, PoolPorts[1] = SSL - $_.PoolPorts = $(If ($Config.SSL -ne "Always" -and $_.Port) { [UInt16]$_.Port } Else { $null }), $(If ($Config.SSL -ne "Never" -and $_.PortSSL) { [UInt16]$_.PortSSL } Else { $null }) - - If ($_.Algorithm -match $Variables.RegexAlgoHasDAG) { - If (-not $Variables.PoolData.($_.Name).ProfitSwitching -and $Variables.DAGdata.Currency.($_.Currency).BlockHeight) { - $_.BlockHeight = $Variables.DAGdata.Currency.($_.Currency).BlockHeight - $_.Epoch = $Variables.DAGdata.Currency.($_.Currency).Epoch - $_.DAGSizeGiB = $Variables.DAGdata.Currency.($_.Currency).DAGsize / 1GB - } - ElseIf ($Variables.DAGdata.Algorithm.($_.Algorithm).BlockHeight) { - $_.BlockHeight = $Variables.DAGdata.Algorithm.($_.Algorithm).BlockHeight - $_.Epoch = $Variables.DAGdata.Algorithm.($_.Algorithm).Epoch - $_.DAGSizeGiB = $Variables.DAGdata.Algorithm.($_.Algorithm).DAGsize / 1GB - } - } - If ($_.Algorithm -match $Variables.RegexAlgoHasDynamicDAG -and $_.DAGSizeGiB) { - $_.AlgorithmVariant = "$($_.Algorithm)($([Math]::Ceiling($_.DAGSizeGiB))GiB)" - } - Else { - $_.AlgorithmVariant = $_.Algorithm - } - } - ) - - # Lower accuracy on older pool data - $Pools.Where({ $_.Updated -lt $Variables.CycleStarts[0] }).ForEach({ $_.Price_Bias *= [Math]::Pow(0.9, ($Variables.CycleStarts[0] - $_.Updated).TotalMinutes) }) - - # Pool disabled by stat file - $Pools.Where({ $_.Disabled }).ForEach({ $_.Reasons.Add("Disabled (by Stat file)") }) - # Min accuracy not reached - $Pools.Where({ $_.Accuracy -lt $Config.MinAccuracy }).ForEach({ $_.Reasons.Add("MinAccuracy ($($Config.MinAccuracy * 100)%) not reached") }) - # Filter unavailable algorithms - If ($Config.MinerSet -lt 3) { $Pools.Where({ $Variables.UnprofitableAlgorithms[$_.Algorithm] -eq "*" }).ForEach({ $_.Reasons.Add("Unprofitable Algorithm") }) } - # Pool price 0 - $Pools.Where({ $_.Price -eq 0 }).ForEach({ $_.Reasons.Add("Price -eq 0") }) - # No price data - $Pools.Where({ $_.Price -eq [Double]::NaN }).ForEach({ $_.Reasons.Add("No price data") }) - # Ignore pool if price is more than $Config.UnrealPoolPriceFactor higher than average of all pools with same algorithm & currency; NiceHash & MiningPoolHub are always right - If ($Config.UnrealPoolPriceFactor -gt 1 -and ($Pools.Name | Sort-Object -Unique).Count -gt 1) { - ($Pools.Where({ $_.Price_Bias -gt 0 }) | Group-Object -Property Algorithm, Currency).Where({ $_.Count -ge 2 }).ForEach( - { - If ($PriceThreshold = ($_.Group.Price_Bias | Measure-Object -Average).Average * $Config.UnrealPoolPriceFactor) { - $_.Group.Where({ $_.Name -notin @("NiceHash", "MiningPoolHub") -and $_.Price_Bias -gt $PriceThreshold }).ForEach({ $_.Reasons.Add("Unreal price ($($Config.UnrealPoolPriceFactor)x higher than average price)") }) - } - } - ) - Remove-Variable PriceThreshold -ErrorAction Ignore - } - If ($Config.Algorithm -like "+*") { - # Filter non-enabled algorithms - $Pools.Where({ $Config.Algorithm -notcontains "+$($_.Algorithm)" }).ForEach({ $_.Reasons.Add("Algorithm not enabled in generic config") }) - $Pools.Where({ $Variables.PoolsConfig[$_.Name].Algorithm -like "+*" -and $Variables.PoolsConfig.$($_.Name).Algorithm -notcontains "+$($_.Algorithm)" }).ForEach({ $_.Reasons.Add("Algorithm not enabled in $($_.Name) pool config") }) - } - Else { - # Filter disabled algorithms - $Pools.Where({ $Config.Algorithm -contains "-$($_.Algorithm)" }).ForEach({ $_.Reasons.Add("Algorithm disabled (``-$($_.Algorithm)`` in generic config)") }) - $Pools.Where({ $Variables.PoolsConfig[$_.Name].Algorithm -contains "-$($_.Algorithm)" }).ForEach({ $_.Reasons.Add("Algorithm disabled (``-$($_.Algorithm)`` in $($_.Name) pool config)") }) - $Pools.Where({ $Config.Algorithm -contains "-$($_.AlgorithmVariant)" }).ForEach({ $_.Reasons.Add("Algorithm disabled (``-$($_.AlgorithmVariant)`` in generic config)") }) - $Pools.Where({ $Variables.PoolsConfig[$_.Name].Algorithm -contains "-$($_.AlgorithmVariant)" }).ForEach({ $_.Reasons.Add("Algorithm disabled (``-$($_.AlgorithmVariant)`` in $($_.Name) pool config)") }) - } - If ($Config.Currency -like "+*") { - # Filter non-enabled currencies - $Pools.Where({ $Config.Currency -notcontains "+$($_.Currency)" }).ForEach({ $_.Reasons.Add("Currency not enabled in generic config") }) - $Pools.Where({ $Variables.PoolsConfig[$_.Name].Currency -like "+*" -and $Variables.PoolsConfig.$($_.Name).Currency -notcontains "+$($_.Currency)" }).ForEach({ $_.Reasons.Add("Currency not enabled in $($_.Name) pool config") }) - } - Else { - # Filter disabled currencies - $Pools.Where({ $Config.Currency -contains "-$($_.Currency)" }).ForEach({ $_.Reasons.Add("Currency disabled (``-$($_.Currency)`` in generic config)") }) - $Pools.Where({ $Variables.PoolsConfig[$_.Name].Currency -contains "-$($_.Currency)" }).ForEach({ $_.Reasons.Add("Currency disabled (``-$($_.Currency)`` in $($_.Name) pool config)") }) - } - # MinWorkers - $Pools.Where({ $null -ne $_.Workers -and $_.Workers -lt $Variables.PoolsConfig[$_.Name].MinWorker }).ForEach({ $_.Reasons.Add("Not enough workers at pool (MinWorker ``$($Variables.PoolsConfig[$_.Name].MinWorker)`` in $($_.Name) pool config)") }) - $Pools.Where({ $null -ne $_.Workers -and $_.Workers -lt $Config.MinWorker }).ForEach({ $_.Reasons.Add("Not enough workers at pool (MinWorker ``$($Config.MinWorker)`` in generic config)") }) - # SSL - $Pools.Where({ $Variables.PoolsConfig[$_.Name].SSL -eq "Never" }).ForEach({ $_.PoolPorts[1] = $null }) - $Pools.Where({ $Variables.PoolsConfig[$_.Name].SSL -eq "Always" }).ForEach({ $_.PoolPorts[0] = $null }) - $Pools.Where({ $Variables.PoolsConfig[$_.Name].SSL -eq "Never" -and -not $_.PoolPorts[0] }).ForEach({ $_.Reasons.Add("Non-SSL port not available (SSL -eq 'Never' in $($_.Name) pool config)") }) - $Pools.Where({ $Variables.PoolsConfig[$_.Name].SSL -eq "Always" -and -not $_.PoolPorts[1] }).ForEach({ $_.Reasons.Add("SSL port not available (SSL -eq 'Always' in $($_.Name) pool config)") }) - If ($Config.SSL -eq "Never") { $Pools.Where({ -not $_.PoolPorts[0] -and $_.Reasons -notmatch "Non-SSL port not available .+" }).ForEach({ $_.Reasons.Add("Non-SSL port not available (SSL -eq 'Never' in generic config)") }) } - If ($Config.SSL -eq "Always") { $Pools.Where({ -not $_.PoolPorts[1] -and $_.Reasons -notmatch "SSL port not available .+" }).ForEach({ $_.Reasons.Add("SSL port not available (SSL -eq 'Always' in generic config)") }) } - # SSL Allow selfsigned certificate - $Pools.Where({ $_.SSLselfSignedCertificate -and $Variables.PoolsConfig[$_.Name].SSLallowSelfSignedCertificate -ne $null -and $Variables.PoolsConfig[$_.Name].SSLallowSelfSignedCertificate -eq $false }).ForEach({ $_.Reasons.Add("Pool uses self signed certificate (SSLallowSelfSignedCertificate -eq '`$false' in $($_.Name) pool config)") }) - If (-not $Config.SSLallowSelfSignedCertificate) { $Pools.Where({ $_.SSLselfSignedCertificate -and $Variables.PoolsConfig[$_.Name].SSLallowSelfSignedCertificate -eq $null }).ForEach({ $_.Reasons.Add("Pool uses self signed certificate (SSLallowSelfSignedCertificate -eq '`$false' in generic config)") }) } - # At least one port (SSL or non-SSL) must be available - $Pools.Where({ -not ($_.PoolPorts | Select-Object) }).ForEach({ $_.Reasons.Add("No ports available") }) - - # Apply watchdog to pools - Update-PoolWatchdog -Pools $Pools - - # Make pools unavailable - $Pools.ForEach({ $_.Available = -not [Boolean]$_.Reasons }) - - # Filter pools on miner set - If ($Config.MinerSet -lt 2) { - $Pools.Where({ $Variables.UnprofitableAlgorithms[$_.Algorithm] -eq 1 }).ForEach({ $_.Reasons.Add("Unprofitable primary algorithm") }) - $Pools.Where({ $Variables.UnprofitableAlgorithms[$_.Algorithm] -eq 2 }).ForEach({ $_.Reasons.Add("Unprofitable secondary algorithm") }) - } - - If ($Variables.Pools.Count -gt 0) { - Write-Message -Level Info "Had $($Variables.PoolsCount) pool$(If ($Variables.PoolsCount -ne 1) { "s" })$(If ($Variables.PoolsExpired.Count) { ", expired $($Variables.PoolsExpired.Count) pool$(If ($Variables.PoolsExpired.Count -gt 1) { "s" })" })$(If ($PoolsDeconfiguredCount) { ", removed $PoolsDeconfiguredCount deconfigured pool$(If ($PoolsDeconfiguredCount -gt 1) { "s" })" })$(If ($Variables.PoolsAdded.Count) { ", found $($Variables.PoolsAdded.Count) new pool$(If ($Variables.PoolsAdded.Count -ne 1) { "s" })" }), updated $($Variables.PoolsUpdated.Count) pool$(If ($Variables.PoolsUpdated.Count -ne 1) { "s" })$(If ($Pools.Where({ -not $_.Available })) { ", filtered out $(@($Pools.Where({ -not $_.Available })).Count) pool$(If (@($Pools.Where({ -not $_.Available })).Count -ne 1) { "s" })" }). $(@($Pools.Where({ $_.Available })).Count) available pool$(If (@($Pools.Where({ $_.Available })).Count -ne 1) { "s" }) remain$(If (@($Pools.Where({ $_.Available })).Count -eq 1) { "s" })." - } - Else { - Write-Message -Level Info "Found $($Variables.PoolsNew.Count) pool$(If ($Variables.PoolsNew.Count -ne 1) { "s" })$(If ($Variables.PoolsExpired.Count) { ", expired $($Variables.PoolsExpired.Count) pool$(If ($Variables.PoolsExpired.Count -gt 1) { "s" })" }), filtered out $(@($Pools.Where({ -not $_.Available })).Count) pool$(If (@($Pools.Where({ -not $_.Available })).Count -ne 1) { "s" }). $(@($Pools.Where({ $_.Available })).Count) available pool$(If (@($Pools.Where({ $_.Available })).Count -ne 1) { "s" }) remain$(If (@($Pools.Where({ $_.Available })).Count -eq 1) { "s" })." - } - - # Keep pool balances alive; force mining at pool even if it is not the best for the algo - If ($Config.BalancesKeepAlive -and $Global:BalancesTrackerRunspace -and $Variables.PoolsLastEarnings.Count -gt 0 -and $Variables.PoolsLastUsed) { - $Variables.PoolNamesToKeepBalancesAlive = @() - ForEach ($Pool in @($Pools.Where({ $_.Name -notin $Config.BalancesTrackerExcludePool }) | Sort-Object -Property Name -Unique)) { - If ($Variables.PoolsLastEarnings[$Pool.Name] -and $Variables.PoolsConfig[$Pool.Name].BalancesKeepAlive -gt 0 -and ([DateTime]::Now.ToUniversalTime() - $Variables.PoolsLastEarnings[$Pool.Name]).Days -ge ($Variables.PoolsConfig[$Pool.Name].BalancesKeepAlive - 10)) { - $Variables.PoolNamesToKeepBalancesAlive += $Pool.Name - Write-Message -Level Warn "Pool '$($Pool.Name)' prioritized to avoid forfeiting balance (pool would clear balance in 10 days)." - } - } - Remove-Variable Pool - - If ($Variables.PoolNamesToKeepBalancesAlive) { - $Pools.ForEach( - { - If ($Variables.PoolNamesToKeepBalancesAlive -contains $_.Name) { $_.Available = $true; $_.Prioritize = $true } - Else { $_.Reasons.Add("BalancesKeepAlive prioritizes other pools") } - } - ) - } - } - $Pools.Where({ $_.Reasons }).ForEach({ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons | Sort-Object -Unique) }) - - # Mark best pools, allow all DAG pools (optimal pool might not fit in GPU memory) - ($Pools.Where({ $_.Available }) | Group-Object Algorithm).ForEach({ ($_.Group | Sort-Object -Property Prioritize, Price_Bias -Bottom $(If ($Config.MinerUseBestPoolsOnly -or $_.Group.Algorithm -notmatch $Variables.RegexAlgoHasDAG) { 1 } Else { $_.Group.Count })).ForEach({ $_.Best = $true }) }) - - $Pools.ForEach({ $_.PSObject.Properties.Remove("SideIndicator") }) - } - - # Update data in API - $Variables.Pools = $Pools - - Remove-Variable Pools, PoolsDeconfiguredCount, PoolsExpiredCount -ErrorAction Ignore - - # Core suspended with P in MainLoop - While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 } - } - Else { - # No configuired pools, clear all pools - $Variables.Pools = [Pool[]]@() - } - - $Variables.PoolsBest = $Variables.Pools.Where({ $_.Best }) | Sort-Object -Property Algorithm - } - - # Ensure we get the hashrate for running miners prior looking for best miner - ForEach ($Miner in $Variables.MinersBest) { - If ($Miner.DataReaderJob.HasMoreData -and $Miner.Status -ne [MinerStatus]::DryRun) { - If ($Samples = @($Miner.DataReaderJob | Receive-Job).Where({ $_.Date })) { - $Sample = $Samples[-1] - If ([Math]::Floor(($Sample.Date - $Miner.ValidDataSampleTimestamp).TotalSeconds) -ge 0) { $Samples.Where({ $_.Hashrate.PSObject.Properties.Value -notcontains 0 }).ForEach({ $Miner.Data.Add($_) }) } - $Miner.Hashrates_Live = $Sample.Hashrate.PSObject.Properties.Value - # Hashrate from primary algorithm is relevant - If ($Sample.Hashrate.($Miner.Algorithms[0])) { - $Miner.DataSampleTimestamp = $Sample.Date - } - } - Remove-Variable Sample, Samples -ErrorAction Ignore - } - If ($Miner.Data.Count -gt $Miner.MinDataSample * 5) { $Miner.Data = [System.Collections.Generic.List[PSCustomObject]]($Miner.Data | Select-Object -Last ($Miner.MinDataSample * 5)) } # Reduce data to MinDataSample * 5 - - If ([MinerStatus]::Running, [MinerStatus]::DryRun -contains $Miner.Status) { - If ($Miner.Status -eq [MinerStatus]::DryRun -or $Miner.GetStatus() -eq [MinerStatus]::Running) { - $Miner.ContinousCycle ++ - If ($Config.Watchdog) { - ForEach ($Worker in $Miner.WorkersRunning) { - If ($WatchdogTimer = $Variables.WatchdogTimers.Where({ $_.MinerName -eq $Miner.Name -and $_.PoolName -eq $Worker.Pool.Name -and $_.PoolRegion -eq $Worker.Pool.Region -and $_.Algorithm -eq $Worker.Pool.Algorithm }) | Sort-Object -Property Kicked -Bottom 1) { - # Update watchdog timers - $WatchdogTimer.Kicked = [DateTime]::Now.ToUniversalTime() - } - Else { - # Create watchdog timer in case it got cleared - $Variables.WatchdogTimers += [PSCustomObject]@{ - Algorithm = $Worker.Pool.Algorithm - AlgorithmVariant = $Worker.Pool.AlgorithmVariant - DeviceNames = $Miner.DeviceNames - Kicked = [DateTime]::Now.ToUniversalTime() - MinerBaseName = $Miner.BaseName - MinerName = $Miner.Name - MinerBaseName_Version_Device = $Miner.BaseName_Version_Device - MinerBaseName_Version = $Miner.BaseName, $Miner.Version -join '-' - MinerVersion = $Miner.Version - PoolName = $Worker.Pool.Name - PoolRegion = $Worker.Pool.Region - PoolVariant = $Worker.Pool.Variant - CommandLine = $Miner.CommandLine - } - } - } - Remove-Variable WatchdogTimer, Worker -ErrorAction Ignore - } - If ($Miner.Status -eq [MinerStatus]::Running -and $Config.BadShareRatioThreshold -gt 0) { - If ($Shares = ($Miner.Data | Select-Object -Last 1).Shares) { - ForEach ($Algorithm in $Miner.Algorithms) { - If ($Shares.$Algorithm -and $Shares.$Algorithm[1] -gt 0 -and $Shares.$Algorithm[3] -gt [Math]::Floor(1 / $Config.BadShareRatioThreshold) -and $Shares.$Algorithm[1] / $Shares.$Algorithm[3] -gt $Config.BadShareRatioThreshold) { - $Miner.StatusInfo = "'$($Miner.Info)' stopped. Too many bad shares: A$($Shares.$Algorithm[0])+R$($Shares.$Algorithm[1])+I$($Shares.$Algorithm[2])=T$($Shares.$Algorithm[3])" - $Miner.SetStatus([MinerStatus]::Failed) - $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) - } - } - } - Remove-Variable Algorithm, Shares -ErrorAction Ignore - } - } - Else { - $Miner.StatusInfo = "'$($Miner.Info)' ($($Miner.Data.Count) Sample$(If ($Miner.Data.Count -ne 1) { "s" })) exited unexpectedly" - $Miner.SetStatus([MinerStatus]::Failed) - $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) - } - } - - # Do not save data if stat just got removed (Miner.Activated < 1, set by API) - If ($Miner.Activated -gt 0 -and $Miner.Status -ne [MinerStatus]::DryRun) { - $MinerHashrates = @{ } - If ($Miner.Data.Count) { - # Collect hashrate from miner, returns an array of two values (safe, unsafe) - $Miner.Hashrates_Live = @() - ForEach ($Algorithm in $Miner.Algorithms) { - $CollectedHashrate = $Miner.CollectHashrate($Algorithm, (-not $Miner.Benchmark -and $Miner.Data.Count -lt $Miner.MinDataSample)) - $Miner.Hashrates_Live += $CollectedHashrate[1] - $MinerHashrates.$Algorithm = $CollectedHashrate[0] - } - If ($Miner.ReadPowerConsumption) { - # Collect power consumption from miner, returns an array of two values (safe, unsafe) - $CollectedPowerConsumption = $Miner.CollectPowerConsumption(-not $Miner.MeasurePowerConsumption -and $Miner.Data.Count -lt $Miner.MinDataSample) - $Miner.PowerConsumption_Live = $CollectedPowerConsumption[1] - $MinerPowerConsumption = $CollectedPowerConsumption[0] - } - } - - # We don't want to store hashrates if we have less than $MinDataSample - If ($Miner.Data.Count -ge $Miner.MinDataSample -or $Miner.Activated -gt $Variables.WatchdogCount) { - $Miner.StatEnd = [DateTime]::Now.ToUniversalTime() - $Stat_Span = [TimeSpan]($Miner.StatEnd - $Miner.StatStart) - - ForEach ($Worker in $Miner.Workers) { - $Algorithm = $Worker.Pool.Algorithm - $MinerData = ($Miner.Data[-1]).Shares - If ($Miner.Data.Count -gt $Miner.MinDataSample -and -not $Miner.Benchmark -and $Config.SubtractBadShares -and $MinerData.$Algorithm -gt 0) { - # Need $Miner.MinDataSample shares before adjusting hashrate - $Factor = (1 - $MinerData.$Algorithm[1] / $MinerData.$Algorithm[3]) - $MinerHashrates.$Algorithm *= $Factor - } - Else { - $Factor = 1 - } - $StatName = "$($Miner.Name)_$($Worker.Pool.Algorithm)_Hashrate" - $Stat = Set-Stat -Name $StatName -Value $MinerHashrates.$Algorithm -Duration $Stat_Span -FaultDetection ($Miner.Data.Count -lt $Miner.MinDataSample -or $Miner.Activated -lt $Variables.WatchdogCount) -ToleranceExceeded ($Variables.WatchdogCount + 1) - If ($Stat.Updated -gt $Miner.StatStart) { - Write-Message -Level Info "Saved hashrate for '$($StatName -replace "_Hashrate$")': $(($MinerHashrates.$Algorithm | ConvertTo-Hash) -replace " ")$(If ($Factor -le 0.999) { " (adjusted by factor $($Factor.ToString("N3")) [Shares: A$($MinerData.$Algorithm[0])|R$($MinerData.$Algorithm[1])|I$($MinerData.$Algorithm[2])|T$($MinerData.$Algorithm[3])])" }) ($($Miner.Data.Count) Sample$(If ($Miner.Data.Count -ne 1) { "s" }))$(If ($Miner.Benchmark) { " [Benchmark done]" })." - $Miner.StatStart = $Miner.StatEnd - $Variables.AlgorithmsLastUsed.($Worker.Pool.Algorithm) = @{ Updated = $Stat.Updated; Benchmark = $Miner.Benchmark; MinerName = $Miner.Name } - $Variables.PoolsLastUsed.($Worker.Pool.Name) = $Stat.Updated # most likely this will count at the pool to keep balances alive - } - ElseIf ($MinerHashrates.$Algorithm -gt 0 -and $Miner.Status -eq [MinerStatus]::Running -and $Stat.Week -and ($MinerHashrates.$Algorithm -gt $Stat.Week * 2 -or $MinerHashrates.$Algorithm -lt $Stat.Week / 2)) { - # Stop miner if new value is outside ±200% of current value - $Miner.StatusInfo = "'$($Miner.Info)' reported hashrate is unreal ($($Algorithm): $(($MinerHashrates.$Algorithm | ConvertTo-Hash) -replace " ") is not within ±200% of stored value of $(($Stat.Week | ConvertTo-Hash) -replace " "))" - $Miner.SetStatus([MinerStatus]::Failed) - $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) - } - } - Remove-Variable Factor -ErrorAction Ignore - } - If ($Miner.ReadPowerConsumption) { - # We don't want to store power consumption if we have less than $MinDataSample, store even when fluctuating hash rates were recorded - If ($Miner.Data.Count -ge $Miner.MinDataSample -or $Miner.Activated -gt $Variables.WatchdogCount) { - If ([Double]::IsNaN($MinerPowerConsumption )) { $MinerPowerConsumption = 0 } - $StatName = "$($Miner.Name)_PowerConsumption" - # Always update power consumption when benchmarking - $Stat = Set-Stat -Name $StatName -Value $MinerPowerConsumption -Duration $Stat_Span -FaultDetection (-not $Miner.Benchmark -and ($Miner.Data.Count -lt $Miner.MinDataSample -or $Miner.Activated -lt $Variables.WatchdogCount)) -ToleranceExceeded ($Variables.WatchdogCount + 1) - If ($Stat.Updated -gt $Miner.StatStart) { - Write-Message -Level Info "Saved power consumption for '$($StatName -replace "_PowerConsumption$")': $($Stat.Live.ToString("N2"))W ($($Miner.Data.Count) Sample$(If ($Miner.Data.Count -ne 1) { "s" }))$(If ($Miner.MeasurePowerConsumption) { " [Power consumption measurement done]" })." - } - ElseIf ($MinerPowerConsumption -gt 0 -and $Miner.Status -eq [MinerStatus]::Running -and $Stat.Week -and ($MinerPowerConsumption -gt $Stat.Week * 2 -or $MinerPowerConsumption -lt $Stat.Week / 2)) { - # Stop miner if new value is outside ±200% of current value - $Miner.StatusInfo = "'$($Miner.Info)' reported power consumption is unreal ($($PowerConsumption.ToString("N2"))W is not within ±200% of stored value of $(([Double]$Stat.Week).ToString("N2"))W)" - $Miner.SetStatus([MinerStatus]::Failed) - $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) - } - } - } - Remove-Variable Algorithm, CollectedHashrateFactor, CollectedPowerConsumption, MinerData, MinerHashrates, MinerPowerConsumption, Stat, StatName, StatSpan, Worker -ErrorAction Ignore - } - } - Remove-Variable Miner -ErrorAction Ignore - - # Update pools last used, required for BalancesKeepAlive - If ($Variables.AlgorithmsLastUsed.Values.Updated -gt $Variables.BeginCycleTime) { $Variables.AlgorithmsLastUsed | Get-SortedObject | ConvertTo-Json | Out-File -LiteralPath ".\Data\AlgorithmsLastUsed.json" -Force } - If ($Variables.PoolsLastUsed.values -gt $Variables.BeginCycleTime) { $Variables.PoolsLastUsed | Get-SortedObject | ConvertTo-Json | Out-File -LiteralPath ".\Data\PoolsLastUsed.json" -Force } - - # Send data to monitoring server - # If ($Config.ReportToServer) { Write-MonitoringData } - - # Core suspended with P in MainLoop - While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 } - - # Get new miners - If ($AvailableMinerPools = If ($Config.MinerUseBestPoolsOnly) { $Variables.Pools.Where({ $_.Available -and ($_.Best -or $_.Prioritize) }) } Else { $Variables.Pools.Where({ $_.Available }) }) { - $MinerPools = [Ordered]@{ }, [Ordered]@{ "" = "" } # Dummy secondary pool - ($AvailableMinerPools.Where({ $_.Reasons -notcontains "Unprofitable primary algorithm" }) | Group-Object Algorithm).ForEach({ $MinerPools[0][$_.Name] = $_.Group }) - ($AvailableMinerPools.Where({ $_.Reasons -notcontains "Unprofitable secondary algorithm" }) | Group-Object Algorithm).ForEach({ $MinerPools[1][$_.Name] = $_.Group }) - - $Message = "Loading miners.$(If (-not $Variables.Miners) { "
This may take a while." }).." - If (-not $Variables.Miners) { - $Variables.Summary = $Message - $Variables.RefreshNeeded = $true - } - Write-Message -Level Info ($Message -replace "
", " ") - Remove-Variable Message - - $MinersNew = (Get-ChildItem -Path ".\Miners\*.ps1").ForEach( - { - $MinerFileName = $_.Name - Try { - Write-Message -Level Debug "Miner definition file '$MinerFileName': Start building miner objects" - & $_.FullName - Write-Message -Level Debug "Miner definition file '$MinerFileName': End building miner objects" - } - Catch { - Write-Message -Level Error "Miner file 'Miners\$MinerFileName': $_." - "$(Get-Date -Format "yyyy-MM-dd_HH:mm:ss")" >> $ErrorLogFile - $_.Exception | Format-List -Force >> $ErrorLogFile - $_.InvocationInfo | Format-List -Force >> $ErrorLogFile - } - } - ).ForEach( - { - $Miner = $_ - Try { - ForEach ($Worker in $Miner.Workers) { - $Miner.Workers[$Miner.Workers.IndexOf($Worker)].Fee = If ($Config.IgnoreMinerFee) { 0 } Else { $Miner.Fee[$Miner.Workers.IndexOf($Worker)] } - } - $Miner.PSObject.Properties.Remove("Fee") - $Miner | Add-Member BaseName_Version_Device (($Miner.Name -split "-")[0..2] -join "-") - $Miner | Add-Member Info "$($Miner.BaseName_Version_Device) {$($Miner.Workers.ForEach({ $_.Pool.AlgorithmVariant, $_.Pool.Name -join "@" }) -join " & ")}$(If (($Miner.Name -split "-")[4]) { " (Dual intensity $(($Miner.Name -split "-")[4]))" })" - $Miner -as $_.API - } - Catch { - Write-Message -Level Error "Failed to add miner '$($Miner.Name)' as '$($Miner.API)' ($($Miner | ConvertTo-Json -Compress))" - "$(Get-Date -Format "yyyy-MM-dd_HH:mm:ss")" >> $ErrorLogFile - $_.Exception | Format-List -Force >> $ErrorLogFile - $_.InvocationInfo | Format-List -Force >> $ErrorLogFile - } - } - ) - Remove-Variable Algorithm, Miner, MinerFileName, MinerPools -ErrorAction Ignore - - If ($Variables.BenchmarkAllPoolAlgorithmCombinations) { $MinersNew.ForEach({ $_.Name = $_.Info }) } - } - Remove-Variable AvailableMinerPools -ErrorAction Ignore - - # Sometimes there are no new miners (classes broken after GC?) - If ($MinersNew) { - $Miners = Compare-Object @($Variables.Miners | Select-Object) @($MinersNew | Select-Object) -Property Info -IncludeEqual -PassThru - $MinerDevices = $Variables.EnabledDevices | Select-Object -Property Bus, ConfiguredPowerConsumption, Name, ReadPowerConsumption, Status - - # Make smaller groups for faster update - $MinersNewGroups = $MinersNew | Group-Object -Property BaseName_Version_Device - ($Miners.Where({ $_.SideIndicator -ne "<=" }) | Group-Object -Property BaseName_Version_Device).ForEach( - { - $Name = $_.Name - $MinersNewGroup = $MinersNewGroups.Where({ $Name -eq $_.Name }).Group - $_.Group.ForEach( - { - Try { - $Miner = $_ - If ($_.KeepRunning = [MinerStatus]::Running, [MinerStatus]::DryRun -contains $_.Status -and ($Variables.DonationRunning -or $_.ContinousCycle -lt $Config.MinCycle)) { - # Minimum numbers of cycles not yet reached - $_.Restart = $false - } - Else { - If ($_.SideIndicator -eq "=>") { - $_.CommandLine = $_.GetCommandLine() - # Newly added miners, these properties need to be set only once because they are not dependent on any config or pool information - $_.BaseName, $_.Version = ($_.Name -split "-")[0, 1] - $_.BaseName_Version = ($Miner.Name -split "-")[0..1] -join "-" - $_.Algorithms = $_.Workers.Pool.Algorithm - } - Else { - $Info = $_.Info - $Miner = $MinersNewGroup.Where({ $Info -eq $_.Info }) - # Update existing miners - If ($_.Restart = $_.Arguments -ne $Miner.Arguments) { - $_.Arguments = $Miner.Arguments - $_.CommandLine = $Miner.GetCommandLine() - $_.Port = $Miner.Port - } - $_.PrerequisitePath = $Miner.PrerequisitePath - $_.PrerequisiteURI = $Miner.PrerequisiteURI - $_.WarmupTimes = $Miner.WarmupTimes - $_.Workers = $Miner.Workers - } - } - $DeviceNames = $_.DeviceNames - $_.MeasurePowerConsumption = $Variables.CalculatePowerCost - $_.Devices = $MinerDevices.Where({ $DeviceNames -contains $_.Name }) - $_.Refresh($Variables.PowerCostBTCperW, $Config) - } - Catch { - Write-Message -Level Error "Failed to update miner '$($Miner.Name)': Error $_ ($($Miner | ConvertTo-Json -Compress)" - "$(Get-Date -Format "yyyy-MM-dd_HH:mm:ss")" >> $ErrorLogFile - $_.Exception | Format-List -Force >> $ErrorLogFile - $_.InvocationInfo | Format-List -Force >> $ErrorLogFile - } - } - ) - } - ) - Remove-Variable DeviceNames, Info, Miner, MinerDevices, MinersNewGroup, MinersNewGroups, MinersNew, Name -ErrorAction Ignore - } - Else { - $Miners = $Variables.Miners - } - - # Core suspended with P in MainLoop - While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 } - - # Filter miners - $Miners.Where({ $_.Disabled }).ForEach({ $_.Reasons.Add("Disabled by user") }) - If ($Config.ExcludeMinerName.Count) { $Miners.Where({ (Compare-Object @($Config.ExcludeMinerName | Select-Object) @($_.BaseName, "$($_.BaseName)-$($_.Version)", $_.Name | Select-Object -Unique) -IncludeEqual -ExcludeDifferent | Measure-Object).Count -gt 0 }).ForEach({ $_.Reasons.Add("ExcludeMinerName ($($Config.ExcludeMinerName -join ", "))") }) } - $Miners.Where({ $_.Earning -eq 0 }).ForEach({ $_.Reasons.Add("Earning -eq 0") }) - $Miners.Where({ -not $_.Benchmark -and $_.Workers.Hashrate -contains 0 }).ForEach({ $_.Reasons.Add("0 H/s Stat file") }) - If ($Config.DisableMinersWithFee) { $Miners.Where({ $_.Workers.Fee }).ForEach({ $_.Reasons.Add("Config.DisableMinersWithFee") }) } - If ($Config.DisableDualAlgoMining) { $Miners.Where({ $_.Workers.Count -eq 2 }).ForEach({ $_.Reasons.Add("Config.DisableDualAlgoMining") }) } - ElseIf ($Config.DisableSingleAlgoMining) { $Miners.Where({ $_.Workers.Count -eq 1 }).ForEach({ $_.Reasons.Add("Config.DisableSingleAlgoMining") }) } - - # Add reason 'Config.DisableCpuMiningOnBattery' for CPU miners when running on battery - If ($Config.DisableCpuMiningOnBattery -and (Get-CimInstance Win32_Battery).BatteryStatus -eq 1) { $Miners.Where({ $_.Type -eq "CPU" }).ForEach({ $_.Reasons.Add("Config.DisableCpuMiningOnBattery") }) } - - # Add reason 'Unreal profit data...' for miners with unreal earning (> x times higher than average of the next best 10% or at least 5 miners) - If ($Config.UnrealMinerEarningFactor -gt 1) { - ($Miners.Where({ -not $_.Reasons }) | Group-Object { [String]$_.DeviceNames }).ForEach( - { - If ($ReasonableEarning = [Double]($_.Group | Sort-Object -Descending -Property Earning_Bias | Select-Object -Skip 1 -First (5, [Math]::Floor($_.Group.Count / 10) | Measure-Object -Maximum).Maximum | Measure-Object Earning -Average).Average * $Config.UnrealMinerEarningFactor) { - ($_.Group.Where({ $_.Earning -gt $ReasonableEarning })).ForEach( - { $_.Reasons.Add("Unreal profit data (-gt $($Config.UnrealMinerEarningFactor)x higher than the next best miners available miners)") } - ) - } - } - ) - Remove-Variable ReasonableEarning -ErrorAction Ignore - } - - $Variables.MinersMissingBinary = [Miner[]]@() - ($Miners.Where({ -not $_.Reasons }) | Group-Object Path).Where({ -not (Test-Path -LiteralPath $_.Name -Type Leaf) }).Group.ForEach( - { - $_.Reasons.Add("Binary missing") - $Variables.MinersMissingBinary += $_ - } - ) - - $Variables.MinersMissingPrerequisite = [Miner[]]@() - $Miners.Where({ -not $_.Reasons -and $_.PrerequisitePath }).ForEach( - { - $_.Reasons.Add("Prerequisite missing ($(Split-Path -Path $_.PrerequisitePath -Leaf))") - $Variables.MinersMissingPrerequisite += $_ - } - ) - - If ($DownloadList = @($Variables.MinersMissingPrerequisite | Select-Object @{ Name = "URI"; Expression = { $_.PrerequisiteURI } }, @{ Name = "Path"; Expression = { $_.PrerequisitePath } }, @{ Name = "Searchable"; Expression = { $false } }) + @($Variables.MinersMissingBinary | Select-Object URI, Path, @{ Name = "Searchable"; Expression = { $false } }) | Select-Object * -Unique) { - If ($Variables.Downloader.State -ne "Running") { - # Download miner binaries - Write-Message -Level Info "Some miners binaries are missing ($($DownloadList.Count) item$(If ($DownloadList.Count -ne 1) { "s" })), starting downloader..." - $DownloaderParameters = @{ - Config = $Config - DownloadList = $DownloadList - Variables = $Variables - } - $Variables.Downloader = Start-ThreadJob -Name Downloader -StreamingHost $null -FilePath ".\Includes\Downloader.ps1" -InitializationScript ([ScriptBlock]::Create("Set-Location '$($Variables.MainPath)'")) -ArgumentList $DownloaderParameters -ThrottleLimit (2 * $Variables.Devices.Count + 2) - Remove-Variable DownloaderParameters - } - } - Remove-Variable DownloadList - - # Open firewall ports for all miners - $Variables.MissingMinerFirewallRule = [Miner[]]@() - If ($Config.OpenFirewallPorts) { - If (Get-Command Get-MpPreference) { - If ((Get-Command Get-MpComputerStatus) -and (Get-MpComputerStatus)) { - If (Get-Command Get-NetFirewallRule) { - If ($MissingFirewallRules = (Compare-Object @(Get-NetFirewallApplicationFilter | Select-Object -ExpandProperty Program -Unique) @(($Miners | Select-Object -ExpandProperty Path -Unique).ForEach({ "$PWD\$($_)" })) -PassThru).Where({ $_.SideIndicator -eq "=>" })) { - Try { - If (-not $Variables.IsLocalAdmin) { Write-Message -Level Info "Initiating request to add $($MissingFirewallRules.Count) inbound firewall rule$(If ($MissingFirewallRules.Count -ne 1) { "s" })..." } - Start-Process "pwsh" ("-Command Write-Host 'Adding $($MissingFirewallRules.Count) inbound firewall rule$(If ($MissingFirewallRules.Count -ne 1) { "s" })...'; Start-Sleep -Seconds 3; Import-Module NetSecurity; ('$($MissingFirewallRules | ConvertTo-Json -Compress)' | ConvertFrom-Json) | ForEach-Object { New-NetFirewallRule -DisplayName (Split-Path `$_ | Split-Path -leaf) -Program `$_ -Description 'Inbound rule added by $($Variables.Branding.ProductLabel) $($Variables.Branding.Version) on $([DateTime]::Now.ToString())' -Group '$($Variables.Branding.ProductLabel)' }" -replace '"', '\"') -Verb runAs - Write-Message -Level Info "Added $($MissingFirewallRules.Count) inbound firewall rule$(If ($MissingFirewallRules.Count -ne 1) { "s" }) to Windows Defender Inbound Rules Group '$($Variables.Branding.ProductLabel)'." - } - Catch { - Write-Message -Level Error "Could not add inbound firewall rules. Some miners will not be available." - $Variables.MissingMinerFirewallRule = $Miners.Where({ $MissingFirewallRules -contains $_.Path }) - $Variables.MissingMinerFirewallRule.ForEach({ $_.Reasons.Add("Inbound firewall rule missing") }) - } - } - Remove-Variable MissingFirewallRules - } - } - } - } - - # Apply watchdog to miners - If ($Config.Watchdog) { - # We assume that miner is up and running, so watchdog timer is not relevant - If ($RelevantWatchdogTimers = $Variables.WatchdogTimers.Where({ $_.MinerName -notin $Variables.MinersRunning.Name })) { - # Only miners with a corresponding watchdog timer object are of interest - If ($RelevantMiners = $Variables.Miners.Where({ $RelevantWatchdogTimers.MinerBaseName_Version -contains $_.BaseName_Version })) { - # Add miner reason 'Miner suspended by watchdog [all algorithms & all devices]' - ($RelevantWatchdogTimers | Group-Object -Property MinerBaseName_Version).ForEach( - { - If ($_.Count -gt 2 * $Variables.WatchdogCount * (($_.Group[0].MinerName -split "-")[3] -split "&").Count * ($_.Group.DeviceNames | Sort-Object -Unique).Count) { - $WatchdogGroup = $_.Group - If ($MinersToSuspend = $RelevantMiners.Where({ $_.MinerBaseName_Version -eq $WatchdogGroup.Name })) { - $MinersToSuspend.ForEach({ $_.Reasons.Add("Miner suspended by watchdog [all algorithms & all devices]") }) - Write-Message -Level Warn "Miner '$($WatchdogGroup.Name) [all algorithms & all devices]' is suspended by watchdog until $(($WatchdogGroup.Kicked | Sort-Object -Top 1).AddSeconds($Variables.WatchdogReset).ToLocalTime().ToString("T"))." - } - } - } - ) - Remove-Variable MinersToSuspend, WatchdogGroup -ErrorAction Ignore - - If ($RelevantMiners = $RelevantMiners.Where({ -not ($_.Reasons -match "Miner suspended by watchdog .+") })) { - # Add miner reason 'Miner suspended by watchdog [all algorithms]' - ($RelevantWatchdogTimers | Group-Object { $_.MinerBaseName_Version_Device }).ForEach( - { - If ($_.Count -gt 2 * $Variables.WatchdogCount * (($_.Group[0].MinerName -split "-")[3] -split "&").Count) { - $WatchdogGroup = $_.Group - If ($MinersToSuspend = $RelevantMiners.Where({ $_.BaseName_Version_Device -eq $WatchdogGroup[0].MinerBaseName_Version_Device })) { - $MinersToSuspend.ForEach({ $_.Reasons.Add("Miner suspended by watchdog [all algorithms]") }) - Write-Message -Level Warn "Miner '$($WatchdogGroup[0].MinerBaseName_Version_Device) [all algorithms]' is suspended by watchdog until $(($WatchdogGroup.Kicked | Sort-Object -Top 1).AddSeconds($Variables.WatchdogReset).ToLocalTime().ToString("T"))." - } - } - } - ) - Remove-Variable MinersToSuspend, WatchdogGroup -ErrorAction Ignore - - If ($RelevantMiners = $RelevantMiners.Where({ -not ($_.Reasons -match "Miner suspended by watchdog .+") })) { - # Add miner reason 'Miner suspended by watchdog [Algorithm [Algorithm]]' - ($RelevantWatchdogTimers.Where({ $_.Algorithm -eq $_.AlgorithmVariant }) | Group-Object -Property MinerBaseName_Version_Device).ForEach( - { - If ($_.Count / (($_.Group[0].MinerName -split "-")[3] -split "&").Count -ge $Variables.WatchdogCount) { - $WatchdogGroup = $_.Group - If ($MinersToSuspend = $RelevantMiners.Where({ $_.BaseName_Version_Device -eq $WatchdogGroup[0].MinerBaseName_Version_Device -and $_.Workers.Pool.Algorithm -contains $WatchdogGroup[0].Algorithm })) { - $MinersToSuspend.ForEach({ $_.Reasons.Add("Miner suspended by watchdog [Algorithm $($WatchdogGroup[0].Algorithm)]") }) - Write-Message -Level Warn "Miner '$($WatchdogGroup[0].MinerBaseName_Version_Device) [$($WatchdogGroup[0].Algorithm)]' is suspended by watchdog until $(($WatchdogGroup.Kicked | Sort-Object -Top 1).AddSeconds($Variables.WatchdogReset).ToLocalTime().ToString("T"))." - } - } - } - ) - Remove-Variable MinersToSuspend, WatchdogGroup -ErrorAction Ignore - - If ($RelevantMiners = $RelevantMiners.Where({ -not ($_.Reasons -match "Miner suspended by watchdog .+") })) { - # Add miner reason 'Miner suspended by watchdog [Algorithm [AlgorithmVariant]]' - ($RelevantWatchdogTimers.Where({ $_.Algorithm -ne $_.AlgorithmVariant }) | Group-Object -Property MinerBaseName_Version_Device).ForEach( - { - If ($_.Count / (($_.Group[0].MinerName -split "-")[3] -split "&").Count -ge $Variables.WatchdogCount) { - $WatchdogGroup = $_.Group - If ($MinersToSuspend = $RelevantMiners.Where({ $_.BaseName_Version_Device -eq $WatchdogGroup[0].MinerBaseName_Version_Device -and $_.Workers.Pool.AlgorithmVariant -contains $WatchdogGroup[0].AlgorithmVariant })) { - $MinersToSuspend.ForEach({ $_.Reasons.Add("Miner suspended by watchdog [Algorithm $($WatchdogGroup[0].AlgorithmVariant)]") }) - Write-Message -Level Warn "Miner '$($WatchdogGroup[0].MinerBaseName_Version_Device) [$($WatchdogGroup[0].AlgorithmVariant)]' is suspended by watchdog until $(($WatchdogGroup.Kicked | Sort-Object -Top 1).AddSeconds($Variables.WatchdogReset).ToLocalTime().ToString("T"))." - } - } - } - ) - Remove-Variable MinersToSuspend, WatchdogGroup -ErrorAction Ignore - } - } - } - } - Remove-Variable RelevantMiners -ErrorAction Ignore - } - Remove-Variable RelevantWatchdogTimers -ErrorAction Ignore - } - - $Miners.ForEach({ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons | Sort-Object -Unique); $_.Available = -not [Boolean]$_.Reasons }) - - # Gone miners are no longer available - $Miners.Where({ $_.SideIndicator -eq "<=" }).ForEach({ $_.Available = $false }) - - Write-Message -Level Info "Loaded $($Miners.Where({ $_.SideIndicator -ne "<=" }).Count) miner$(If ($Miners.Where({ $_.SideIndicator -ne "<=" }).Count -ne 1) { "s" }), filtered out $($Miners.Where({ -not $_.Available }).Count) miner$(If ($Miners.Where({ -not $_.Available }).Count -ne 1) { "s" }). $($Miners.Where({ $_.Available }).Count) available miner$(If ($Miners.Where({ $_.Available }).Count -ne 1) { "s" }) remain$(If ($Miners.Where({ $_.Available }).Count -eq 1) { "s" })." - - If ($Miners.Where({ $_.Available })) { - Write-Message -Level Info "Selecting best miner$(If (($Variables.EnabledDevices.Model | Select-Object -Unique).Count -gt 1) { " combinations" }) based on$(If ($Variables.CalculatePowerCost -and -not $Config.IgnorePowerCost) { " profit (power cost $($Config.FIATcurrency) $($Variables.PowerPricekWh)/kWâ‹…h)" } Else { " earnings" })..." - - If ($Miners.Where({ $_.Available }).Count -eq 1) { - $MinersBest = $Variables.MinersBestPerDevice = $Variables.MinersOptimal = $Miners.Where({ $_.Available }) - } - Else { - $Bias = If ($Variables.CalculatePowerCost -and -not $Config.IgnorePowerCost) { "Profit_Bias" } Else { "Earning_Bias" } - # Add running miner bonus - $RunningMinerBonusFactor = 1 + $Config.MinerSwitchingThreshold / 100 - $Miners.Where({ $_.Status -eq [MinerStatus]::Running }).ForEach({ $_.$Bias *= $RunningMinerBonusFactor }) - - # Get the optimal miners per algorithm and device - $Variables.MinersOptimal = ($Miners.Where({ $_.Available -and -not ($_.Benchmark -or $_.MeasurePowerConsumption) }) | Group-Object { [String]$_.DeviceNames }, { [String]$_.Algorithms }).ForEach({ ($_.Group | Sort-Object -Descending -Property KeepRunning, Prioritize, $Bias, Activated, @{ Expression = { $_.WarmupTimes[1] + $_.MinDataSample }; Descending = $true }, @{ Expression = { [String]$_.Algorithms }; Descending = $false } -Top 1).ForEach({ $_.Optimal = $true; $_ }) }) - # Get the best miners per device - $Variables.MinersBestPerDevice = ($Miners.Where({ $_.Available }) | Group-Object { [String]$_.DeviceNames }).ForEach({ $_.Group | Sort-Object -Descending -Property Benchmark, MeasurePowerConsumption, KeepRunning, Prioritize, $Bias, Activated, @{ Expression = { $_.WarmupTimes[1] + $_.MinDataSample }; Descending = $true } -Top 1 }) - $Variables.MinerDeviceNamesCombinations = (Get-Combination @($Variables.MinersBestPerDevice | Select-Object DeviceNames -Unique)).Where({ (Compare-Object ($_.Combination | Select-Object -ExpandProperty DeviceNames -Unique) ($_.Combination | Select-Object -ExpandProperty DeviceNames) | Measure-Object).Count -eq 0 }) - - # Get most best miner combination i.e. AMD+INTEL+NVIDIA+CPU - $MinerCombinations = $Variables.MinerDeviceNamesCombinations.ForEach( - { - $MinerDeviceNamesCombination = $_.Combination - [PSCustomObject]@{ - Combination = $MinerDeviceNamesCombination.ForEach( - { - $DeviceNames = [String]$_.DeviceNames - $Variables.MinersBestPerDevice.Where({ [String]$_.DeviceNames -eq $DeviceNames }) - } - ) - } - } - ) - Remove-Variable DeviceNames, MinerDeviceNamesCombination -ErrorAction Ignore - - # Get smallest $Bias - # Hack: Temporarily make all bias -ge 0 by adding smallest bias, MinerBest produces wrong sort order when some profits are negative - $SmallestBias = $Variables.MinersBestPerDevice.$Bias | Sort-Object -Top 1 - $MinerCombinations.ForEach({ $_.Combination.ForEach({ $_.$Bias += $SmallestBias }) }) - $MinersBest = ($MinerCombinations | Sort-Object -Descending { $_.Combination.Where({ [Double]::IsNaN($_.$Bias) }).Count }, { ($_.Combination.$Bias | Measure-Object -Sum).Sum }, { ($_.Combination.Where({ $_.$Bias -ne 0 }) | Measure-Object).Count } -Top 1).Combination - $MinerCombinations.ForEach({ $_.Combination.ForEach({ $_.$Bias -= $SmallestBias }) }) - - # Revert running miner bonus - $Miners.Where({ $_.Status -eq [MinerStatus]::Running }).ForEach({ $_.$Bias /= $RunningMinerBonusFactor }) - Remove-Variable Bias, MinerCombinations, MinerDeviceNameCount, RunningMinerBonusFactor, SmallestBias -ErrorAction Ignore - } - - $Variables.PowerConsumptionIdleSystemW = (($Config.PowerConsumptionIdleSystemW - ($MinersBest.Where({ $_.Type -eq "CPU" }) | Measure-Object PowerConsumption -Sum).Sum), 0 | Measure-Object -Maximum).Maximum - $Variables.BasePowerCost = [Double]($Variables.PowerConsumptionIdleSystemW / 1000 * 24 * $Variables.PowerPricekWh / $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency)) - $Variables.MiningEarning = [Double]($MinersBest | Measure-Object Earning_Bias -Sum).Sum - $Variables.MiningPowerCost = [Double]($MinersBest | Measure-Object PowerCost -Sum).Sum - $Variables.MiningPowerConsumption = [Double]($MinersBest | Measure-Object PowerConsumption -Sum).Sum - $Variables.MiningProfit = [Double](($MinersBest | Measure-Object Profit_Bias -Sum).Sum - $Variables.BasePowerCost) - } - Else { - $Variables.PowerConsumptionIdleSystemW = (($Config.PowerConsumptionIdleSystemW), 0 | Measure-Object -Maximum).Maximum - $Variables.BasePowerCost = [Double]($Variables.PowerConsumptionIdleSystemW / 1000 * 24 * $Variables.PowerPricekWh / $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency)) - $Variables.MinersOptimal = $Variables.MinersBestPerDevice = $Variables.MinerDeviceNamesCombinations = $MinersBest = [Miner[]]@() - $Variables.MiningEarning = $Variables.MiningProfit = $Variables.MiningPowerCost = $Variables.MiningPowerConsumption = [Double]0 - } - Remove-Variable Bias -ErrorAction Ignore - } - - $Variables.MinersNeedingBenchmark = $Miners.Where({ $_.Available -and $_.Benchmark }) | Sort-Object -Property Name -Unique - $Variables.MinersNeedingPowerConsumptionMeasurement = $Miners.Where({ $_.Available -and $_.MeasurePowerConsumption }) | Sort-Object -Property Name -Unique - - # ProfitabilityThreshold check - OK to run miners? - If ($Variables.Rates.($Config.PayoutCurrency)) { - $Miners.ForEach({ $_.Best = $false }) - If ($Variables.DonationRunning -or $Variables.MinersNeedingBenchmark -or $Variables.MinersNeedingPowerConsumptionMeasurement -or -not $Variables.CalculatePowerCost -or $Variables.MiningProfit -ge ($Config.ProfitabilityThreshold / $Variables.Rates.BTC.($Config.FIATcurrency))) { - $MinersBest.ForEach({ $_.Best = $true }) - If ($Variables.MinersNeedingBenchmark.Count) { - $Variables.Summary = "Earning / day: n/a (Benchmarking: $($Variables.MinersNeedingBenchmark.Count) $(If ($Variables.MinersNeedingBenchmark.Count -eq 1) { "miner" } Else { "miners" }) left$(If ($Variables.EnabledDevices.Count -gt 1) { " [$((($Variables.MinersNeedingBenchmark | Group-Object { [String]$_.DeviceNames } | Sort-Object -Property Name).ForEach({ "$($_.Name): $($_.Count)" })) -join ", ")]" }))" - } - ElseIf ($Variables.MiningEarning -gt 0) { - $Variables.Summary = "Earning / day: {0:n} {1}" -f ($Variables.MiningEarning * $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency)), $Config.FIATcurrency - } - Else { - $Variables.Summary = "" - } - - If ($Variables.CalculatePowerCost -and $Variables.PoolsBest) { - If ($Variables.Summary -ne "") { $Variables.Summary += "   " } - - If ($Variables.MinersNeedingPowerConsumptionMeasurement.Count -or [Double]::IsNaN($Variables.MiningPowerCost)) { - $Variables.Summary += "Profit / day: n/a (Measuring power consumption: $($Variables.MinersNeedingPowerConsumptionMeasurement.Count) $(If ($Variables.MinersNeedingPowerConsumptionMeasurement.Count -eq 1) { "miner" } Else { "miners" }) left$(If ($Variables.EnabledDevices.Count -gt 1) { " [$((($Variables.MinersNeedingPowerConsumptionMeasurement | Group-Object { [String]$_.DeviceNames } | Sort-Object -Property Name).ForEach({ "$($_.Name): $($_.Count)" })) -join ", ")]" }))" - } - ElseIf ($Variables.MinersNeedingBenchmark.Count) { - $Variables.Summary += "Profit / day: n/a" - } - ElseIf ($Variables.MiningPowerConsumption -gt 0) { - $Variables.Summary += "Profit / day: {0:n} {1}" -f ($Variables.MiningProfit * $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency)), $Config.FIATcurrency - } - Else { - $Variables.Summary += "Profit / day: n/a (no power data)" - } - - If ($Variables.CalculatePowerCost) { - If ($Variables.Summary -ne "") { $Variables.Summary += "   " } - - If ([Double]::IsNaN($Variables.MiningEarning) -or [Double]::IsNaN($Variables.MiningPowerCost)) { - $Variables.Summary += "Power cost / day: n/a [Miner$(If ($MinersBest.Count -ne 1) { "s" }): n/a; Base: {1:n} {0} ({2:n2} W)]" -f $Config.FIATcurrency, ($Variables.BasePowerCost * $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency)), $Variables.PowerConsumptionIdleSystemW - } - ElseIf ($Variables.MiningPowerConsumption -gt 0) { - $Variables.Summary += "Power cost / day: {1:n} {0} [Miner$(If ($MinersBest.Count -ne 1) { "s" }): {2:n} {0} ({3:n2} W); Base: {4:n} {0} ({5:n2} W)]" -f $Config.FIATcurrency, (($Variables.MiningPowerCost + $Variables.BasePowerCost) * $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency)), ($Variables.MiningPowerCost * $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency)), $Variables.MiningPowerConsumption, ($Variables.BasePowerCost * $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency)), $Variables.PowerConsumptionIdleSystemW - } - Else { - $Variables.Summary += "Power cost / day: n/a [Miner: n/a; Base: {1:n} {0} ({2:n2} W)]" -f $Config.FIATcurrency, ($Variables.BasePowerCost * $Variables.Rates.BTC.($Config.FIATcurrency)), $Variables.PowerConsumptionIdleSystemW - } - } - } - If ($Variables.Summary -ne "") { $Variables.Summary += "
" } - - # Add currency conversion rates - ((@(If ($Config.UsemBTC) { "mBTC" } Else { ($Config.PayoutCurrency) }) + @($Config.ExtraCurrencies)) | Select-Object -Unique).Where({ $Variables.Rates.$_.($Config.FIATcurrency) }).ForEach( - { - $Variables.Summary += "1 $_ = {0:N$(Get-DecimalsFromValue -Value $Variables.Rates.$_.($Config.FIATcurrency) -DecimalsMax $Config.DecimalsMax)} $($Config.FIATcurrency)   " -f $Variables.Rates.$_.($Config.FIATcurrency) - } - ) - } - Else { - # Mining earning/profit is below threshold - $MinersBest = [Miner[]]@() - $Variables.Summary = "Mining profit {0} {1:n$($Config.DecimalsMax)} / day is below the configured threshold of {0} {2:n$($Config.DecimalsMax)} / day. Mining is suspended until threshold is reached." -f $Config.FIATcurrency, (($Variables.MiningEarning - $(If ($Config.CalculatePowerCost) { $Variables.MiningPowerCost - $Variables.BasePowerCost } Else { 0 })) * $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency)), $Config.ProfitabilityThreshold - Write-Message -Level Warn ($Variables.Summary -replace "
", " " -replace " / day", "/day") - If ($Variables.Rates) { - # Add currency conversion rates - If ($Variables.Summary -ne "") { $Variables.Summary += "
" } - ((@(If ($Config.UsemBTC) { "mBTC" } Else { $Config.PayoutCurrency }) + @($Config.ExtraCurrencies)) | Select-Object -Unique).Where({ $Variables.Rates.$_.($Config.FIATcurrency) }).ForEach( - { - $Variables.Summary += "1 $_ = {0:N$(Get-DecimalsFromValue -Value $Variables.Rates.$_.($Config.FIATcurrency) -DecimalsMax $Config.DecimalsMax)} $($Config.FIATcurrency)   " -f $Variables.Rates.$_.($Config.FIATcurrency) - } - ) - } - } - } - Else { - $Variables.Summary = "Error:
Could not get BTC exchange rate from min-api.cryptocompare.com" - } - - # Stop running miners - ForEach ($Miner in @($Miners.Where({ [MinerStatus]::DryRun, [MinerStatus]::Running -contains $_.Status }) | Sort-Object { [String]$_.DeviceNames })) { - If ($Miner.Status -eq [MinerStatus]::Running -and $Miner.GetStatus() -ne [MinerStatus]::Running) { - $Miner.StatusInfo = "'$($Miner.Info)' ($($Miner.Data.Count) Sample$(If ($Miner.Data.Count -ne 1) { "s" })) exited unexpectedly" - $Miner.SetStatus([MinerStatus]::Failed) - } - Else { - If ($Miner.Benchmark -or $Miner.MeasurePowerConsumption) { - If ($Miner.Activated -le 0) { $Miner.Restart = $true } # Re-benchmark sets Activated to 0 - } - ElseIf ($Config.DryRun -and $Miner.Status -ne [MinerStatus]::DryRun) { $Miner.Restart = $true } - ElseIf (-not $Config.DryRun -and $Miner.Status -eq [MinerStatus]::DryRun) { $Miner.Restart = $true } - If ($Miner.Restart -or -not $Miner.Best -or $Variables.NewMiningStatus -ne "Running") { - ForEach ($Worker in $Miner.WorkersRunning) { - If ($WatchdogTimers = @($Variables.WatchdogTimers.Where({ $_.MinerName -eq $Miner.Name -and $_.PoolName -eq $Worker.Pool.Name -and $_.PoolRegion -eq $Worker.Pool.Region -and $_.AlgorithmVariant -eq $Worker.Pool.AlgorithmVariant -and $_.DeviceNames -eq $Miner.DeviceNames }))) { - # Remove Watchdog timers - $Variables.WatchdogTimers = @($Variables.WatchdogTimers.Where({ $_ -notin $WatchdogTimers })) - } - } - $Miner.SetStatus([MinerStatus]::Idle) - Remove-Variable WatchdogTimers, Worker -ErrorAction Ignore - } - } - $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) - } - Remove-Variable Miner, WatchdogTimers, Worker -ErrorAction Ignore - - # Kill stuck miners on subsequent cycles - # If (-not ($Variables.MinersBest.Where({ $_.Benchmark -or $_.MeasurePowerConsumption }))) { - $Loops = 0 - # Some miners, e.g. BzMiner spawn a second executable - While ($StuckMinerProcessIDs = (Get-CimInstance CIM_Process).Where({ $_.ExecutablePath -and ($Miners.Path | Sort-Object -Unique) -contains $_.ExecutablePath -and (Get-CimInstance win32_process -Filter "ParentProcessId = $($_.ProcessId)") -and $Miners.ProcessID -notcontains $_.ProcessID }) | Select-Object -ExpandProperty ProcessID) { - $StuckMinerProcessIDs.ForEach( - { - If ($Miner = $Miners | Where-Object ProcessID -EQ $_) { Write-Message -Level Verbose "Killing stuck miner '$($Miner.Name)'." } - If ($ChildProcessID = (Get-CimInstance win32_process -Filter "ParentProcessId = $_").ProcessID) { Stop-Process -Id $ChildProcessID -Force -ErrorAction Ignore } - Stop-Process -Id $_ -Force -ErrorAction Ignore | Out-Null - } - ) - Start-Sleep -Milliseconds 500 - $Loops ++ - If ($Loops -gt 50) { - If ($Config.AutoReboot) { - Write-Message -Level Error "$(If ($StuckMinerProcessIDs.Count -eq 1) { "A miner " } Else { "Some miners are" }) stuck and cannot get stopped graciously. Restarting computer in 30 seconds..." - shutdown.exe /r /t 30 /c "$($Variables.Branding.ProductLabel) detected stuck miner$(If ($StuckMinerProcessIDs.Count -ne 1) { "s" }) and will reboot the computer in 30 seconds." - Start-Sleep -Seconds 60 - } - Else { - Write-Message -Level Error "$(If ($StuckMinerProcessIDs.Count -eq 1) { "A miner " } Else { "Some miners are" }) stuck and cannot get stopped graciously. It is recommended to restart the computer." - Start-Sleep -Seconds 30 - } - } - } - Remove-Variable ChildProcessID, Loops, Message, Miner, StuckMinerProcessIDs -ErrorAction Ignore - # } - - $Miners.ForEach( - { - If ($_.Disabled) { - $_.Status = [MinerStatus]::Disabled - $_.SubStatus = "disabled" - } - ElseIf (-not $_.Available) { - $_.Status = [MinerStatus]::Unavailable - $_.SubStatus = "unavailable" - } - ElseIf ($_.Status -eq [MinerStatus]::Unavailable) { - $_.Status = [MinerStatus]::Idle - $_.SubStatus = "idle" - } - ElseIf ($_.Status -eq [MinerStatus]::Idle) { - $_.SubStatus = "idle" - } - } - ) - - # Update data in API - $Variables.Miners = $Miners.Where({ $_.SideIndicator -ne "<=" }) - $Variables.MinersBest = $MinersBest | Sort-Object { [String]$_.DeviceNames } - Remove-Variable Miners, MinersBest -ErrorAction Ignore - - $Variables.Miners.ForEach({ $_.PSObject.Properties.Remove("SideIndicator") }) - - If (-not ($Variables.EnabledDevices -and $Variables.Miners.Where({ $_.Available }))) { - $Variables.Miners = [Miner[]]@() - $Variables.RefreshNeeded = $true - If (-not $Variables.EnabledDevices) { - Write-Message -Level Warn "No enabled devices - retrying in $($Config.Interval) seconds..." - Start-Sleep -Seconds $Config.Interval - Write-Message -Level Info "Ending cycle (No enabled devices)." - } - ElseIf (-not $Variables.PoolName) { - Write-Message -Level Warn "No configured pools - retrying in $($Config.Interval) seconds..." - Start-Sleep -Seconds $Config.Interval - Write-Message -Level Info "Ending cycle (No configured pools)." - } - ElseIf (-not $Variables.PoolsBest) { - Write-Message -Level Warn "No available pools - retrying in $($Config.Interval) seconds..." - Start-Sleep -Seconds $Config.Interval - Write-Message -Level Info "Ending cycle (No available pools)." - } - Else { - Write-Message -Level Warn "No available miners - retrying in $($Config.Interval) seconds..." - Start-Sleep -Seconds $Config.Interval - Write-Message -Level Info "Ending cycle (No available miners)." - } - Continue - } - - If (-not $Variables.MinersBest) { - $Variables.Miners.ForEach({ $_.Status = [MinerStatus]::Idle; $_.StatusInfo = "Idle" }) - $Variables.Devices.Where({ $_.State -eq [DeviceState]::Enabled }).ForEach({ $_.Status = [MinerStatus]::Idle; $_.StatusInfo = "Idle" }) - $Variables.RefreshNeeded = $true - Write-Message -Level Warn "No profitable miners - retrying in $($Config.Interval) seconds..." - Start-Sleep -Seconds $Config.Interval - Write-Message -Level Info "Ending cycle (No profitable miners)." - Continue - } - - # Core suspended with P in MainLoop - While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 } - - # Optional delay to avoid blue screens - Start-Sleep -Seconds $Config.Delay - - ForEach ($Miner in $Variables.MinersBest) { - If ($Miner.Status -ne [MinerStatus]::DryRun -and $Miner.GetStatus() -ne [MinerStatus]::Running) { - If ($Config.DryRun -and -not ($Miner.Benchmark -or $Miner.MeasurePowerConsumption)) { - $Miner.SetStatus([MinerStatus]::DryRun) - } - Else { - # Launch prerun if exists - If (Test-Path -LiteralPath ".\Utils\Prerun\$($Miner.Type)Prerun.bat" -PathType Leaf) { - Write-Message -Level Info "Launching Prerun: .\Utils\Prerun\$($Miner.Type)Prerun.bat" - Start-Process ".\Utils\Prerun\$($Miner.Type)Prerun.bat" -WorkingDirectory ".\Utils\Prerun" -WindowStyle hidden - Start-Sleep -Seconds 2 - } - $MinerAlgorithmPrerunName = ".\Utils\Prerun\$($Miner.Name)$(If ($Miner.Algorithms.Count -eq 1) { "_$($Miner.Algorithms[0])" } Else { "_$($Miner.Algorithms -join '&')" }).bat" - $AlgorithmPrerunName = ".\Utils\Prerun\$($Miner.Algorithms -join "&").bat" - $DefaultPrerunName = ".\Utils\Prerun\default.bat" - If (Test-Path -LiteralPath $MinerAlgorithmPrerunName -PathType Leaf) { - Write-Message -Level Info "Launching Prerun: $MinerAlgorithmPrerunName" - Start-Process $MinerAlgorithmPrerunName -WorkingDirectory ".\Utils\Prerun" -WindowStyle hidden - Start-Sleep -Seconds 2 - } - ElseIf (Test-Path -LiteralPath $AlgorithmPrerunName -PathType Leaf) { - Write-Message -Level Info "Launching Prerun: $AlgorithmPrerunName" - Start-Process $AlgorithmPrerunName -WorkingDirectory ".\Utils\Prerun" -WindowStyle hidden - Start-Sleep -Seconds 2 - } - ElseIf (Test-Path -LiteralPath $DefaultPrerunName -PathType Leaf) { - Write-Message -Level Info "Launching Prerun: $DefaultPrerunName" - Start-Process $DefaultPrerunName -WorkingDirectory ".\Utils\Prerun" -WindowStyle hidden - Start-Sleep -Seconds 2 - } - Remove-Variable AlgorithmPrerunName, DefaultPrerunName, MinerAlgorithmPrerunName -ErrorAction Ignore - - If ($Miner.Workers.Pool.DAGSizeGiB) { - # Add extra time when CPU mining and miner requires DAG creation - If ($Variables.MinersBest.Type -contains "CPU") { $Miner.WarmupTimes[0] += 15 <# seconds #> } - # Add extra time when notebook runs on battery - If ((Get-CimInstance Win32_Battery).BatteryStatus -eq 1) { $Miner.WarmupTimes[0] += 90 <# seconds #> } - } - - # Do not wait for stable hash rates, for quick and dirty benchmarking - If ($Config.DryRun -and $Variables.BenchmarkAllPoolAlgorithmCombinations) { $Miner.WarmupTimes[1] = 0 } - - $Miner.SetStatus([MinerStatus]::Running) - } - $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) - - # Set window title - If ($Miner.Process.MainWindowHandle) { [Void][Win32]::SetWindowText($Miner.Process.MainWindowHandle, $Miner.StatusInfo) } - - # Add watchdog timer - If ($Config.Watchdog) { - ForEach ($Worker in $Miner.Workers) { - $Variables.WatchdogTimers += [PSCustomObject]@{ - Algorithm = $Worker.Pool.Algorithm - AlgorithmVariant = $Worker.Pool.AlgorithmVariant - DeviceNames = $Miner.DeviceNames - Kicked = [DateTime]::Now.ToUniversalTime() - MinerBaseName = $Miner.BaseName - MinerName = $Miner.Name - MinerBaseName_Version_Device = $Miner.BaseName_Version_Device - MinerBaseName_Version = $Miner.BaseName, $Miner.Version -join '-' - MinerVersion = $Miner.Version - PoolName = $Worker.Pool.Name - PoolRegion = $Worker.Pool.Region - PoolVariant = $Worker.Pool.Variant - CommandLine = $Miner.CommandLine - } - } - Remove-Variable Worker -ErrorAction Ignore - } - } - Else { - $DataCollectInterval = If ($Miner.Benchmark -or $Miner.MeasurePowerConsumption) { 1 } Else { 5 } - If ($Miner.DataCollectInterval -ne $DataCollectInterval) { - $Miner.DataCollectInterval = $DataCollectInterval - $Miner.RestartDataReader() - } - Remove-Variable DataCollectInterval - } - } - - ForEach ($Miner in $Variables.MinersBest) { - If ($Message = "$(If ($Miner.Benchmark) { "Benchmarking" })$(If ($Miner.Benchmark -and $Miner.MeasurePowerConsumption) { " and measuring power consumption" } ElseIf ($Miner.MeasurePowerConsumption) { "Measuring power consumption" })") { - Write-Message -Level Verbose "$Message for miner '$($Miner.Info)' in progress [Attempt $($Miner.Activated) of $($Variables.WatchdogCount + 1); min. $($Miner.MinDataSample) samples]..." - } - } - Remove-Variable Miner, Message -ErrorAction Ignore - - ($Variables.Miners.Where({ $_.Available }) | Group-Object { [String]$_.DeviceNames }).ForEach( - { - # Display benchmarking progress - If ($MinersDeviceGroupNeedingBenchmark = $_.Group.Where({ $_.Benchmark })) { - $Count = ($MinersDeviceGroupNeedingBenchmark | Select-Object -Property Name -Unique).Count - Write-Message -Level Info "Benchmarking for '$($_.Name)' in progress. $Count miner$(If ($Count -gt 1) { "s" }) left to complete benchmarking." - } - # Display power consumption measurement progress - If ($MinersDeviceGroupNeedingPowerConsumptionMeasurement = $_.Group.Where({ $_.MeasurePowerConsumption })) { - $Count = ($MinersDeviceGroupNeedingPowerConsumptionMeasurement | Select-Object -Property Name -Unique).Count - Write-Message -Level Info "Power consumption measurement for '$($_.Name)' in progress. $Count miner$(If ($Count -gt 1) { "s" }) left to complete measuring." - } - } - ) - Remove-Variable Count, MinersDeviceGroupNeedingBenchmark, MinersDeviceGroupNeedingPowerConsumptionMeasurement -ErrorAction Ignore - - If ($Variables.CycleStarts.Count -eq 1) { - # Ensure a cycle on first loop - $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime().AddSeconds($Config.Interval) - } - - $Variables.MinersRunning = $Variables.MinersBest - $Variables.MinersBenchmarkingOrMeasuring = $Variables.MinersRunning.Where({ $_.Benchmark -or $_.MeasurePowerConsumption }) - $Variables.MinersFailed = [Miner[]]@() - - # Core suspended with P in MainLoop - While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 } - - $Variables.RefreshTimestamp = [DateTime]::Now.ToUniversalTime() - $Variables.RefreshNeeded = $true - - Write-Message -Level Info "Collecting miner data while waiting for next cycle..." - - Do { - $LoopEnd = [DateTime]::Now.AddSeconds(1) - Try { - ForEach ($Miner in $Variables.MinersRunning.Where({ $_.Status -ne [MinerStatus]::DryRun })) { - # If ($DebugMinerGetData) { - Write-Host "$($Miner.BaseName_Version_Device): $($Miner.GetMinerData() | ConvertTo-Json -Compress)" - # } - If ($Miner.GetStatus() -ne [MinerStatus]::Running) { - # Miner crashed - $Miner.StatusInfo = "'$($Miner.Info)' ($($Miner.Data.Count) Sample$(If ($Miner.Data.Count -ne 1) { "s" })) exited unexpectedly" - $Miner.SetStatus([MinerStatus]::Failed) - $Variables.MinersFailed += $Miner - } - ElseIf ($Miner.DataReaderJob.State -ne [MinerStatus]::Running) { - # Miner data reader process failed - $Miner.StatusInfo = "'$($Miner.Info)' ($($Miner.Data.Count) Sample$(If ($Miner.Data.Count -ne 1) { "s" })) miner data reader exited unexpectedly" - $Miner.SetStatus([MinerStatus]::Failed) - $Variables.MinersFailed += $Miner - } - Else { - If ($Miner.DataReaderJob.HasMoreData) { - If ($Samples = @($Miner.DataReaderJob | Receive-Job).Where({ $_.Date })) { - $Sample = $Samples[-1] - $Miner.Hashrates_Live = $Sample.Hashrate.PSObject.Properties.Value - $Miner.DataSampleTimestamp = $Sample.Date - If ($Miner.ReadPowerConsumption) { $Miner.PowerConsumption_Live = $Sample.PowerConsumption } - # Need hashrates for all algorithms to count as a valid sample - If ($Sample.Hashrate.PSObject.Properties.Value -notcontains 0 -and $Miner.ValidDataSampleTimestamp -eq [DateTime]0) { $Miner.ValidDataSampleTimestamp = $Sample.Date.AddSeconds($Miner.WarmupTimes[1]) } - If (($Miner.ValidDataSampleTimestamp -ne [DateTime]0 -and ($Sample.Date - $Miner.ValidDataSampleTimestamp) -ge 0)) { - $Samples.Where({ $_.Hashrate.PSObject.Properties.Value -notcontains 0 }).ForEach({ $Miner.Data.Add($_) }) - Write-Message -Level Verbose "$($Miner.Name) data sample collected [$(($Sample.Hashrate.PSObject.Properties.Name.ForEach({ "$($_): $(($Sample.Hashrate.$_ | ConvertTo-Hash) -replace " ")$(If ($Config.ShowShares) { " (Shares: A$($Sample.Shares.$_[0])+R$($Sample.Shares.$_[1])+I$($Sample.Shares.$_[2])=T$($Sample.Shares.$_[3]))" })" })) -join " & ")$(If ($Sample.PowerConsumption) { " | Power: $($Sample.PowerConsumption.ToString("N2"))W" })] ($($Miner.Data.Count) Sample$(If ($Miner.Data.Count -ne 1) { "s" }))" - If ($Miner.Activated -gt 0 -and ($Miner.Benchmark -or $Miner.MeasurePowerConsumption)) { - $Miner.StatusInfo = "$(If ($Miner.Benchmark) { "Benchmarking" })$(If ($Miner.Benchmark -and $Miner.MeasurePowerConsumption) { " and measuring power consumption" } ElseIf ($Miner.MeasurePowerConsumption) { "Measuring power consumption" }) '$($Miner.Info)'" - $Miner.SubStatus = "benchmarking" - } - Else { - $Miner.StatusInfo = "Mining '$($Miner.Info)'" - $Miner.SubStatus = "running" - } - } - Else { - Write-Message -Level Verbose "$($Miner.Name) data sample discarded [$(($Sample.Hashrate.PSObject.Properties.Name.ForEach({ "$($_): $(($Sample.Hashrate.$_ | ConvertTo-Hash) -replace " ")$(If ($Config.ShowShares) { " (Shares: A$($Sample.Shares.$_[0])+R$($Sample.Shares.$_[1])+I$($Sample.Shares.$_[2])=T$($Sample.Shares.$_[3]))" })" })) -join " & ")$(If ($Sample.PowerConsumption) { " | Power: $($Sample.PowerConsumption.ToString("N2"))W" })]$(If ($Miner.ValidDataSampleTimestamp -ne [DateTime]0) { " (Miner is warming up [$(([DateTime]::Now.ToUniversalTime() - $Miner.ValidDataSampleTimestamp).TotalSeconds.ToString("0") -replace "-0", "0") sec])"} )" - $Miner.StatusInfo = "Warming up '$($Miner.Info)'" - $Miner.SubStatus = "warmingup" - } - } - } - If ($Variables.NewMiningStatus -eq "Running") { - # Stop miner, it has not provided hash rate on time - If ($Miner.ValidDataSampleTimestamp -eq [DateTime]0 -and [DateTime]::Now.ToUniversalTime() -gt $Miner.BeginTime.AddSeconds($Miner.WarmupTimes[0])) { - $Miner.StatusInfo = "'$($Miner.Info)' has not provided first valid data sample in $($Miner.WarmupTimes[0]) seconds" - $Miner.SetStatus([MinerStatus]::Failed) - $Variables.MinersFailed += $Miner - } - # Miner stuck - no sample received in last few data collect intervals - ElseIf ($Miner.ValidDataSampleTimestamp -gt [DateTime]0 -and [DateTime]::Now.ToUniversalTime() -gt $Miner.DataSampleTimestamp.AddSeconds((($Miner.DataCollectInterval * 5), 10 | Measure-Object -Maximum).Maximum * $Miner.Algorithms.Count)) { - $Miner.StatusInfo = "'$($Miner.Info)' has not updated data for more than $((($Miner.DataCollectInterval * 5), 10 | Measure-Object -Maximum).Maximum * $Miner.Algorithms.Count) seconds" - $Miner.SetStatus([MinerStatus]::Failed) - $Variables.MinersFailed += $Miner - } - } - If ($Miner.Process) { - $Miner.Process.PriorityClass = $Global:PriorityNames.($Miner.ProcessPriority) - # Set window title - [Void][Win32]::SetWindowText($Miner.Process.MainWindowHandle, $Miner.StatusInfo) - } - } - $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) - } - Remove-Variable Miner, Sample, Samples -ErrorAction Ignore - - $Variables.MinersRunning = $Variables.MinersRunning.Where({ $_ -notin $Variables.MinersFailed }) - $Variables.MinersBenchmarkingOrMeasuring = $Variables.MinersRunning.Where({ $_.Benchmark -or $_.MeasurePowerConsumption }) - - If ($Variables.MinersFailed) { - # A miner crashed , exit loop immediately - $Variables.EndCycleMessage = " prematurely (miner failed)" - } - ElseIf ($Variables.MinersBenchmarkingOrMeasuring.Where({ $_.Data.Count -ge $_.MinDataSample })) { - # Enough samples collected for this loop, exit loop immediately - $Variables.EndCycleMessage = " (a$(If ($Variables.MinersBenchmarkingOrMeasuring.Where({ $_.Benchmark })) { " benchmarking" })$(If ($Variables.MinersBenchmarkingOrMeasuring.Where({ $_.Benchmark -and $_.MeasurePowerConsumption })) { " and" })$(If ($Variables.MinersBenchmarkingOrMeasuring.Where({ $_.MeasurePowerConsumption })) { " power consumption measuring" }) miner has collected enough samples for this cycle)" - } - } - Catch { - Write-Message -Level Error "Error in file '$(($_.InvocationInfo.ScriptName -split "\\" | Select-Object -Last 2) -join "\")' line $($_.InvocationInfo.ScriptLineNumber) detected. Restarting cycle..." - "$(Get-Date -Format "yyyy-MM-dd_HH:mm:ss")" >> $ErrorLogFile - $_.Exception | Format-List -Force >> $ErrorLogFile - $_.InvocationInfo | Format-List -Force >> $ErrorLogFile - } - - # Core suspended with P in MainLoop - While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 } - - # Wait until 1 second since loop start has passed - While ([DateTime]::Now -le $LoopEnd) { Start-Sleep -Milliseconds 50 } - - # Exit loop when - # - a miner crashed - # - a benchmarking miner has collected enough samples - # - WarmupTimes[0] is reached and no readout from miner - # - when not benchmnarking: Interval time is over - } While ($Variables.NewMiningStatus -eq "Running" -and -not $Variables.EndCycleMessage -and ((-not $Config.DryRun -and [DateTime]::Now.ToUniversalTime() -le $Variables.EndCycleTime) -or $Variables.MinersBenchmarkingOrMeasuring)) - Remove-Variable LoopEnd - - # Expire brains loop to collect data - If ($Variables.EndCycleMessage -or $Config.DryRun) { - $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime() - Start-Sleep -Seconds 1 - } - - Get-Job -State "Completed" | Receive-Job | Out-Null - Get-Job -State "Completed" | Remove-Job -Force -ErrorAction Ignore | Out-Null - Get-Job -State "Failed" | Receive-Job | Out-Null - Get-Job -State "Failed" | Remove-Job -Force -ErrorAction Ignore | Out-Null - Get-Job -State "Stopped" | Receive-Job | Out-Null - Get-Job -State "Stopped" | Remove-Job -Force -ErrorAction Ignore | Out-Null - - $Error.Clear() - [System.GC]::Collect() - $Proc = Get-Process -Id $PID - Write-Message -Level MemDbg "$((Get-Item $MyInvocation.MyCommand.Path).BaseName) runspace: handles: $($Proc.HandleCount) / memory: $($Proc.PrivateMemorySize64 / 1mb) mb" - - $Variables.RestartCycle = $true - - If ($Variables.NewMiningStatus -eq "Running") { Write-Message -Level Info "Ending cycle$($Variables.EndCycleMessage)." } - } While ($Variables.NewMiningStatus -eq "Running") -} -Catch { - Write-Message -Level Error "Error in file '$(($_.InvocationInfo.ScriptName -split "\\" | Select-Object -Last 2) -join "\")' line $($_.InvocationInfo.ScriptLineNumber) detected." - "$(Get-Date -Format "yyyy-MM-dd_HH:mm:ss")" >> $ErrorLogFile - $_.Exception | Format-List -Force >> $ErrorLogFile - $_.InvocationInfo | Format-List -Force >> $ErrorLogFile - $Variables.EndCycleTime = $Variables.StartCycleTime.AddSeconds($Config.Interval) # Reset timers -} \ No newline at end of file diff --git a/Includes/Downloader.ps1 b/Includes/Downloader.ps1 index 127b47a5..4aad2787 100644 --- a/Includes/Downloader.ps1 +++ b/Includes/Downloader.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\Downloader.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> using module .\Includes\Include.psm1 diff --git a/Includes/Include.psm1 b/Includes/Include.psm1 index 0a866c52..e1509920 100644 --- a/Includes/Include.psm1 +++ b/Includes/Include.psm1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\include.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> $Global:DebugPreference = "SilentlyContinue" @@ -806,7 +806,7 @@ Function Stop-Core { $Miner.SetStatus([MinerStatus]::Idle) } - $Variables.Miners.ForEach({ $_.Dispose }) + $Variables.Miners.ForEach({ $_.Dispose() }) $Variables.Miners = [Miner[]]@() $Variables.MinersBenchmarkingOrMeasuring = [Miner[]]@() $Variables.MinersBest = [Miner[]]@() diff --git a/Includes/LegacyGUI.ps1 b/Includes/LegacyGUI.ps1 index 83455a16..36e2d630 100644 --- a/Includes/LegacyGUI.ps1 +++ b/Includes/LegacyGUI.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\LegacyGUI.psm1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> [Void][System.Reflection.Assembly]::Load("System.Windows.Forms") @@ -147,11 +147,9 @@ Function Update-TabControl { $LegacyGUIactiveMinersDGV.BeginInit() $LegacyGUIactiveMinersDGV.ClearSelection() $LegacyGUIactiveMinersDGV.DataSource = $Variables.MinersBest | Select-Object @( - @{ Name = "Info"; Expression = { $_.info } } @{ Name = "SubStatus"; Expression = { $_.SubStatus } } @{ Name = "Device(s)"; Expression = { $_.DeviceNames -join " " } } - @{ Name = "Miner"; Expression = { $_.Name } } - @{ Name = "Status"; Expression = { $_.Status } }, + @{ Name = "Status Info"; Expression = { $_.StatusInfo } } @{ Name = "Earning (biased) $($Config.FIATcurrency)/day"; Expression = { If ([Double]::IsNaN($_.Earning)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Earning * $Variables.Rates.BTC.($Config.FIATcurrency)) } } } @{ Name = "Power cost $($Config.FIATcurrency)/day"; Expression = { If ([Double]::IsNaN($_.PowerCost) -or -not $Variables.CalculatePowerCost) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Powercost * $Variables.Rates.BTC.($Config.FIATcurrency)) } } } @{ Name = "Profit (biased) $($Config.FIATcurrency)/day"; Expression = { If ([Double]::IsNaN($_.PowerCost) -or -not $Variables.CalculatePowerCost) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Profit * $Variables.Rates.BTC.($Config.FIATcurrency)) } } } @@ -161,25 +159,22 @@ Function Update-TabControl { @{ Name = "Hashrate"; Expression = { If ($_.Benchmark) { If ($_.Status -eq "Running") { "Benchmarking..." } Else { "Benchmark pending" } } Else { $_.WorkersRunning.ForEach({ $_.Hashrate | ConvertTo-Hash }) -join " & " } } } @{ Name = "Running time (hhh:mm:ss)"; Expression = { "{0}:{1:mm}:{1:ss}" -f [Math]::floor(([DateTime]::Now.ToUniversalTime() - $_.BeginTime).TotalDays * 24), ([DateTime]::Now.ToUniversalTime() - $_.BeginTime) } } @{ Name = "Total active (hhh:mm:ss)"; Expression = { "{0}:{1:mm}:{1:ss}" -f [Math]::floor($_.TotalMiningDuration.TotalDays * 24), $_.TotalMiningDuration } } - If ($LegacyGUIradioButtonPoolsUnavailable.checked) { @{ Name = "Reason"; Expression = { $_.Reasons -join ", " } } } ) | Sort-Object -Property "Device(s)" | Out-DataTable $LegacyGUIactiveMinersDGV.ClearSelection() If (-not $LegacyGUIactiveMinersDGV.ColumnWidthChanged -and $LegacyGUIactiveMinersDGV.Columns) { $LegacyGUIactiveMinersDGV.Columns[0].Visible = $false - $LegacyGUIactiveMinersDGV.Columns[1].Visible = $false - $LegacyGUIactiveMinersDGV.Columns[2].FillWeight = 30 + ($Variables.MinersBest.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 20 - $LegacyGUIactiveMinersDGV.Columns[3].FillWeight = 160 - $LegacyGUIactiveMinersDGV.Columns[4].FillWeight = 60 - $LegacyGUIactiveMinersDGV.Columns[5].FillWeight = 55; $LegacyGUIactiveMinersDGV.Columns[5].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[5].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIactiveMinersDGV.Columns[1].FillWeight = 20 + ($Variables.MinersBest.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 20 + $LegacyGUIactiveMinersDGV.Columns[2].FillWeight = 190 + $LegacyGUIactiveMinersDGV.Columns[3].FillWeight = 55; $LegacyGUIactiveMinersDGV.Columns[3].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[3].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIactiveMinersDGV.Columns[4].FillWeight = 55; $LegacyGUIactiveMinersDGV.Columns[4].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[4].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[4].Visible = $Variables.CalculatePowerCost + $LegacyGUIactiveMinersDGV.Columns[5].FillWeight = 55; $LegacyGUIactiveMinersDGV.Columns[5].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[5].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[5].Visible = $Variables.CalculatePowerCost $LegacyGUIactiveMinersDGV.Columns[6].FillWeight = 55; $LegacyGUIactiveMinersDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[6].Visible = $Variables.CalculatePowerCost - $LegacyGUIactiveMinersDGV.Columns[7].FillWeight = 55; $LegacyGUIactiveMinersDGV.Columns[7].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[7].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[7].Visible = $Variables.CalculatePowerCost - $LegacyGUIactiveMinersDGV.Columns[8].FillWeight = 55; $LegacyGUIactiveMinersDGV.Columns[8].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[8].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[8].Visible = $Variables.CalculatePowerCost - $LegacyGUIactiveMinersDGV.Columns[9].FillWeight = 70 + ($Variables.MinersBest.({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 35 - $LegacyGUIactiveMinersDGV.Columns[10].FillWeight = 50 + ($Variables.MinersBest.({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 25 - $LegacyGUIactiveMinersDGV.Columns[11].FillWeight = 50 + ($Variables.MinersBest.({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 25; $LegacyGUIactiveMinersDGV.Columns[11].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[11].HeaderCell.Style.Alignment = "MiddleRight" - $LegacyGUIactiveMinersDGV.Columns[12].FillWeight = 65; $LegacyGUIactiveMinersDGV.Columns[12].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[12].HeaderCell.Style.Alignment = "MiddleRight" - $LegacyGUIactiveMinersDGV.Columns[13].FillWeight = 65; $LegacyGUIactiveMinersDGV.Columns[13].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[13].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIactiveMinersDGV.Columns[7].FillWeight = 60 + ($Variables.MinersBest.ForEach({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 30 + $LegacyGUIactiveMinersDGV.Columns[8].FillWeight = 45 + ($Variables.MinersBest.ForEach({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 25 + $LegacyGUIactiveMinersDGV.Columns[9].FillWeight = 45 + ($Variables.MinersBest.ForEach({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 25; $LegacyGUIactiveMinersDGV.Columns[9].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[9].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIactiveMinersDGV.Columns[10].FillWeight = 50; $LegacyGUIactiveMinersDGV.Columns[10].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[10].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIactiveMinersDGV.Columns[11].FillWeight = 50; $LegacyGUIactiveMinersDGV.Columns[11].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[11].HeaderCell.Style.Alignment = "MiddleRight" $LegacyGUIactiveMinersDGV | Add-Member ColumnWidthChanged $true } @@ -354,7 +349,7 @@ Function Update-TabControl { $LegacyGUIcontextMenuStripItem6.Visible = $true If ($LegacyGUIradioButtonMinersOptimal.checked) { $DataSource = $Variables.MinersOptimal } - ElseIf ($LegacyGUIradioButtonMinersUnavailable.checked) { $DataSource = $Variables.Miners.Where({ -not $_.Available }) } + ElseIf ($LegacyGUIradioButtonMinersUnavailable.checked) { $DataSource = $Variables.Miners.Where({ -not $_.Available }) | Sort-Object { [String]$_.DeviceNames }, Info } Else { $DataSource = $Variables.Miners } If ($Variables.MiningStatus -eq "Idle") { $LegacyGUIminersLabel.Text = "No data - mining is stopped" } @@ -364,7 +359,7 @@ Function Update-TabControl { If (-not $LegacyGUIminersDGV.SelectedRows) { $LegacyGUIminersLabel.Text = "Miner data updated $([DateTime]::Now.ToString())" $LegacyGUIminersDGV.BeginInit() - $LegacyGUIminersDGV.ClearSelection() + $LegacyGUIminersDGV.DataSource = $DataSource | Select-Object @( @{ Name = "Info"; Expression = { $_.Info } }, @{ Name = "SubStatus"; Expression = { $_.SubStatus } }, @@ -380,7 +375,7 @@ Function Update-TabControl { @{ Name = "Pool"; Expression = { $_.Workers.Pool.Name -join " & " } }, @{ Name = "Hashrate"; Expression = { If ($_.Benchmark) { If ($_.Status -eq "Running") { "Benchmarking..." } Else { "Benchmark pending" } } Else { $_.Workers.ForEach({ $_.Hashrate | ConvertTo-Hash }) -join " & " } } } If ($LegacyGUIradioButtonMinersUnavailable.checked -or $LegacyGUIradioButtonMiners.checked) { @{ Name = "Reason(s)"; Expression = { $_.Reasons -join ", "} } } - ) | Sort-Object @{ Expression = { $_.Best }; Descending = $true }, "Device(s)", Info | Out-DataTable + ) | Out-DataTable $LegacyGUIminersDGV.ClearSelection() If (-not $LegacyGUIminersDGV.ColumnWidthChanged -and $LegacyGUIminersDGV.Columns) { @@ -388,17 +383,17 @@ Function Update-TabControl { $LegacyGUIminersDGV.Columns[1].Visible = $false $LegacyGUIminersDGV.Columns[2].Visible = $false $LegacyGUIminersDGV.Columns[3].FillWeight = 160 - $LegacyGUIminersDGV.Columns[4].FillWeight = 25 + ($DataSource.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 25 - $LegacyGUIminersDGV.Columns[5].Visible = -not $LegacyGUIradioButtonMinersUnavailable.checked; $LegacyGUIminersDGV.Columns[5].FillWeight = 50 - $LegacyGUIminersDGV.Columns[6].FillWeight = 55; $LegacyGUIminersDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight" - $LegacyGUIminersDGV.Columns[7].FillWeight = 60; $LegacyGUIminersDGV.Columns[7].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[7].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[7].Visible = $Variables.CalculatePowerCost - $LegacyGUIminersDGV.Columns[8].FillWeight = 55; $LegacyGUIminersDGV.Columns[8].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[8].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[8].Visible = $Variables.CalculatePowerCost - $LegacyGUIminersDGV.Columns[9].FillWeight = 55; $LegacyGUIminersDGV.Columns[9].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[9].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[9].Visible = $Variables.CalculatePowerCost - $LegacyGUIminersDGV.Columns[10].FillWeight = 60 + ($DataSource.ForEach({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 30 - $LegacyGUIminersDGV.Columns[11].FillWeight = 60 + ($DataSource.ForEach({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 30 - $LegacyGUIminersDGV.Columns[12].FillWeight = 50 + ($DataSource.ForEach({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 25; $LegacyGUIminersDGV.Columns[12].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[12].HeaderCell.Style.Alignment = "MiddleRight" - - $LegacyGUIminersDGV | Add-Member ColumnWidthChanged $true + $LegacyGUIminersDGV.Columns[4].FillWeight = 20 + ($DataSource.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 15 + $LegacyGUIminersDGV.Columns[5].Visible = -not $LegacyGUIradioButtonMinersUnavailable.checked; $LegacyGUIminersDGV.Columns[5].FillWeight = 30 + $LegacyGUIminersDGV.Columns[6].FillWeight = 40; $LegacyGUIminersDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIminersDGV.Columns[7].FillWeight = 40; $LegacyGUIminersDGV.Columns[7].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[7].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[7].Visible = $Variables.CalculatePowerCost + $LegacyGUIminersDGV.Columns[8].FillWeight = 40; $LegacyGUIminersDGV.Columns[8].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[8].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[8].Visible = $Variables.CalculatePowerCost + $LegacyGUIminersDGV.Columns[9].FillWeight = 40; $LegacyGUIminersDGV.Columns[9].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[9].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[9].Visible = $Variables.CalculatePowerCost + $LegacyGUIminersDGV.Columns[10].FillWeight = If ($LegacyGUIminersDGV.DataSource.Pool -like '* & ') { 90 } Else { 60 } + $LegacyGUIminersDGV.Columns[11].FillWeight = If ($LegacyGUIminersDGV.DataSource.Pool -like '* & ') { 85 } Else { 60 } + $LegacyGUIminersDGV.Columns[12].FillWeight = If ($LegacyGUIminersDGV.DataSource.Pool -like '* & ') { 80 } Else { 50 }; $LegacyGUIminersDGV.Columns[12].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[12].HeaderCell.Style.Alignment = "MiddleRight" + + $LegacyGUIminersDGV | Add-Member ColumnWidthChanged $true -Force } $LegacyGUIminersDGV.EndInit() } @@ -691,9 +686,11 @@ Function Update-GUIstatus { $LegacyGUIminingStatusLabel.ForeColor = [System.Drawing.Color]::Green $LegacyGUIminingStatusLabel.Text = "$($Variables.Branding.ProductLabel) is running" } - $LegacyGUIminingSummaryLabel.Text = "" - (($Variables.Summary -replace "Power cost", "
Power cost" -replace " ", " " -replace " ", " ") -split "
").ForEach({ $LegacyGUIminingSummaryLabel.Text += "`r`n$_" }) - $LegacyGUIminingSummaryLabel.Text += "`r`n " + If (-not $Variables.SuspendCycle) { + $LegacyGUIminingSummaryLabel.Text = "" + (($Variables.Summary -replace "Power cost", "
Power cost" -replace " ", " " -replace " ", " ") -split "
").ForEach({ $LegacyGUIminingSummaryLabel.Text += "`r`n$_" }) + $LegacyGUIminingSummaryLabel.Text += "`r`n " + } $LegacyGUIbuttonPause.Enabled = $true $LegacyGUIbuttonStart.Enabled = $false @@ -777,43 +774,13 @@ $LegacyGUIbuttonPause.Visible = $true $LegacyGUIbuttonPause.Width = 100 $LegacyGUIbuttonPause.Add_Click( { - If ($LegacyGUIbuttonPause.Tag) { - If (-not $Global:CoreRunspace.AsyncObject.IsCompleted -eq $false) { - # Core is complete / gone. Cycle cannot be suspended anymore - $Variables.SuspendCycle = $false - } - Else { - $Variables.SuspendCycle = -not $Variables.SuspendCycle - If ($Variables.SuspendCycle) { - $Message = "'P' pressed. Core cycle is suspended until you press 'P' again." - $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Blue - $LegacyGUIminingSummaryLabel.Text = $Message - Write-Host $Message -ForegroundColor Cyan - } - Else { - $Message = "'P' pressed. Core cycle is running again." - $LegacyGUIminingSummaryLabel.Text = $Message - $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Blue - Write-Host $Message -ForegroundColor Cyan - If ([DateTime]::Now.ToUniversalTime() -gt $Variables.EndCycleTime) { $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime() } - } - Remove-Variable Message - } - } - ElseIf ($Variables.NewMiningStatus -ne "Paused") { + If ($Variables.NewMiningStatus -ne "Paused" -and -not $Variables.SuspendCycle) { $Variables.NewMiningStatus = "Paused" $Variables.SuspendCycle = $false $Variables.RestartCycle = $true } } ) -$LegacyGUIbuttonPause.Add_KeyDown( - { - If ([System.Windows.Forms.UserControl]::MouseButtons -eq "Left") { - $LegacyGUIbuttonPause.Tag = $_.Control -and $_.Alt - } - } -) $LegacyGUIControls += $LegacyGUIbuttonPause $LegacyGUItooltip.SetToolTip($LegacyGUIbuttonPause, "Pause mining processes.`rBackground processes remain running.") @@ -1287,6 +1254,8 @@ $LegacyGUIradioButtonMinersOptimal.Width = 150 $LegacyGUIradioButtonMinersOptimal.Add_Click( { $LegacyGUIform.Cursor = [System.Windows.Forms.Cursors]::WaitCursor + $LegacyGUIminersDGV | Add-Member ColumnWidthChanged $false -Force + $LegacyGUIminersDGV.ClearSelection() Update-TabControl $LegacyGUIform.Cursor = [System.Windows.Forms.Cursors]::Normal } @@ -1303,6 +1272,8 @@ $LegacyGUIradioButtonMinersUnavailable.Width = 170 $LegacyGUIradioButtonMinersUnavailable.Add_Click( { $LegacyGUIform.Cursor = [System.Windows.Forms.Cursors]::WaitCursor + $LegacyGUIminersDGV | Add-Member ColumnWidthChanged $false -Force + $LegacyGUIminersDGV.ClearSelection() Update-TabControl $LegacyGUIform.Cursor = [System.Windows.Forms.Cursors]::Normal } @@ -1319,6 +1290,8 @@ $LegacyGUIradioButtonMiners.Width = 100 $LegacyGUIradioButtonMiners.Add_Click( { $LegacyGUIform.Cursor = [System.Windows.Forms.Cursors]::WaitCursor + $LegacyGUIminersDGV | Add-Member ColumnWidthChanged $false -Force + $LegacyGUIminersDGV.ClearSelection() Update-TabControl $LegacyGUIform.Cursor = [System.Windows.Forms.Cursors]::Normal } @@ -1361,11 +1334,6 @@ $LegacyGUIminersDGV.Name = "MinersDGV" $LegacyGUIminersDGV.ReadOnly = $true $LegacyGUIminersDGV.RowHeadersVisible = $false $LegacyGUIminersDGV.SelectionMode = "FullRowSelect" -$LegacyGUIminersDGV.Add_ColumnWidthChanged( - { - $LegacyGUIminersDGV.ColumnWidthChanged = $true - } -) $LegacyGUIminersDGV.Add_MouseUP( { If ($_.Button -eq [System.Windows.Forms.MouseButtons]::Right) { @@ -1864,6 +1832,35 @@ $LegacyGUIform.Add_FormClosing( $LegacyGUIform.Add_KeyDown( { If ($PSItem.KeyCode -eq "F5") { Update-TabControl } + If ($Variables.NewMiningStatus -eq "Running" -and $_.KeyCode -eq "P" -and $_.Control -and $_.Alt) { + If (-not $Global:CoreRunspace.AsyncObject.IsCompleted -eq $false) { + # Core is complete / gone. Cycle cannot be suspended anymore + $Variables.SuspendCycle = $false + } + Else { + $Variables.SuspendCycle = -not $Variables.SuspendCycle + If ($Variables.SuspendCycle) { + $Message = "'P' pressed. Core cycle is suspended until you press 'P' again." + If ($LegacyGUIform) { + $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Blue + $LegacyGUIminingSummaryLabel.Text = $Message + $LegacyGUIbuttonPause.Enabled = $false + } + Write-Host $Message -ForegroundColor Cyan + } + Else { + $Message = "'P' pressed. Core cycle is running again." + If ($LegacyGUIform) { + $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Blue + $LegacyGUIminingSummaryLabel.Text = $Message + $LegacyGUIbuttonPause.Enabled = $true + } + Write-Host $Message -ForegroundColor Cyan + If ([DateTime]::Now.ToUniversalTime() -gt $Variables.EndCycleTime) { $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime() } + } + Remove-Variable Message + } + } } ) diff --git a/Includes/MinerAPIs/BzMiner.ps1 b/Includes/MinerAPIs/BzMiner.ps1 index 1995bdab..00e49930 100644 --- a/Includes/MinerAPIs/BzMiner.ps1 +++ b/Includes/MinerAPIs/BzMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\BzMiner.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Class BzMiner : Miner { diff --git a/Includes/MinerAPIs/Ccminer.ps1 b/Includes/MinerAPIs/Ccminer.ps1 index d7294a2a..dcfb87a2 100644 --- a/Includes/MinerAPIs/Ccminer.ps1 +++ b/Includes/MinerAPIs/Ccminer.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\CCminer.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Class CcMiner : Miner { diff --git a/Includes/MinerAPIs/EthMiner.ps1 b/Includes/MinerAPIs/EthMiner.ps1 index 4d6a3262..94f006bc 100644 --- a/Includes/MinerAPIs/EthMiner.ps1 +++ b/Includes/MinerAPIs/EthMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\EthMiner.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Class EthMiner : Miner { diff --git a/Includes/MinerAPIs/FireIce.ps1 b/Includes/MinerAPIs/FireIce.ps1 index 2da2e03a..4a266f66 100644 --- a/Includes/MinerAPIs/FireIce.ps1 +++ b/Includes/MinerAPIs/FireIce.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\FireIce.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Class Fireice : Miner { diff --git a/Includes/MinerAPIs/Gminer.ps1 b/Includes/MinerAPIs/Gminer.ps1 index c12933d8..96c0de2d 100644 --- a/Includes/MinerAPIs/Gminer.ps1 +++ b/Includes/MinerAPIs/Gminer.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\GMiner.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Class GMiner : Miner { diff --git a/Includes/MinerAPIs/HellMiner.ps1 b/Includes/MinerAPIs/HellMiner.ps1 index 12bda4d9..fbc5967c 100644 --- a/Includes/MinerAPIs/HellMiner.ps1 +++ b/Includes/MinerAPIs/HellMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\lolMiner.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Class HellMiner : Miner { diff --git a/Includes/MinerAPIs/MiniZ.ps1 b/Includes/MinerAPIs/MiniZ.ps1 index 9819e9ca..1ab1779f 100644 --- a/Includes/MinerAPIs/MiniZ.ps1 +++ b/Includes/MinerAPIs/MiniZ.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\MiniZ.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Class MiniZ : Miner { diff --git a/Includes/MinerAPIs/NBMiner.ps1 b/Includes/MinerAPIs/NBMiner.ps1 index 9a90a217..a1df7515 100644 --- a/Includes/MinerAPIs/NBMiner.ps1 +++ b/Includes/MinerAPIs/NBMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\NBMiner.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Class NBMiner : Miner { diff --git a/Includes/MinerAPIs/NanoMiner.ps1 b/Includes/MinerAPIs/NanoMiner.ps1 index 6a5c482a..fbfa1058 100644 --- a/Includes/MinerAPIs/NanoMiner.ps1 +++ b/Includes/MinerAPIs/NanoMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\NanoMiner.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Class NanoMiner : Miner { diff --git a/Includes/MinerAPIs/OneZero.ps1 b/Includes/MinerAPIs/OneZero.ps1 index 1f95656c..3e2312ac 100644 --- a/Includes/MinerAPIs/OneZero.ps1 +++ b/Includes/MinerAPIs/OneZero.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\Trex.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Class OneZero : Miner { diff --git a/Includes/MinerAPIs/Rigel.ps1 b/Includes/MinerAPIs/Rigel.ps1 index 3940ad28..f9d37498 100644 --- a/Includes/MinerAPIs/Rigel.ps1 +++ b/Includes/MinerAPIs/Rigel.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\Rigel.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Class Rigel : Miner { diff --git a/Includes/MinerAPIs/SRBMiner.ps1 b/Includes/MinerAPIs/SRBMiner.ps1 index 82128723..3f511c4e 100644 --- a/Includes/MinerAPIs/SRBMiner.ps1 +++ b/Includes/MinerAPIs/SRBMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\SRBminer.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Class SRBMiner : Miner { diff --git a/Includes/MinerAPIs/TeamBlackMiner.ps1 b/Includes/MinerAPIs/TeamBlackMiner.ps1 index 687dd99d..e5984c6d 100644 --- a/Includes/MinerAPIs/TeamBlackMiner.ps1 +++ b/Includes/MinerAPIs/TeamBlackMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\lolMiner.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Class TeamBlackMiner : Miner { diff --git a/Includes/MinerAPIs/Trex.ps1 b/Includes/MinerAPIs/Trex.ps1 index 64f085bf..9c562012 100644 --- a/Includes/MinerAPIs/Trex.ps1 +++ b/Includes/MinerAPIs/Trex.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\Trex.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Class Trex : Miner { diff --git a/Includes/MinerAPIs/Xgminer.ps1 b/Includes/MinerAPIs/Xgminer.ps1 index 1ef9b962..3eac7c92 100644 --- a/Includes/MinerAPIs/Xgminer.ps1 +++ b/Includes/MinerAPIs/Xgminer.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\Xgminer.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Class XgMiner : Miner { diff --git a/Includes/MinerAPIs/XmRig.ps1 b/Includes/MinerAPIs/XmRig.ps1 index c1e8c8d5..e4b47ebc 100644 --- a/Includes/MinerAPIs/XmRig.ps1 +++ b/Includes/MinerAPIs/XmRig.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\XmRig.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Class XmRig : Miner { diff --git a/Includes/MinerAPIs/lolMiner.ps1 b/Includes/MinerAPIs/lolMiner.ps1 index da40a097..d1b203c4 100644 --- a/Includes/MinerAPIs/lolMiner.ps1 +++ b/Includes/MinerAPIs/lolMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\lolMiner.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Class lolMiner : Miner { diff --git a/Miners/BzMiner-v21.4.0.ps1 b/Miners/BzMiner-v21.4.0.ps1 index 46d32bef..b95466d8 100644 --- a/Miners/BzMiner-v21.4.0.ps1 +++ b/Miners/BzMiner-v21.4.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ "AMD", "INTEL" -contains $_.Type -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge [Version]"460.27.03") }))) { Return } diff --git a/Miners/CcminerAlexis78-v1.5.2.ps1 b/Miners/CcminerAlexis78-v1.5.2.ps1 index d3e82b37..9b09a7fd 100644 --- a/Miners/CcminerAlexis78-v1.5.2.ps1 +++ b/Miners/CcminerAlexis78-v1.5.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.1" }))) { Return } diff --git a/Miners/CcminerDyn-v1.0.2.ps1 b/Miners/CcminerDyn-v1.0.2.ps1 index 3eab1c58..4d9a155f 100644 --- a/Miners/CcminerDyn-v1.0.2.ps1 +++ b/Miners/CcminerDyn-v1.0.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } # Cuda error in func 'argon2d_hash_cuda' at line 89 : an illegal instruction was encountered on GTX 750 diff --git a/Miners/CcminerKlausT-v8.25.ps1 b/Miners/CcminerKlausT-v8.25.ps1 index ba9e8a33..586c3c94 100644 --- a/Miners/CcminerKlausT-v8.25.ps1 +++ b/Miners/CcminerKlausT-v8.25.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -and $_.OpenCL.ComputeCapability -lt "6.0" -and $_.Architecture -ne "Other" }))) { Return } diff --git a/Miners/CcminerKlausT-v8.26x2.ps1 b/Miners/CcminerKlausT-v8.26x2.ps1 index 413f2f15..2ab717a7 100644 --- a/Miners/CcminerKlausT-v8.26x2.ps1 +++ b/Miners/CcminerKlausT-v8.26x2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge [Version]"6.0" }))) { Return } diff --git a/Miners/CcminerLyra2z330-v8.21r9.ps1 b/Miners/CcminerLyra2z330-v8.21r9.ps1 index d6005ede..20236e06 100644 --- a/Miners/CcminerLyra2z330-v8.21r9.ps1 +++ b/Miners/CcminerLyra2z330-v8.21r9.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.1" }))) { Return } diff --git a/Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1 b/Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1 index d2708580..bd5eac5e 100644 --- a/Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1 +++ b/Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.1" }))) { Return } diff --git a/Miners/CcminerMemeHash-v2.5.5.9.ps1 b/Miners/CcminerMemeHash-v2.5.5.9.ps1 index 0b037fb5..ca11c971 100644 --- a/Miners/CcminerMemeHash-v2.5.5.9.ps1 +++ b/Miners/CcminerMemeHash-v2.5.5.9.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/CcminerNeoscryptXaya-v0.2.ps1 b/Miners/CcminerNeoscryptXaya-v0.2.ps1 index 7a78f7d5..a587c40b 100644 --- a/Miners/CcminerNeoscryptXaya-v0.2.ps1 +++ b/Miners/CcminerNeoscryptXaya-v0.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" -and $_.Architecture -ne "Other" }))) { Return } # Cuda error in func 'neoscrypt_hash_k4' at line 1518 : an illegal instruction was encountered on GTX 750 diff --git a/Miners/CcminerVerusCpu-v3.8.3.ps1 b/Miners/CcminerVerusCpu-v3.8.3.ps1 index 525459d7..812cb944 100644 --- a/Miners/CcminerVerusCpu-v3.8.3.ps1 +++ b/Miners/CcminerVerusCpu-v3.8.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } diff --git a/Miners/CcminerVerusGpu-v3.8.3.ps1 b/Miners/CcminerVerusGpu-v3.8.3.ps1 index c9eb179f..2035e94f 100644 --- a/Miners/CcminerVerusGpu-v3.8.3.ps1 +++ b/Miners/CcminerVerusGpu-v3.8.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "7.5" }))) { Return } diff --git a/Miners/ClaymoreNeoscrypt-v1.2.ps1 b/Miners/ClaymoreNeoscrypt-v1.2.ps1 index 603bae07..c6008473 100644 --- a/Miners/ClaymoreNeoscrypt-v1.2.ps1 +++ b/Miners/ClaymoreNeoscrypt-v1.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -and $Variables.DriverVersion.CIM.AMD -lt [Version]"26.20.15011.10003" }))) { Return } diff --git a/Miners/CpuMiner-v1.4.ps1 b/Miners/CpuMiner-v1.4.ps1 index d2708b34..20fe006f 100644 --- a/Miners/CpuMiner-v1.4.ps1 +++ b/Miners/CpuMiner-v1.4.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } diff --git a/Miners/CpuMinerAurum-v3.23.1.ps1 b/Miners/CpuMinerAurum-v3.23.1.ps1 index 4f624ed4..ecc9c2ed 100644 --- a/Miners/CpuMinerAurum-v3.23.1.ps1 +++ b/Miners/CpuMinerAurum-v3.23.1.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } diff --git a/Miners/CryptoDredge-v0.16.0.ps1 b/Miners/CryptoDredge-v0.16.0.ps1 index d8ebbd36..4d9f7d40 100644 --- a/Miners/CryptoDredge-v0.16.0.ps1 +++ b/Miners/CryptoDredge-v0.16.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/CryptoDredge-v0.27.0.ps1 b/Miners/CryptoDredge-v0.27.0.ps1 index f7823fe2..94f727a3 100644 --- a/Miners/CryptoDredge-v0.27.0.ps1 +++ b/Miners/CryptoDredge-v0.27.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" -and $_.Architecture -ne "Other" }))) { Return } diff --git a/Miners/EthMiner-v0.19.0.18.ps1 b/Miners/EthMiner-v0.19.0.18.ps1 index a5d63ed9..ff5d3816 100644 --- a/Miners/EthMiner-v0.19.0.18.ps1 +++ b/Miners/EthMiner-v0.19.0.18.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.CUDAVersion -ge [Version]"9.1") }))) { Return } diff --git a/Miners/EvrProgPow-v1p3p0.ps1 b/Miners/EvrProgPow-v1p3p0.ps1 index d33865d4..93022f5e 100644 --- a/Miners/EvrProgPow-v1p3p0.ps1 +++ b/Miners/EvrProgPow-v1p3p0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/FrkHashMiner-v1.3.14.ps1 b/Miners/FrkHashMiner-v1.3.14.ps1 index fa76de1f..0c488381 100644 --- a/Miners/FrkHashMiner-v1.3.14.ps1 +++ b/Miners/FrkHashMiner-v1.3.14.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" -and $_.CUDAVersion -ge [Version]"9.1" }))) { Return } diff --git a/Miners/GMiner-v2.75.ps1 b/Miners/GMiner-v2.75.ps1 index 41358e2a..1cc9cc9b 100644 --- a/Miners/GMiner-v2.75.ps1 +++ b/Miners/GMiner-v2.75.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 1.2") -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/GMiner-v3.44.ps1 b/Miners/GMiner-v3.44.ps1 index 8b32ba81..5ac8201a 100644 --- a/Miners/GMiner-v3.44.ps1 +++ b/Miners/GMiner-v3.44.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 1.2") -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } @@ -110,7 +110,7 @@ If ($Algorithms) { $Arguments += " --user $($Pool0.User)" $Arguments += " --pass $($Pool0.Pass)" If ($Pool0.WorkerName -and $Pool0.User -notmatch "\.$($Pool0.WorkerName)$") { $Arguments += " --worker $($Pool0.WorkerName)" } - If ($_.AutoCoinPers) { $Arguments += $(Get-EquihashCoinPers -Command " --pers " -Currency $Pool.Currency -DefaultCommand $_.AutoCoinPers) } + If ($_.AutoCoinPers) { $Arguments += $(Get-EquihashCoinPers -Command " --pers " -Currency $Pool0.Currency -DefaultCommand $_.AutoCoinPers) } If (($_.Algorithms[1])) { $Arguments += " --dserver $($Pool1.Host):$($Pool1.PoolPorts | Select-Object -Last 1)" diff --git a/Miners/HellMiner-v0.59.1.ps1 b/Miners/HellMiner-v0.59.1.ps1 index 57ba9cda..53eb1344 100644 --- a/Miners/HellMiner-v0.59.1.ps1 +++ b/Miners/HellMiner-v0.59.1.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } diff --git a/Miners/JayddeeCpu-v24.4.ps1 b/Miners/JayddeeCpu-v24.4.ps1 index 17567b98..2dcdac09 100644 --- a/Miners/JayddeeCpu-v24.4.ps1 +++ b/Miners/JayddeeCpu-v24.4.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } diff --git a/Miners/KawpowMiner-v1.2.4cl.ps1 b/Miners/KawpowMiner-v1.2.4cl.ps1 index a17c2856..b3db4db0 100644 --- a/Miners/KawpowMiner-v1.2.4cl.ps1 +++ b/Miners/KawpowMiner-v1.2.4cl.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" }))) { Return } diff --git a/Miners/KawpowMiner-v1.2.4cuda.ps1 b/Miners/KawpowMiner-v1.2.4cuda.ps1 index e7d25cad..f54489ee 100644 --- a/Miners/KawpowMiner-v1.2.4cuda.ps1 +++ b/Miners/KawpowMiner-v1.2.4cuda.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/Kudaraidee-v1.2.0a.ps1 b/Miners/Kudaraidee-v1.2.0a.ps1 index 8960092f..d428634d 100644 --- a/Miners/Kudaraidee-v1.2.0a.ps1 +++ b/Miners/Kudaraidee-v1.2.0a.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.Type -eq "NVIDIA" -and $_.CUDAVersion -ge [Version]"10.2") }))) { Return } diff --git a/Miners/MeowPowMiner-v2.0.0cl.ps1 b/Miners/MeowPowMiner-v2.0.0cl.ps1 index 02c6956d..9d24f232 100644 --- a/Miners/MeowPowMiner-v2.0.0cl.ps1 +++ b/Miners/MeowPowMiner-v2.0.0cl.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" }))) { Return } diff --git a/Miners/MeowPowMiner-v2.0.0cuda.ps1 b/Miners/MeowPowMiner-v2.0.0cuda.ps1 index 3e4fcd80..2ae5f8a7 100644 --- a/Miners/MeowPowMiner-v2.0.0cuda.ps1 +++ b/Miners/MeowPowMiner-v2.0.0cuda.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/MiniZ-v2.4d.ps1 b/Miners/MiniZ-v2.4d.ps1 index 535fa65c..27eb249f 100644 --- a/Miners/MiniZ-v2.4d.ps1 +++ b/Miners/MiniZ-v2.4d.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } @@ -30,7 +30,7 @@ $DeviceEnumerator = "Type_Vendor_Slot" $Algorithms = @( @{ Algorithm = "Equihash1254"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=125,4 --smart-pers" } - @{ Algorithm = "Equihash1445"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = @("GCN1"); ExcludePools = @(); AutoCoinPers = " --par=144,5"; Arguments = " --amd" } # FPGA + @{ Algorithm = "Equihash1445"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = @("GCN1", "RDNA2"); ExcludePools = @(); AutoCoinPers = " --par=144,5"; Arguments = " --amd" } # FPGA @{ Algorithm = "Equihash1505"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = @("RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=150,5 --smart-pers" } @{ Algorithm = "Equihash1927"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 2.3; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(); AutoCoinPers = " --par=192,7"; Arguments = " --amd" } #FPGA @{ Algorithm = "Equihash2109"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = @("RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=210,9 --smart-pers" } diff --git a/Miners/NBMiner-v42.3.ps1 b/Miners/NBMiner-v42.3.ps1 index dd66ea76..60c62815 100644 --- a/Miners/NBMiner-v42.3.ps1 +++ b/Miners/NBMiner-v42.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "6.0" -and $_.CUDAVersion -ge [Version]"10.0") }))) { Return } diff --git a/Miners/NSFMiner-v1.3.14.ps1 b/Miners/NSFMiner-v1.3.14.ps1 index 7e2d1014..bb4514fd 100644 --- a/Miners/NSFMiner-v1.3.14.ps1 +++ b/Miners/NSFMiner-v1.3.14.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.CUDAVersion -ge [Version]"9.1") }))) { Return } diff --git a/Miners/NanoMiner-v3.9.2.ps1 b/Miners/NanoMiner-v3.9.2.ps1 index 96829718..b22f3cab 100644 --- a/Miners/NanoMiner-v3.9.2.ps1 +++ b/Miners/NanoMiner-v3.9.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" -or $_.Type -ne "NVIDIA" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge [Version]"455.23") }))) { Return } diff --git a/Miners/Ninjarig-1.0.3.ps1 b/Miners/Ninjarig-1.0.3.ps1 index b04d49e1..a0c42bef 100644 --- a/Miners/Ninjarig-1.0.3.ps1 +++ b/Miners/Ninjarig-1.0.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/NosuchCpu-v3.8.8.1.ps1 b/Miners/NosuchCpu-v3.8.8.1.ps1 index cf7b0509..117b4857 100644 --- a/Miners/NosuchCpu-v3.8.8.1.ps1 +++ b/Miners/NosuchCpu-v3.8.8.1.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } diff --git a/Miners/OneZeroMiner-v1.3.7.ps1 b/Miners/OneZeroMiner-v1.3.7.ps1 index e04c8fd5..2260f617 100644 --- a/Miners/OneZeroMiner-v1.3.7.ps1 +++ b/Miners/OneZeroMiner-v1.3.7.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "NVIDIA" -and $_.OpenCL.DriverVersion -ge [Version]"450.80.02" }))) { Return } diff --git a/Miners/PhoenixMiner-v6.2c.ps1 b/Miners/PhoenixMiner-v6.2c.ps1 index 1d37dd7d..5a52cf2f 100644 --- a/Miners/PhoenixMiner-v6.2c.ps1 +++ b/Miners/PhoenixMiner-v6.2c.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } @@ -55,23 +55,25 @@ If ($Algorithms) { "Blake2s" = @(10, 20, 30, 40) } - # Build command sets for intensities - $Algorithms = $Algorithms.ForEach( - { - $_.PsObject.Copy() - If ($_.Algorithms[1]) { - $Intensity = $_.Intensity - $WarmupTimes = $_.WarmupTimes.PsObject.Copy() - If ($_.Type -eq "NVIDIA" -and $Intensity) { $Intensity *= 5 } # Nvidia allows much higher intensity - ForEach ($Intensity in $IntensityValues.($_.Algorithms[1]) | Select-Object) { - $_ | Add-Member Intensity $Intensity -Force - # Allow extra time for auto tuning - $_.WarmupTimes[1] = $WarmupTimes[1] + 45 - $_.PsObject.Copy() + If (-not $Config.DryRun) { + # Build command sets for intensities + $Algorithms = $Algorithms.ForEach( + { + $_.PsObject.Copy() + If ($_.Algorithms[1]) { + $Intensity = $_.Intensity + $WarmupTimes = $_.WarmupTimes.PsObject.Copy() + If ($_.Type -eq "NVIDIA" -and $Intensity) { $Intensity *= 5 } # Nvidia allows much higher intensity + ForEach ($Intensity in $IntensityValues.($_.Algorithms[1]) | Select-Object) { + $_ | Add-Member Intensity $Intensity -Force + # Allow extra time for auto tuning + $_.WarmupTimes[1] = $WarmupTimes[1] + 45 + $_.PsObject.Copy() + } } } - } - ) + ) + } ($Devices | Select-Object Type, Model -Unique).ForEach( { diff --git a/Miners/Radiator-v1.0.0.ps1 b/Miners/Radiator-v1.0.0.ps1 index 4e4dbaa6..562a0056 100644 --- a/Miners/Radiator-v1.0.0.ps1 +++ b/Miners/Radiator-v1.0.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/Raptor3umCpu-v2.0.ps1 b/Miners/Raptor3umCpu-v2.0.ps1 index 9b87d746..7d8d92be 100644 --- a/Miners/Raptor3umCpu-v2.0.ps1 +++ b/Miners/Raptor3umCpu-v2.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } diff --git a/Miners/Rigel-v1.19.0.ps1 b/Miners/Rigel-v1.19.0.ps1 index 336a2717..cbd1ad4d 100644 --- a/Miners/Rigel-v1.19.0.ps1 +++ b/Miners/Rigel-v1.19.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> # Return diff --git a/Miners/RplantCpu-v5.0.41.ps1 b/Miners/RplantCpu-v5.0.41.ps1 index 0c87e32e..ede70aec 100644 --- a/Miners/RplantCpu-v5.0.41.ps1 +++ b/Miners/RplantCpu-v5.0.41.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } diff --git a/Miners/RrkzCpu-v4.2.ps1 b/Miners/RrkzCpu-v4.2.ps1 index c97a493b..587a6bab 100644 --- a/Miners/RrkzCpu-v4.2.ps1 +++ b/Miners/RrkzCpu-v4.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } diff --git a/Miners/SCCminer-v1.1.0.ps1 b/Miners/SCCminer-v1.1.0.ps1 index b660c218..65dfaffd 100644 --- a/Miners/SCCminer-v1.1.0.ps1 +++ b/Miners/SCCminer-v1.1.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Return # Bad shares diff --git a/Miners/SRBMinerMulti-v0.9.4.ps1 b/Miners/SRBMinerMulti-v0.9.4.ps1 index b04722bf..a847e77c 100644 --- a/Miners/SRBMinerMulti-v0.9.4.ps1 +++ b/Miners/SRBMinerMulti-v0.9.4.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> # Support for Pitcairn, Tahiti, Hawaii, Fiji and Tonga was removed in later versions diff --git a/Miners/SRBMinerMulti-v2.6.4.ps1 b/Miners/SRBMinerMulti-v2.6.4.ps1 index e71964c6..2b371ad8 100644 --- a/Miners/SRBMinerMulti-v2.6.4.ps1 +++ b/Miners/SRBMinerMulti-v2.6.4.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" -or $_.Type -eq "INTEL" -or ($_.Type -eq "AMD" -and $_.Model -notmatch "^GCN[1-3]" -and $_.OpenCL.ClVersion -ge "OpenCL C 2.0") -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge "510.00") }))) { Return } @@ -32,86 +32,86 @@ $DeviceEnumerator = "Type_Vendor_Slot" # Algorithm parameter values are case sensitive! $Algorithms = @( - @{ Algorithms = @("0x10"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm 0x10") } - @{ Algorithms = @("Argon2d16000"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2d_16000") } - @{ Algorithms = @("Argon2d500"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2d_dynamic") } - @{ Algorithms = @("Argon2Chukwa"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2id_chukwa") } - @{ Algorithms = @("Argon2Chukwa2"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2id_chukwa2") } - @{ Algorithms = @("Aurum"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm aurum") } - @{ Algorithms = @("Autolykos2"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2") } - @{ Algorithms = @("Autolykos2", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm blake3_alephium") } - @{ Algorithms = @("Autolykos2", "Decred"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm blake3_decred") } - @{ Algorithms = @("Autolykos2", "HeavyHash"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm heavyhash") } - @{ Algorithms = @("Autolykos2", "HeavyHashKarlsenV2"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm karlsenhashv2") } - @{ Algorithms = @("Autolykos2", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm pyrinhash") } - @{ Algorithms = @("Autolykos2", "HeavyHashPyrinV2"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm pyrinhashv2") } - @{ Algorithms = @("Autolykos2", "SHA256dt"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm sha256dt") } - @{ Algorithms = @("Autolykos2", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm sha512_256d_radiant") } - @{ Algorithms = @("Blake3"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm blake3_alephium") } - @{ Algorithms = @("CryptonightGpu"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_gpu") } - @{ Algorithms = @("CryptonightHeavyXhv"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_xhv") } - @{ Algorithms = @("CryptonightTurtle"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_turtle") } # TeamRedMiner-v0.10.21 is fastest - @{ Algorithms = @("CryptonightUpx"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_upx") } - @{ Algorithms = @("CurveHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm curvehash") } - @{ Algorithms = @("Decred"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm blake3d_decred") } - @{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash") } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool - @{ Algorithms = @("EtcHash", "Blake3"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm blake3_alephium") } - @{ Algorithms = @("EtcHash", "Decred"); Type = "AMD"; Fee = @(0.0065, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm blake3_decred") } - @{ Algorithms = @("EtcHash", "HeavyHash"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm heavyhash") } - @{ Algorithms = @("EtcHash", "SHA256dt"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm sha256dt") } - @{ Algorithms = @("EtcHash", "SHA512256d"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm sha512_256d_radiant") } - @{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash") } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool - @{ Algorithms = @("Ethash", "Blake3"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm blake3_alephium") } - @{ Algorithms = @("Ethash", "Decred"); Type = "AMD"; Fee = @(0.0065, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm blake3_decred") } - @{ Algorithms = @("Ethash", "Heavyhash"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm heavyhash") } - @{ Algorithms = @("Ethash", "SHA256dt"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm sha256dt") } - @{ Algorithms = @("Ethash", "SHA512256d"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm sha512_256d_radiant") } - @{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3") } - @{ Algorithms = @("EthashB3", "Blake3"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm blake3_alephium") } - @{ Algorithms = @("EthashB3", "Decred"); Type = "AMD"; Fee = @(0.0085, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm blake3_decred") } - @{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm karlsenhash") } - @{ Algorithms = @("EthashB3", "HeavyHashKarlsenV2"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm karlsenhashv2") } - @{ Algorithms = @("EthashB3", "SHA256dt"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 40); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm sha256dt") } - @{ Algorithms = @("EthashB3", "SHA512256d"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm sha512_256d_radiant") } - @{ Algorithms = @("EvrProgPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm evrprogpow") } - @{ Algorithms = @("FiroPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm firopow") } - @{ Algorithms = @("FishHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash") } - @{ Algorithms = @("FishHash", "Blake3"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm blake3_alephium") } - @{ Algorithms = @("FishHash", "Decred"); Type = "AMD"; Fee = @(0.0085, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm blake3_decred") } - @{ Algorithms = @("FishHash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm karlsenhash") } - @{ Algorithms = @("FishHash", "HeavyHashKarlsenV2"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm karlsenhashv2") } - @{ Algorithms = @("FishHash", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm pyrinhash") } - @{ Algorithms = @("FishHash", "HeavyHashPyrinV2"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm pyrinhashv2") } - @{ Algorithms = @("FishHash", "SHA512256d"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm sha512_256d_radiant") } - @{ Algorithms = @("HeavyHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm heavyhash") } # FPGA - @{ Algorithms = @("HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm karlsenhash") } - @{ Algorithms = @("HeavyHashKarlsenV2"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm karlsenhashv2") } - @{ Algorithms = @("HeavyHashKarlsenV2", "HeavyHashPyrinV2"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm karlsenhashv2", " --algorithm pyrinhashv2") } - @{ Algorithms = @("HeavyHashPyrin"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm pyrinhash") } - @{ Algorithms = @("HeavyHashPyrinV2"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm pyrinhashv2") } - @{ Algorithms = @("KawPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@("ProHashing"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm kawpow") } - @{ Algorithms = @("Lyra2v2Webchain"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm lyra2v2_webchain") } - @{ Algorithms = @("MemeHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm memehash") } - @{ Algorithms = @("MeowPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm meowpow") } - @{ Algorithms = @("ProgPowEpic"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_epic") } - @{ Algorithms = @("ProgPowSero"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_sero") } - @{ Algorithms = @("ProgPowTelestai"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_telestai") } - @{ Algorithms = @("ProgPowVeil"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_veil") } - @{ Algorithms = @("ProgPowVeriblock"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_veriblock") } - @{ Algorithms = @("ProgPowZ"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_zano") } - @{ Algorithms = @("Pufferfish2BMB"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 8; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm pufferfish2bmb") } - @{ Algorithms = @("SCCpow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm firopow") } - @{ Algorithms = @("SHA256dt"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm sha256dt") } - @{ Algorithms = @("SHA3d"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm sha3d") } # FPGA - @{ Algorithms = @("SHA512256d"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm sha512_256d_radiant") } - @{ Algorithms = @("UbqHash"); Type = "AMD"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ubqhash") } - @{ Algorithms = @("VerusHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm verushash") } - @{ Algorithms = @("VertHash"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = "^Other$"; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm verthash --verthash-dat-path ..\.$($Variables.VerthashDatPath)") } - @{ Algorithms = @("XelisHash"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(0, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm xelishash") } - @{ Algorithms = @("Yescrypt"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@("MiningDutch"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescrypt") } - @{ Algorithms = @("YescryptR8"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr8") } - @{ Algorithms = @("YescryptR16"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr16") } - @{ Algorithms = @("YescryptR32"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr32") } + @{ Algorithms = @("0x10"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm 0x10") } + @{ Algorithms = @("Argon2d16000"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2d_16000") } + @{ Algorithms = @("Argon2d500"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2d_dynamic") } + @{ Algorithms = @("Argon2Chukwa"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2id_chukwa") } + @{ Algorithms = @("Argon2Chukwa2"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2id_chukwa2") } + @{ Algorithms = @("Aurum"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm aurum") } + @{ Algorithms = @("Autolykos2"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2") } + @{ Algorithms = @("Autolykos2", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm blake3_alephium") } + @{ Algorithms = @("Autolykos2", "Decred"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm blake3_decred") } + @{ Algorithms = @("Autolykos2", "HeavyHash"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm heavyhash") } + @{ Algorithms = @("Autolykos2", "HeavyHashKarlsenV2"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d*$"; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm karlsenhashv2") } + @{ Algorithms = @("Autolykos2", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d*$"; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm pyrinhash") } + @{ Algorithms = @("Autolykos2", "HeavyHashPyrinV2"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d*$"; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm pyrinhashv2") } + @{ Algorithms = @("Autolykos2", "SHA256dt"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm sha256dt") } + @{ Algorithms = @("Autolykos2", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm sha512_256d_radiant") } + @{ Algorithms = @("Blake3"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm blake3_alephium") } + @{ Algorithms = @("CryptonightGpu"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_gpu") } + @{ Algorithms = @("CryptonightHeavyXhv"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_xhv") } + @{ Algorithms = @("CryptonightTurtle"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_turtle") } # TeamRedMiner-v0.10.21 is fastest + @{ Algorithms = @("CryptonightUpx"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_upx") } + @{ Algorithms = @("CurveHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm curvehash") } + @{ Algorithms = @("Decred"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm blake3d_decred") } + @{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash") } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool + @{ Algorithms = @("EtcHash", "Blake3"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm blake3_alephium") } + @{ Algorithms = @("EtcHash", "Decred"); Type = "AMD"; Fee = @(0.0065, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm blake3_decred") } + @{ Algorithms = @("EtcHash", "HeavyHash"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm heavyhash") } + @{ Algorithms = @("EtcHash", "SHA256dt"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm sha256dt") } + @{ Algorithms = @("EtcHash", "SHA512256d"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm sha512_256d_radiant") } + @{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash") } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool + @{ Algorithms = @("Ethash", "Blake3"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm blake3_alephium") } + @{ Algorithms = @("Ethash", "Decred"); Type = "AMD"; Fee = @(0.0065, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm blake3_decred") } + @{ Algorithms = @("Ethash", "Heavyhash"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm heavyhash") } + @{ Algorithms = @("Ethash", "SHA256dt"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm sha256dt") } + @{ Algorithms = @("Ethash", "SHA512256d"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm sha512_256d_radiant") } + @{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3") } + @{ Algorithms = @("EthashB3", "Blake3"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm blake3_alephium") } + @{ Algorithms = @("EthashB3", "Decred"); Type = "AMD"; Fee = @(0.0085, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm blake3_decred") } + @{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm karlsenhash") } + @{ Algorithms = @("EthashB3", "HeavyHashKarlsenV2"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm karlsenhashv2") } + @{ Algorithms = @("EthashB3", "SHA256dt"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 40); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm sha256dt") } + @{ Algorithms = @("EthashB3", "SHA512256d"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm sha512_256d_radiant") } + @{ Algorithms = @("EvrProgPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm evrprogpow") } + @{ Algorithms = @("FiroPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm firopow") } + @{ Algorithms = @("FishHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash") } + @{ Algorithms = @("FishHash", "Blake3"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d*$"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm blake3_alephium") } + @{ Algorithms = @("FishHash", "Decred"); Type = "AMD"; Fee = @(0.0085, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d*$"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm blake3_decred") } + @{ Algorithms = @("FishHash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = "^Other$|^GCN\d$*"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm karlsenhash") } + @{ Algorithms = @("FishHash", "HeavyHashKarlsenV2"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = "^Other$|^GCN\d$*"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm karlsenhashv2") } + @{ Algorithms = @("FishHash", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = "^Other$|^GCN\d$*"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm pyrinhash") } + @{ Algorithms = @("FishHash", "HeavyHashPyrinV2"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = "^Other$|^GCN\d$*"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm pyrinhashv2") } + @{ Algorithms = @("FishHash", "SHA512256d"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = "^Other$|^GCN\d$*"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm sha512_256d_radiant") } + @{ Algorithms = @("HeavyHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm heavyhash") } # FPGA + @{ Algorithms = @("HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm karlsenhash") } + @{ Algorithms = @("HeavyHashKarlsenV2"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm karlsenhashv2") } + @{ Algorithms = @("HeavyHashKarlsenV2", "HeavyHashPyrinV2"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d$*"; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm karlsenhashv2", " --algorithm pyrinhashv2") } + @{ Algorithms = @("HeavyHashPyrin"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm pyrinhash") } + @{ Algorithms = @("HeavyHashPyrinV2"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm pyrinhashv2") } + @{ Algorithms = @("KawPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@("ProHashing"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm kawpow") } + @{ Algorithms = @("Lyra2v2Webchain"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm lyra2v2_webchain") } + @{ Algorithms = @("MemeHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm memehash") } + @{ Algorithms = @("MeowPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm meowpow") } + @{ Algorithms = @("ProgPowEpic"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_epic") } + @{ Algorithms = @("ProgPowSero"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_sero") } + @{ Algorithms = @("ProgPowTelestai"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_telestai") } + @{ Algorithms = @("ProgPowVeil"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_veil") } + @{ Algorithms = @("ProgPowVeriblock"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_veriblock") } + @{ Algorithms = @("ProgPowZ"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_zano") } + @{ Algorithms = @("Pufferfish2BMB"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 8; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm pufferfish2bmb") } + @{ Algorithms = @("SCCpow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm firopow") } + @{ Algorithms = @("SHA256dt"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm sha256dt") } + @{ Algorithms = @("SHA3d"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm sha3d") } # FPGA + @{ Algorithms = @("SHA512256d"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm sha512_256d_radiant") } + @{ Algorithms = @("UbqHash"); Type = "AMD"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ubqhash") } + @{ Algorithms = @("VerusHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm verushash") } + @{ Algorithms = @("VertHash"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = "^Other$"; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm verthash --verthash-dat-path ..\.$($Variables.VerthashDatPath)") } + @{ Algorithms = @("XelisHash"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(0, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm xelishash") } + @{ Algorithms = @("Yescrypt"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@("MiningDutch"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescrypt") } + @{ Algorithms = @("YescryptR8"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr8") } + @{ Algorithms = @("YescryptR16"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr16") } + @{ Algorithms = @("YescryptR32"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr32") } @{ Algorithms = @("Argon2d16000"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm argon2d_16000") } @{ Algorithms = @("Argon2d500"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm argon2d_dynamic") } @@ -159,7 +159,7 @@ $Algorithms = @( @{ Algorithms = @("Yescrypt"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yescrypt") } @{ Algorithms = @("XelisHash"); Type = "CPU"; Fee = @(0.02); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm xelishash") } @{ Algorithms = @("XelisHashV2"); Type = "CPU"; Fee = @(0.015); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm xelishashv2") } - @{ Algorithms = @("XelisHashV2Pepew"); Type = "CPU"; Fee = @(0.015); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm xelishashv2_pepew") } + @{ Algorithms = @("XelisV2PepePow"); Type = "CPU"; Fee = @(0.015); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm xelishashv2_pepew") } @{ Algorithms = @("Autolykos2"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm autolykos2") } @{ Algorithms = @("Autolykos2", "Blake3"); Type = "INTEL"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm autolykos2", " --algorithm blake3_alephium") } @@ -285,23 +285,25 @@ $Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithms[0]] -and $_.Algor If ($Algorithms) { - # Allowed max loss for 1. algorithm - # $GpuDualMaxLosses = @($null, 2, 4, 7, 10, 15, 21, 30) - # $GpuDualMaxLosses = @($null, 5) - # $GpuDualMaxLosses = @($null) + If (-not $Config.DryRun) { + # Allowed max loss for 1. algorithm + $GpuDualMaxLosses = @($null, 2, 4, 7, 10, 15, 21, 30) + $GpuDualMaxLosses = @($null, 5) + $GpuDualMaxLosses = @($null) - # Build command sets for max loss - # $Algorithms = $Algorithms.ForEach( - # { - # $_.PsObject.Copy() - # If ($_.Algorithms[1]) { - # ForEach ($GpuDualMaxLoss in $GpuDualMaxLosses) { - # $_ | Add-Member GpuDualMaxLoss $GpuDualMaxLoss -Force - # $_.PsObject.Copy() - # } - # } - # } - # ) + # Build command sets for max loss + $Algorithms = $Algorithms.ForEach( + { + $_.PsObject.Copy() + If ($_.Algorithms[1]) { + ForEach ($GpuDualMaxLoss in $GpuDualMaxLosses) { + $_ | Add-Member GpuDualMaxLoss $GpuDualMaxLoss -Force + $_.PsObject.Copy() + } + } + } + ) + } ($Devices | Select-Object Type, Model -Unique).ForEach( { diff --git a/Miners/SgMinerFancyIX-v0.9.4.ps1 b/Miners/SgMinerFancyIX-v0.9.4.ps1 index 42be9dd6..7b9a778e 100644 --- a/Miners/SgMinerFancyIX-v0.9.4.ps1 +++ b/Miners/SgMinerFancyIX-v0.9.4.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" }))) { Return } diff --git a/Miners/Suprminer-v2.31v2.ps1 b/Miners/Suprminer-v2.31v2.ps1 index 6ebf644f..78b3ec95 100644 --- a/Miners/Suprminer-v2.31v2.ps1 +++ b/Miners/Suprminer-v2.31v2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/TTMiner-v2024.3.2.ps1 b/Miners/TTMiner-v2024.3.2.ps1 index a93cce5a..bd4ad24c 100644 --- a/Miners/TTMiner-v2024.3.2.ps1 +++ b/Miners/TTMiner-v2024.3.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> # TT needs avx2 and aes https://github.com/TrailingStop/TT-Miner-beta/issues/7#issuecomment-2158058291 diff --git a/Miners/TTMiner-v5.0.3.ps1 b/Miners/TTMiner-v5.0.3.ps1 index 694f3b48..a79054cd 100644 --- a/Miners/TTMiner-v5.0.3.ps1 +++ b/Miners/TTMiner-v5.0.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/TeamBlackMiner-v2.25.ps1 b/Miners/TeamBlackMiner-v2.25.ps1 index b9ff4dd4..f9f5d31d 100644 --- a/Miners/TeamBlackMiner-v2.25.ps1 +++ b/Miners/TeamBlackMiner-v2.25.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.CUDAVersion -ge [Version]"11.6") }))) { Return } diff --git a/Miners/TeamRedMiner-v0.10.21.ps1 b/Miners/TeamRedMiner-v0.10.21.ps1 index 99920e53..032d8f6f 100644 --- a/Miners/TeamRedMiner-v0.10.21.ps1 +++ b/Miners/TeamRedMiner-v0.10.21.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 2.0" }))) { Return } diff --git a/Miners/TeleMerakiMiner-v1.5.0.ps1 b/Miners/TeleMerakiMiner-v1.5.0.ps1 index 8704dcf3..404c6639 100644 --- a/Miners/TeleMerakiMiner-v1.5.0.ps1 +++ b/Miners/TeleMerakiMiner-v1.5.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/Trex-v0.26.8.ps1 b/Miners/Trex-v0.26.8.ps1 index 0c7d8729..f8825a43 100644 --- a/Miners/Trex-v0.26.8.ps1 +++ b/Miners/Trex-v0.26.8.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/Wildrig-v0.40.8.ps1 b/Miners/Wildrig-v0.40.8.ps1 index b9eff2b3..b2488dd3 100644 --- a/Miners/Wildrig-v0.40.8.ps1 +++ b/Miners/Wildrig-v0.40.8.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 1.2" -and $_.Architecture -notmatch "^GCN1$") -or $_.Type -eq "INTEL" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge [Version]"452.39.00") }))) { Return } diff --git a/Miners/XLArig-v5.2.4.ps1 b/Miners/XLArig-v5.2.4.ps1 index 1dd1037b..72151937 100644 --- a/Miners/XLArig-v5.2.4.ps1 +++ b/Miners/XLArig-v5.2.4.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> # https://github.com/scala-network/XLArig/issues/59; Need to remove temp fix in \Includes\MinerAPIs\XMrig.psm1 when resolved diff --git a/Miners/XmRig-v6.22.0.3.ps1 b/Miners/XmRig-v6.22.0.3.ps1 index bc0423ee..77ee2bda 100644 --- a/Miners/XmRig-v6.22.0.3.ps1 +++ b/Miners/XmRig-v6.22.0.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ "AMD", "CPU", "INTEL" -contains $_.Type -or $_.OpenCL.ComputeCapability -gt "5.0" }))) { Return } diff --git a/Miners/XmrStak-v2.10.8.ps1 b/Miners/XmrStak-v2.10.8.ps1 index 1d7112c3..27ee5447 100644 --- a/Miners/XmrStak-v2.10.8.ps1 +++ b/Miners/XmrStak-v2.10.8.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -ne "NVIDIA" -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/ZealotEnemy-v2.6.3.ps1 b/Miners/ZealotEnemy-v2.6.3.ps1 index 082fc8d0..5d2beed5 100644 --- a/Miners/ZealotEnemy-v2.6.3.ps1 +++ b/Miners/ZealotEnemy-v2.6.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/lolMiner-v1.88.ps1 b/Miners/lolMiner-v1.89.ps1 similarity index 58% rename from Miners/lolMiner-v1.88.ps1 rename to Miners/lolMiner-v1.89.ps1 index dd37e0d7..7ece2ff2 100644 --- a/Miners/lolMiner-v1.88.ps1 +++ b/Miners/lolMiner-v1.89.ps1 @@ -17,104 +17,102 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "INTEL" -or ($_.Type -eq "AMD" -and $_.Architecture -match "GCN4|RDNA[1|2|3]") -or $_.OpenCL.ComputeCapability -ge "6.0" }))) { Return } -$URI = "https://github.com/Lolliedieb/lolMiner-releases/releases/download/1.88/lolMiner_v1.88_Win64.zip" +$URI = "https://github.com/Lolliedieb/lolMiner-releases/releases/download/1.89/lolMiner_v1.89_Win64.zip" $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName $Path = "Bin\$Name\lolminer.exe" $DeviceEnumerator = "Bus" $Algorithms = @( - @{ Algorithms = @("Autolykos2"); Type = "AMD"; Fee = @(0.015); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@("NiceHash", "ProHashing"), @()); Arguments = " --algo AUTOLYKOS2" } - @{ Algorithms = @("BeamV3"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 6.0; MinerSet = 0; WarmupTimes = @(45, 50); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo BEAM-III" } - @{ Algorithms = @("Blake3"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ALEPH" } - @{ Algorithms = @("Cuckoo29"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 8.0; MinerSet = 0; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C29AE" } - @{ Algorithms = @("Cuckaroo29B"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo CR29-40" } - @{ Algorithms = @("Cuckaroo29S"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo CR29-32" } - @{ Algorithms = @("Cuckaroo30CTX"); Type = "AMD"; Fee = @(0.025); MinMemGiB = 7.8; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C30CTX" } -# @{ Algorithms = @("Cuckatoo31"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 3; WarmupTimes = @(60, 80); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C31" } # ASIC -# @{ Algorithms = @("Cuckatoo32"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 3; WarmupTimes = @(60, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C32" } # ASIC - @{ Algorithms = @("Equihash1254"); Type = "AMD"; Fee = @(0.015); MinMemGiB = 3.0; MinerSet = 0; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ZEL --pers ZelProof" } - @{ Algorithms = @("Equihash1445"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI144_5" } # FPGA - @{ Algorithms = @("Equihash1927"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 0; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI192_7" } # FPGA - @{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH" } # PhoenixMiner-v6.2c is faster -# @{ Algorithms = @("EtcHash", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode ALEPHDUAL" } # No hashrate for second algorithm -# @{ Algorithms = @("EtcHash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode KARLSENDUAL" } # No hashrate for second algorithm -# @{ Algorithms = @("EtcHash", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode RXDDUAL" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 - @{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH" } # PhoenixMiner-v6.2c is faster -# @{ Algorithms = @("Ethash", "Blake3"); Type = "AMD"; Fee = @(0.01, 0); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode ALEPHDUAL" } # No hashrate for second algorithm -# @{ Algorithms = @("Ethash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode KARLSENDUAL" } # No hashrate for second algorithm -# @{ Algorithms = @("Ethash", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode RXDDUAL" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 - @{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1992 - @{ Algorithms = @("EthashB3", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode ALEPHDUAL" } - @{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode KARLSENDUAL" } - @{ Algorithms = @("EthashB3", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode PYRINDUAL" } - @{ Algorithms = @("EthashB3", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 100); ExcludeGPUarchitectures = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode RXDDUAL" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 - @{ Algorithms = @("Flux"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.00; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo FLUX" } - @{ Algorithms = @("FishHash"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = ""; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH" } - @{ Algorithms = @("FishHash", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN4$|^GCN5\d$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode ALEPHDUAL" } - @{ Algorithms = @("FishHash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = "^GCN4$|^GCN5\d$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode KARLSENDUAL" } - @{ Algorithms = @("FishHash", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN4$|^GCN5\d$|^RDNA1$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode PYRINDUAL" } - @{ Algorithms = @("FishHash", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN4$|^GCN5\d$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode RXDDUAL" } - @{ Algorithms = @("HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo KARLSEN" } - @{ Algorithms = @("HeavyHashPyrin"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo PYRIN" } - @{ Algorithms = @("IronFish"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@("NiceHash"), @()); Arguments = " --algo IRONFISH" } - @{ Algorithms = @("NexaPow"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 3.0; MinerSet = 2; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo NEXA" } - @{ Algorithms = @("SHA512256d"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 1.0; MinerSet = 0; WarmupTimes = @(60, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo RADIANT" } - @{ Algorithms = @("UbqHash"); Type = "AMD"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH" } - @{ Algorithms = @("UbqHash", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode ALEPHDUAL" } - @{ Algorithms = @("UbqHash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode KARLSENDUAL" } # No hashrate for second algorithm - @{ Algorithms = @("UbqHash", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode RXDDUAL" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 - - @{ Algorithms = @("Autolykos2"); Type = "INTEL"; Fee = @(0.015); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@("NiceHash", "ProHashing"), @()); Arguments = " --algo AUTOLYKOS2" } - @{ Algorithms = @("BeamV3"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo BEAM-III" } - @{ Algorithms = @("Equihash1254"); Type = "INTEL"; Fee = @(0.015); MinMemGiB = 3.0; MinerSet = 0; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ZEL --pers ZelProof" } - @{ Algorithms = @("Equihash1445"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI144_5" } # FPGA - @{ Algorithms = @("EtcHash"); Type = "INTEL"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH" } # PhoenixMiner-v6.2c is faster - - @{ Algorithms = @("Autolykos2"); Type = "NVIDIA"; Fee = @(0.015); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@("NiceHash", "ProHashing"), @()); Arguments = " --algo AUTOLYKOS2" } - @{ Algorithms = @("Blake3"); Type = "NVIDIA"; Fee = @(0.075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ALEPH" } - @{ Algorithms = @("BeamV3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 2; WarmupTimes = @(45, 50); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo BEAM-III" } # NBMiner-v42.3 is fastest - @{ Algorithms = @("Cuckoo29"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 8.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C29AE" } - @{ Algorithms = @("Cuckaroo29B"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo CR29-40" } - @{ Algorithms = @("Cuckaroo29S"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo CR29-32" } - @{ Algorithms = @("Cuckaroo30CTX"); Type = "NVIDIA"; Fee = @(0.025); MinMemGiB = 8.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C30CTX" } -# @{ Algorithms = @("Cuckatoo31"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 3; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C31" } # ASIC -# @{ Algorithms = @("Cuckatoo32"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 3; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C32" } # ASIC - @{ Algorithms = @("Equihash1254"); Type = "NVIDIA"; Fee = @(0.015); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ZEL --pers ZelProof" } # MiniZ-v2.4.d is fastest, but has 2% miner fee - @{ Algorithms = @("Equihash1445"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI144_5" } # FPGA - @{ Algorithms = @("Equihash2109"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI210_9" } - @{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH" } # PhoenixMiner-v6.2c is faster - @{ Algorithms = @("EtcHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(90, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode ALEPHDUAL --maxdualimpact *" } -# @{ Algorithms = @("EtcHash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(90, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode KARLSENDUAL --maxdualimpact *" } # No hashrate for second algorithm -# @{ Algorithms = @("EtcHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(95, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode RXDDUAL --maxdualimpact *" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 - @{ Algorithms = @("Ethash"); Type = "NVIDIA"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH" } # PhoenixMiner-v6.2c is faster - @{ Algorithms = @("Ethash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode ALEPHDUAL --maxdualimpact *" } -# @{ Algorithms = @("Ethash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(90, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode KARLSENDUAL --maxdualimpact *" } # No hashrate for second algorithm -# @{ Algorithms = @("Ethash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(90, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode RXDDUAL --maxdualimpact *" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 - @{ Algorithms = @("EthashB3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3" } - @{ Algorithms = @("EthashB3", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode ALEPHDUAL --maxdualimpact *" } - @{ Algorithms = @("EthashB3", "HeavyHashPyrin"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode PYRINDUAL --maxdualimpact *" } - @{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode KARLSENDUAL --maxdualimpact *" } - @{ Algorithms = @("EthashB3", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode RXDDUAL --maxdualimpact *" } - @{ Algorithms = @("FishHash"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH" } - @{ Algorithms = @("FishHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(75, 90); ExcludeGPUarchitectures = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode ALEPHDUAL --maxdualimpact *" } - @{ Algorithms = @("FishHash", "HeavyHashPyrin"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(75, 90); ExcludeGPUarchitectures = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode PYRINDUAL --maxdualimpact *" } - @{ Algorithms = @("FishHash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(75, 90); ExcludeGPUarchitectures = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode KARLSENDUAL --maxdualimpact *" } - @{ Algorithms = @("FishHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(75, 90); ExcludeGPUarchitectures = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode RXDDUAL --maxdualimpact *" } - @{ Algorithms = @("HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo KARLSEN" } - @{ Algorithms = @("HeavyHashPyrin"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo PYRIN" } - @{ Algorithms = @("IronFish"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo IRONFISH" } - @{ Algorithms = @("NexaPow"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo NEXA" } - @{ Algorithms = @("SHA512256d"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.0; MinerSet = 2; WarmupTimes = @(60, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo RADIANT" } - @{ Algorithms = @("UbqHash"); Type = "NVIDIA"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH" } - @{ Algorithms = @("UbqHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode ALEPHDUAL --maxdualimpact *" } -# @{ Algorithms = @("UbqHash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode KARLSENDUAL --maxdualimpact *" } # No hashrate for second algorithm -# @{ Algorithms = @("UbqHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode RXDDUAL --maxdualimpact *" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 + @{ Algorithms = @("Autolykos2"); Type = "AMD"; Fee = @(0.015); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo AUTOLYKOS2" } + @{ Algorithms = @("BeamV3"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 6.0; MinerSet = 0; WarmupTimes = @(45, 50); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo BEAM-III" } + @{ Algorithms = @("Blake3"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ALEPH" } + @{ Algorithms = @("Cuckoo29"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 8.0; MinerSet = 0; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C29AE" } + @{ Algorithms = @("Cuckaroo29B"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo CR29-40" } + @{ Algorithms = @("Cuckaroo29S"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo CR29-32" } + @{ Algorithms = @("Cuckaroo30CTX"); Type = "AMD"; Fee = @(0.025); MinMemGiB = 7.8; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C30CTX" } +# @{ Algorithms = @("Cuckatoo31"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 3; WarmupTimes = @(60, 80); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C31" } # ASIC +# @{ Algorithms = @("Cuckatoo32"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 3; WarmupTimes = @(60, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C32" } # ASIC + @{ Algorithms = @("Equihash1254"); Type = "AMD"; Fee = @(0.015); MinMemGiB = 3.0; MinerSet = 0; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ZEL --pers ZelProof" } + @{ Algorithms = @("Equihash1445"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI144_5" } # FPGA + @{ Algorithms = @("Equihash1927"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 0; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI192_7" } # FPGA + @{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH" } # PhoenixMiner-v6.2c is faster + @{ Algorithms = @("EtcHash", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @("NiceHash")); Arguments = " --algo ETCHASH --dualmode ALEPHDUAL" } +# @{ Algorithms = @("EtcHash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode KARLSENDUAL" } # No hashrate for second algorithm +# @{ Algorithms = @("EtcHash", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode RXDDUAL" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 + @{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH" } # PhoenixMiner-v6.2c is faster + @{ Algorithms = @("Ethash", "Blake3"); Type = "AMD"; Fee = @(0.01, 0); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @("NiceHash")); Arguments = " --algo ETHASH --dualmode ALEPHDUAL" } +# @{ Algorithms = @("Ethash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode KARLSENDUAL" } # No hashrate for second algorithm +# @{ Algorithms = @("Ethash", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode RXDDUAL" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 + @{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1992 + @{ Algorithms = @("EthashB3", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode ALEPHDUAL" } + @{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode KARLSENDUAL" } +# @{ Algorithms = @("EthashB3", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode PYRINDUAL" } # No hashrate for second algorithm + @{ Algorithms = @("EthashB3", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 100); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode RXDDUAL" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 + @{ Algorithms = @("Flux"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.00; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo FLUX" } + @{ Algorithms = @("FishHash"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH" } + @{ Algorithms = @("FishHash", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode ALEPHDUAL" } + @{ Algorithms = @("FishHash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode KARLSENDUAL" } + @{ Algorithms = @("FishHash", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode RXDDUAL" } + @{ Algorithms = @("HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo KARLSEN" } + @{ Algorithms = @("HeavyHashKarlsenV2"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo KARLSENV2" } + @{ Algorithms = @("IronFish"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo IRONFISH" } + @{ Algorithms = @("NexaPow"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 3.0; MinerSet = 2; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo NEXA" } + @{ Algorithms = @("SHA512256d"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 1.0; MinerSet = 0; WarmupTimes = @(60, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo RADIANT" } + @{ Algorithms = @("UbqHash"); Type = "AMD"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH" } + @{ Algorithms = @("UbqHash", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode ALEPHDUAL" } +# @{ Algorithms = @("UbqHash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode KARLSENDUAL" } # No hashrate for second algorithm +# @{ Algorithms = @("UbqHash", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode RXDDUAL" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 + + @{ Algorithms = @("Autolykos2"); Type = "INTEL"; Fee = @(0.015); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo AUTOLYKOS2" } + @{ Algorithms = @("BeamV3"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo BEAM-III" } + @{ Algorithms = @("Equihash1254"); Type = "INTEL"; Fee = @(0.015); MinMemGiB = 3.0; MinerSet = 0; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ZEL --pers ZelProof" } + @{ Algorithms = @("Equihash1445"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI144_5" } # FPGA + @{ Algorithms = @("EtcHash"); Type = "INTEL"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH" } # PhoenixMiner-v6.2c is faster + + @{ Algorithms = @("Autolykos2"); Type = "NVIDIA"; Fee = @(0.015); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo AUTOLYKOS2" } + @{ Algorithms = @("Blake3"); Type = "NVIDIA"; Fee = @(0.075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ALEPH" } + @{ Algorithms = @("BeamV3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 2; WarmupTimes = @(45, 50); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo BEAM-III" } # NBMiner-v42.3 is fastest + @{ Algorithms = @("Cuckoo29"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 8.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C29AE" } + @{ Algorithms = @("Cuckaroo29B"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo CR29-40" } + @{ Algorithms = @("Cuckaroo29S"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo CR29-32" } + @{ Algorithms = @("Cuckaroo30CTX"); Type = "NVIDIA"; Fee = @(0.025); MinMemGiB = 8.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C30CTX" } +# @{ Algorithms = @("Cuckatoo31"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 3; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C31" } # ASIC +# @{ Algorithms = @("Cuckatoo32"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 3; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C32" } # ASIC + @{ Algorithms = @("Equihash1254"); Type = "NVIDIA"; Fee = @(0.015); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ZEL --pers ZelProof" } # MiniZ-v2.4.d is fastest, but has 2% miner fee + @{ Algorithms = @("Equihash1445"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI144_5" } # FPGA + @{ Algorithms = @("Equihash2109"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI210_9" } + @{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH" } # PhoenixMiner-v6.2c is faster + @{ Algorithms = @("EtcHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(90, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @("NiceHash")); Arguments = " --algo ETCHASH --dualmode ALEPHDUAL --maxdualimpact *" } +# @{ Algorithms = @("EtcHash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(90, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode KARLSENDUAL --maxdualimpact *" } # No hashrate for second algorithm +# @{ Algorithms = @("EtcHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(95, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode RXDDUAL --maxdualimpact *" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 + @{ Algorithms = @("Ethash"); Type = "NVIDIA"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH" } # PhoenixMiner-v6.2c is faster + @{ Algorithms = @("Ethash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @("NiceHash")); Arguments = " --algo ETHASH --dualmode ALEPHDUAL --maxdualimpact *" } +# @{ Algorithms = @("Ethash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(90, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode KARLSENDUAL --maxdualimpact *" } # No hashrate for second algorithm +# @{ Algorithms = @("Ethash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(90, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode RXDDUAL --maxdualimpact *" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 + @{ Algorithms = @("EthashB3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3" } + @{ Algorithms = @("EthashB3", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode ALEPHDUAL --maxdualimpact *" } +# @{ Algorithms = @("EthashB3", "HeavyHashPyrin"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode PYRINDUAL --maxdualimpact *" } # No hashrate for second algorithm + @{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode KARLSENDUAL --maxdualimpact *" } + @{ Algorithms = @("EthashB3", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode RXDDUAL --maxdualimpact *" } + @{ Algorithms = @("FishHash"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH" } + @{ Algorithms = @("FishHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(75, 90); ExcludeGPUarchitectures = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode ALEPHDUAL --maxdualimpact *" } + @{ Algorithms = @("FishHash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(75, 90); ExcludeGPUarchitectures = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode KARLSENDUAL --maxdualimpact *" } + @{ Algorithms = @("FishHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(75, 90); ExcludeGPUarchitectures = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode RXDDUAL --maxdualimpact *" } + @{ Algorithms = @("HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo KARLSEN" } + @{ Algorithms = @("HeavyHashKarlsenV2"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo KARLSENV2" } + @{ Algorithms = @("IronFish"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo IRONFISH" } + @{ Algorithms = @("NexaPow"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo NEXA" } + @{ Algorithms = @("SHA512256d"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.0; MinerSet = 2; WarmupTimes = @(60, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo RADIANT" } + @{ Algorithms = @("UbqHash"); Type = "NVIDIA"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH" } + @{ Algorithms = @("UbqHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode ALEPHDUAL --maxdualimpact *" } +# @{ Algorithms = @("UbqHash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode KARLSENDUAL --maxdualimpact *" } # No hashrate for second algorithm +# @{ Algorithms = @("UbqHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode RXDDUAL --maxdualimpact *" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 ) $Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet }) @@ -123,23 +121,25 @@ $Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithms[0]] -and $_.Algor If ($Algorithms) { - # MaxDualImpact for 2. algorithm; The maximum impact on the eth mining speed in dual mining in %. Default is * for automatic mode - $MaxDualImpactValues = @("*", 5, 10, 15, 20) - - # Build command sets for MaxDualImpact (only seems to work with AMD, no hashrates for second algorithm with GTX 1660 Super when --maxdualimpact is a number) - $Algorithms = $Algorithms.ForEach( - { - If ($_.Type -eq "AMD" -and $_.Algorithms[1]) { - ForEach ($Value in $MaxDualImpactValues) { - $_ | Add-Member MaxDualImpact $Value -Force + If (-not $Config.DryRun) { + # MaxDualImpact for 2. algorithm; The maximum impact on the eth mining speed in dual mining in %. Default is * for automatic mode + $MaxDualImpactValues = @("*", 5, 10, 15, 20) + + # Build command sets for MaxDualImpact (only seems to work with AMD, no hashrates for second algorithm with GTX 1660 Super when --maxdualimpact is a number) + $Algorithms = $Algorithms.ForEach( + { + If ($_.Type -eq "AMD" -and $_.Algorithms[1]) { + ForEach ($Value in $MaxDualImpactValues) { + $_ | Add-Member MaxDualImpact $Value -Force + $_.PsObject.Copy() + } + } + Else { $_.PsObject.Copy() } } - Else { - $_.PsObject.Copy() - } - } - ) + ) + } ($Devices | Select-Object Type, Model -Unique).ForEach( { diff --git a/Pools/HashCryptos.ps1 b/Pools/HashCryptos.ps1 index 5689474f..337aa95a 100644 --- a/Pools/HashCryptos.ps1 +++ b/Pools/HashCryptos.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\HashCryptos.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Param( diff --git a/Pools/HiveON.ps1 b/Pools/HiveON.ps1 index bd11e432..272df095 100644 --- a/Pools/HiveON.ps1 +++ b/Pools/HiveON.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\Hiveon.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Param( diff --git a/Pools/MiningDutch.ps1 b/Pools/MiningDutch.ps1 index 4f94f9d0..23f496e0 100644 --- a/Pools/MiningDutch.ps1 +++ b/Pools/MiningDutch.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\MiningDutch.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Param( diff --git a/Pools/NiceHash.ps1 b/Pools/NiceHash.ps1 index 439ed053..875859b6 100644 --- a/Pools/NiceHash.ps1 +++ b/Pools/NiceHash.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\NiceHash.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Param( diff --git a/Pools/ProHashing.ps1 b/Pools/ProHashing.ps1 index 4e0e34c5..941fb77e 100644 --- a/Pools/ProHashing.ps1 +++ b/Pools/ProHashing.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\ProHashing.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Param( diff --git a/Pools/ZPool.ps1 b/Pools/ZPool.ps1 index e95a8d25..63e98e18 100644 --- a/Pools/ZPool.ps1 +++ b/Pools/ZPool.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\ZPool.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Param( diff --git a/Pools/ZergPool.ps1 b/Pools/ZergPool.ps1 index a1885cd1..01166bc8 100644 --- a/Pools/ZergPool.ps1 +++ b/Pools/ZergPool.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\ZergPool.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> Param( diff --git a/README.md b/README.md index 44ef9979..106dfb02 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ UG-Miner monitors mining pools in real-time in order to find the most profitable algorithm and runs the most profitable miner. -Updated 2024/09/11 +Updated 2024/09/13 Copyright (c) 2018-2024 UselessGuru diff --git a/UG-Miner.ps1 b/UG-Miner.ps1 index b18f820a..6960482e 100644 --- a/UG-Miner.ps1 +++ b/UG-Miner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: UG-Miner.ps1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> using module .\Includes\Include.psm1 @@ -299,7 +299,7 @@ $Variables.Branding = [PSCustomObject]@{ BrandName = "UG-Miner" BrandWebSite = "https://github.com/UselessGuru/UG-Miner" ProductLabel = "UG-Miner" - Version = [System.Version]"6.3.3" + Version = [System.Version]"6.3.4" } $WscriptShell = New-Object -ComObject Wscript.Shell @@ -681,7 +681,7 @@ Function MainLoop { ElseIf ($Global:CoreRunspace.Job.IsCompleted -ne $false) { If ($Variables.Timer) { Write-Message -Level Warn "Core cycle stopped abnormally - restarting..." - Stop-Core + Close-CoreRunspace } Start-Core If ($LegacyGUIform) { Update-GUIstatus } @@ -705,7 +705,7 @@ Function MainLoop { If ($host.UI.RawUI.KeyAvailable) { $KeyPressed = [System.Console]::ReadKey($true) - If ($KeyPressed.Key -eq "p" -and $KeyPressed.Modifiers -eq 5 <# #>) { + If ($Variables.NewMiningStatus -eq "Running" -and $KeyPressed.Key -eq "p" -and $KeyPressed.Modifiers -eq 5 <# #>) { If (-not $Global:CoreRunspace.AsyncObject.IsCompleted -eq $false) { # Core is complete / gone. Cycle cannot be suspended anymore $Variables.SuspendCycle = $false @@ -717,6 +717,7 @@ Function MainLoop { If ($LegacyGUIform) { $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Blue $LegacyGUIminingSummaryLabel.Text = $Message + $LegacyGUIbuttonPause.Enabled = $false } Write-Host $Message -ForegroundColor Cyan } @@ -725,6 +726,7 @@ Function MainLoop { If ($LegacyGUIform) { $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Blue $LegacyGUIminingSummaryLabel.Text = $Message + $LegacyGUIbuttonPause.Enabled = $true } Write-Host $Message -ForegroundColor Cyan If ([DateTime]::Now.ToUniversalTime() -gt $Variables.EndCycleTime) { $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime() } diff --git a/Version.txt b/Version.txt index 50712294..8d549214 100644 --- a/Version.txt +++ b/Version.txt @@ -1,6 +1,6 @@ { "Product": "UG-Miner", - "Version": "6.3.3", + "Version": "6.3.4", "AutoUpdate": true, "Uri": "https://github.com/UselessGuru/UG-Miner/archive/refs/heads/master.zip", "Message": "https://github.com/UselessGuru/UG-Miner/releases" diff --git a/Web/APIdocs.html b/Web/APIdocs.html index 984f0049..c495a003 100644 --- a/Web/APIdocs.html +++ b/Web/APIdocs.html @@ -24,7 +24,7 @@ -

UG-Miner API (version 0.5.4.20)

+

UG-Miner API (version 0.5.4.22)

API data is available at http://localhost:[API port]/<resource>.
The default API port is 3999. diff --git a/Web/minersoptimal.html b/Web/minersoptimal.html index a801736b..cbf6a81b 100644 --- a/Web/minersoptimal.html +++ b/Web/minersoptimal.html @@ -50,7 +50,7 @@

Optimal miners

Command line Devices Type - Status + Status Status Info Earning (biased) Earning diff --git a/Web/scripts/demo.ps1 b/Web/scripts/demo.ps1 index c68c8412..9cd8a787 100644 --- a/Web/scripts/demo.ps1 +++ b/Web/scripts/demo.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: demo.psm1 -Version: 6.3.3 -Version date: 2024/09/11 +Version: 6.3.4 +Version date: 2024/09/13 #> # Try running this script as: http://localhost:3999/scripts/demo.ps1?message=Hello%20World!