From a8debfdd6aeda05e6435a84007bdff4bac9fe6db Mon Sep 17 00:00:00 2001 From: Useless Guru <30080938+UselessGuru@users.noreply.github.com> Date: Thu, 20 Jun 2024 16:29:28 +0200 Subject: [PATCH] v6.2.10 Fixes: - Core: Fix compatibility with WindowsTerminal - Core: Miner would get suspended even when it succeeded benchmarking on the 3rd attempt - Core: '$MinerInstancePerDeviceModel' not detected on fresh config - Includes.psm1 / Get-DAGdata & Update-DAGdata: Add support fpr StakeCube coin (SSC) DaG calculation - Miners: Change algorithm for Blakecoin to Blake2s - RrkzCpu-v4.2: Disable mining using an SSL pool connection (not supported by miner) - Wildrig-v0.40.5: Invalid device selection in mixed GPU scenarios Miner updates: - MiniZ-v2.4d - SRBMinerMulti-v2.5.7 --- Balances/HashCryptos.ps1 | 4 +- Balances/HiveON.ps1 | 4 +- Balances/MiningDutch.ps1 | 4 +- Balances/MiningPoolHub.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 | 17 + Data/Algorithms.json | 1 - Data/CoinNames.json | 1 + Data/CurrencyAlgorithm.json | 7 +- Data/DagData.json | 460 ++--- Data/DonationData.json | 12 +- Data/PoolData.json | 8 - Data/PoolsConfig-Template.json | 2 +- Includes/APIServer.psm1 | 25 +- Includes/BalancesTracker.ps1 | 4 +- Includes/Core.ps1 | 149 +- Includes/Core.ps1.bak | 1546 +++++++++++++++++ Includes/Downloader.ps1 | 4 +- Includes/Include.psm1 | 183 +- Includes/LegacyGUI.ps1 | 18 +- 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.2.0.ps1 | 4 +- Miners/CcminerAlexis78-v1.5.2.ps1 | 6 +- Miners/CcminerDyn-v1.0.2.ps1 | 4 +- Miners/CcminerKlausT-v8.25.ps1 | 6 +- Miners/CcminerKlausT-v8.26x2.ps1 | 6 +- Miners/CcminerLyra2z330-v8.21r9.ps1 | 6 +- Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1 | 6 +- 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/ClaymoreDualME-v2.7.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.3.ps1 | 6 +- Miners/KawpowMiner-v1.2.4cl.ps1 | 6 +- 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.3c.ps1 => MiniZ-v2.4d.ps1} | 50 +- Miners/NBMiner-v42.3.ps1 | 4 +- Miners/NSFMiner-v1.3.14.ps1 | 4 +- Miners/NanoMiner-v3.9.1.ps1 | 18 +- Miners/Ninjarig-1.0.3.ps1 | 4 +- Miners/NosuchCpu-v3.8.8.1.ps1 | 4 +- Miners/OneZeroMiner-v1.3.4.ps1 | 4 +- Miners/PhoenixMiner-v6.2c.ps1 | 4 +- Miners/Radiator-v1.0.0.ps1 | 4 +- Miners/Raptor3umCpu-v2.0.ps1 | 4 +- Miners/Rigel-v1.17.4.ps1 | 100 +- Miners/RplantCpu-v5.0.34.ps1 | 4 +- Miners/RrkzCpu-v4.2.ps1 | 9 +- Miners/SRBMinerMulti-v0.9.4.ps1 | 4 +- ...ti-v2.5.6.ps1 => SRBMinerMulti-v2.5.7.ps1} | 259 ++- Miners/SgMinerFancyIX-v0.9.4.ps1 | 4 +- Miners/Suprminer-v2.31v2.ps1 | 4 +- Miners/TTMiner-v2024.2.0.ps1 | 105 +- Miners/TTMiner-v5.0.3.ps1 | 4 +- Miners/TeamBlackMiner-v2.25.ps1 | 116 +- Miners/TeamRedMiner-v0.10.21.ps1 | 4 +- Miners/Trex-v0.26.8.ps1 | 4 +- Miners/Wildrig-v0.40.5.ps1 | 6 +- Miners/XmRig-v6.21.3.15.ps1 | 4 +- Miners/XmrStak-v2.10.8.ps1 | 4 +- Miners/ZealotEnemy-v2.6.2.ps1 | 4 +- Miners/ZealotEnemy-v2.6.3.ps1 | 4 +- Miners/lolMiner-v1.88.ps1 | 92 +- Pools/HashCryptos.ps1 | 4 +- Pools/HiveON.ps1 | 4 +- Pools/MiningDutch.ps1 | 4 +- Pools/MiningPoolHub.ps1 | 4 +- Pools/NiceHash.ps1 | 4 +- Pools/ProHashing.ps1 | 4 +- Pools/ZPool.ps1 | 4 +- Pools/ZergPool.ps1 | 4 +- README.md | 8 +- UG-Miner.bat | 21 +- UG-Miner.ps1 | 177 +- UG-Miner_AsAdmin.bat | 56 + Utils/UG-Miner_LogReader.xml | 4 +- Version.txt | 2 +- Web/APIdocs.html | 14 +- Web/configedit.html | 40 +- Web/index.html | 3 +- Web/minersall.html | 5 +- Web/minersoptimal.html | 49 +- Web/minersunavailable.html | 11 +- Web/scripts/demo.ps1 | 4 +- 124 files changed, 2831 insertions(+), 1119 deletions(-) create mode 100644 Includes/Core.ps1.bak rename Miners/{MiniZ-v2.3c.ps1 => MiniZ-v2.4d.ps1} (79%) rename Miners/{SRBMinerMulti-v2.5.6.ps1 => SRBMinerMulti-v2.5.7.ps1} (73%) create mode 100644 UG-Miner_AsAdmin.bat diff --git a/Balances/HashCryptos.ps1 b/Balances/HashCryptos.ps1 index 01981e30..7387c5f1 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/HiveON.ps1 b/Balances/HiveON.ps1 index 8efcff0e..16b2ff1f 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/MiningDutch.ps1 b/Balances/MiningDutch.ps1 index 342f772d..e0079879 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/MiningPoolHub.ps1 b/Balances/MiningPoolHub.ps1 index 346985bc..f8782377 100644 --- a/Balances/MiningPoolHub.ps1 +++ b/Balances/MiningPoolHub.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\MiningPoolHub.ps1 -Version: 6.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/NiceHash External.ps1 b/Balances/NiceHash External.ps1 index d57ed12c..255d8177 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/NiceHash Internal.ps1 b/Balances/NiceHash Internal.ps1 index 2d6365bc..9bc003f9 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/ProHashing.ps1 b/Balances/ProHashing.ps1 index 8886b6a5..390af521 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/ZergPool.ps1 b/Balances/ZergPool.ps1 index 82da1fb5..d177cb64 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/Zpool.ps1 b/Balances/Zpool.ps1 index 52f79667..b2118f9e 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Brains/HashCryptos.ps1 b/Brains/HashCryptos.ps1 index 05fe80f4..e6c15630 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> using module ..\Includes\Include.psm1 diff --git a/Brains/MiningDutch.ps1 b/Brains/MiningDutch.ps1 index 5ca066b5..164f168c 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> using module ..\Includes\Include.psm1 diff --git a/Brains/ProHashing.ps1 b/Brains/ProHashing.ps1 index 51a6bde4..19b9fdb9 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> using module ..\Includes\Include.psm1 diff --git a/Brains/ZPool.ps1 b/Brains/ZPool.ps1 index 2e0ee98e..b932fd59 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> using module ..\Includes\Include.psm1 diff --git a/Brains/ZergPool.ps1 b/Brains/ZergPool.ps1 index 4fa48ee5..cb9ddd09 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> using module ..\Includes\Include.psm1 diff --git a/Changelog.txt b/Changelog.txt index fb757c6c..f79ef149 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,22 @@ Known issues: - Balance Tracker / Earnings Graph: Date change does not respect local time zone (accumulated data is calculated in UTC time) +- UG-Miner has issues with new Windows Terminal when default terminal application is set to 'Letwindows decide' or 'Windows Terminal'. -> It is recommeded to set it to 'Windows Console Host' + +ChangeLog UG-Miner 6.2.10 2024/06/20 +==================================== + +Fixes: +- Core: Fix compatibility with WindowsTerminal +- Core: Miner would get suspended even when it succeeded benchmarking on the 3rd attempt +- Core: '$MinerInstancePerDeviceModel' not detected on fresh config +- Includes.psm1 / Get-DAGdata & Update-DAGdata: Add support fpr StakeCube coin (SSC) DaG calculation +- Miners: Change algorithm for Blakecoin to Blake2s +- RrkzCpu-v4.2: Disable mining using an SSL pool connection (not supported by miner) +- Wildrig-v0.40.5: Invalid device selection in mixed GPU scenarios + +Miner updates: +- MiniZ-v2.4d +- SRBMinerMulti-v2.5.7 ChangeLog UG-Miner 6.2.9 2024/06/13 diff --git a/Data/Algorithms.json b/Data/Algorithms.json index d4815411..4e8b3645 100644 --- a/Data/Algorithms.json +++ b/Data/Algorithms.json @@ -25,7 +25,6 @@ "binariumv1": "BinariumV1", "bittube": "Cuckaroo29B", "bl2bsha3": "Blake2Bsha3", - "blakecoin": "Blake256R8", "blake2bbtcc": "Blake2bBtcc", "blake2bglt": "Blake2bGlt", "blake2bsha3": "Blake2bSha3", diff --git a/Data/CoinNames.json b/Data/CoinNames.json index 51da470c..7a7a0d8b 100644 --- a/Data/CoinNames.json +++ b/Data/CoinNames.json @@ -69,6 +69,7 @@ "CHTA": "CheetahCoin", "CLO": "Callisto", "CLORE": "Clore", + "CMS": "Cmusicai", "COCO": "Coco", "CPMK": "Chipmonk", "CPU": "Cpuchain", diff --git a/Data/CurrencyAlgorithm.json b/Data/CurrencyAlgorithm.json index dea9b54c..177dbac5 100644 --- a/Data/CurrencyAlgorithm.json +++ b/Data/CurrencyAlgorithm.json @@ -26,7 +26,7 @@ "AXE": "X11", "AYA": "Scrypt", "BBC": "Ghostrider", - "BBTC": "Blakecoin", + "BBTC": "Blake2s", "BCA": "SHA256", "BCH": "SHA256", "BEAM": "BeamhashIII", @@ -35,7 +35,7 @@ "BGL": "Keccak", "BIT": "Aurum", "BLACK": "Ethash", - "BLC": "Blake256R8", + "BLC": "Blakecoin", "BLOC": "CryptonightHeavyXhv", "BLOCX": "X11", "BM": "X11", @@ -73,6 +73,7 @@ "CHTA": "SHA256", "CLO": "Ethash", "CLORE": "KawPow", + "CMS": "KawPow", "COCO": "Scrypt", "CPMK": "Yespower", "CPU": "CpuPower", @@ -296,7 +297,7 @@ "RYO": "CryptonightGpu", "SATOX": "KawPow", "SCASH": "RandomxScash", - "SCC": "X11", + "SCC": "FiroPowSCC", "SCRIV": "Tribus", "SERO": "ProgPowSero", "SHAHE": "X16rv2", diff --git a/Data/DagData.json b/Data/DagData.json index 8388f506..7f26e908 100644 --- a/Data/DagData.json +++ b/Data/DagData.json @@ -1,116 +1,116 @@ { "Algorithm": { "Autolykos2": { - "BlockHeight": 1285483, + "BlockHeight": 1290458, "CoinName": "ERG", "DAGsize": 4118968140, - "Epoch": 850 + "Epoch": 855 }, "EtcHash": { - "BlockHeight": 20084067, + "BlockHeight": 20129359, "CoinName": "ETC", - "DAGsize": 3892313728, - "Epoch": 336 + "DAGsize": 3900702592, + "Epoch": 337 }, "Ethash": { - "BlockHeight": 19665200, + "BlockHeight": 19709118, "CoinName": "ETHW", - "DAGsize": 6585055616, - "Epoch": 657 + "DAGsize": 6593443456, + "Epoch": 658 }, "EthashB3": { - "BlockHeight": 3258403, + "BlockHeight": 3325539, "CoinName": "HYP", - "DAGsize": 1996487552, - "Epoch": 110 + "DAGsize": 2013262208, + "Epoch": 112 }, "EvrProgPow": { - "BlockHeight": 846335, + "BlockHeight": 856055, "CoinName": "EVR", - "DAGsize": 3825204608, - "Epoch": 72 + "DAGsize": 3833592704, + "Epoch": 73 }, "FiroPow": { - "BlockHeight": 904213, + "BlockHeight": 908182, "CoinName": "FIRO", - "DAGsize": 6920596864, - "Epoch": 697 + "DAGsize": 6945764992, + "Epoch": 700 }, "FiroPowSCC": { - "BlockHeight": 904213, - "CoinName": "FIRO", - "DAGsize": 6920596864, - "Epoch": 697 + "BlockHeight": 925984, + "CoinName": "SCC", + "DAGsize": 3481268864, + "Epoch": 287 }, "KawPow": { - "BlockHeight": 3364820, + "BlockHeight": 3374505, "CoinName": "RVN", - "DAGsize": 4848612224, - "Epoch": 450 + "DAGsize": 4857003392, + "Epoch": 451 }, "MeowPow": { - "BlockHeight": 927113, + "BlockHeight": 936815, "CoinName": "MEWC", - "DAGsize": 5268040832, - "Epoch": 125 + "DAGsize": 5301598592, + "Epoch": 126 }, "Octopus": { - "BlockHeight": 97963351, + "BlockHeight": 98456047, "CoinName": "CFX", - "DAGsize": 7449082112, - "Epoch": 188 + "DAGsize": 7465851136, + "Epoch": 189 }, "ProgPowSero": { - "BlockHeight": 12814713, + "BlockHeight": 12861073, "CoinName": "SERO", - "DAGsize": 4672451968, - "Epoch": 429 + "DAGsize": 4680842624, + "Epoch": 430 }, "ProgPowZ": { - "BlockHeight": 2675770, + "BlockHeight": 2685528, "CoinName": "ZANO", "DAGsize": 1837102976, "Epoch": 91 }, "UbqHash": { - "BlockHeight": 5392726, + "BlockHeight": 5420064, "CoinName": "UBQ", - "DAGsize": 2592073856, - "Epoch": 181 + "DAGsize": 2600467328, + "Epoch": 182 } }, "Currency": { "*": { - "BlockHeight": 97963351, + "BlockHeight": 98456047, "CoinName": "*", - "DAGsize": 7449082112, - "Epoch": 850 + "DAGsize": 7465851136, + "Epoch": 855 }, "AIDP": { "Algorithm": "KawPow", - "BlockHeight": 69132, + "BlockHeight": 78841, "CoinName": "AiDepin", - "DAGsize": 1166013824, - "Date": "2024-06-13T13:45:39.4011607Z", - "Epoch": 11, + "DAGsize": 1174404736, + "Date": "2024-06-20T08:29:07.4981207Z", + "Epoch": 12, "Url": "https://zergpool.com/api/currencies" }, "AIPG": { "Algorithm": "KawPow", - "BlockHeight": 267964, + "BlockHeight": 277664, "CoinName": "Aipowergrid", - "DAGsize": 1384118144, - "Date": "2024-06-13T13:45:39.4075164Z", - "Epoch": 37, + "DAGsize": 1400897408, + "Date": "2024-06-20T08:29:07.5017599Z", + "Epoch": 39, "Url": "https://zergpool.com/api/currencies" }, "AITT": { "Algorithm": "KawPow", - "BlockHeight": 588947, + "BlockHeight": 627734, "CoinName": "AittCoin", - "DAGsize": 1744829056, - "Date": "2024-06-13T13:45:39.4130283Z", - "Epoch": 80, + "DAGsize": 1786772864, + "Date": "2024-06-20T08:29:07.5051674Z", + "Epoch": 85, "Url": "https://zergpool.com/api/currencies" }, "AKA": { @@ -118,116 +118,125 @@ "BlockHeight": 11735607, "CoinName": "AKA", "DAGsize": 4370458496, - "Date": "2024-06-13T05:08:13.9370168Z", + "Date": "2024-06-20T05:03:36.7490999Z", "Epoch": 393, "Url": "https://minerstat.com/dag-size-calculator" }, "ALT": { "Algorithm": "Ethash", - "BlockHeight": 3671777, + "BlockHeight": 3716971, "CoinName": "Altcoinchain", - "DAGsize": 2113928576, - "Date": "2024-06-13T13:45:39.4174578Z", - "Epoch": 124, + "DAGsize": 2122315136, + "Date": "2024-06-20T08:29:07.5083812Z", + "Epoch": 125, "Url": "https://zergpool.com/api/currencies" }, "ANOK": { "Algorithm": "KawPow", - "BlockHeight": 114029, + "BlockHeight": 122643, "CoinName": "Anokas", - "DAGsize": 1216345216, - "Date": "2024-06-13T13:45:39.4209111Z", - "Epoch": 17, + "DAGsize": 1224732032, + "Date": "2024-06-20T08:29:07.5111987Z", + "Epoch": 18, "Url": "https://zergpool.com/api/currencies" }, "AVS": { "Algorithm": "Ethash", - "BlockHeight": 3718282, + "BlockHeight": 3763937, "CoinName": "Aves", - "DAGsize": 2122315136, - "Date": "2024-06-13T13:45:39.4510779Z", - "Epoch": 125, + "DAGsize": 2139092608, + "Date": "2024-06-20T08:29:38.2227305Z", + "Epoch": 127, "Url": "https://zergpool.com/api/currencies" }, "BTN": { "Algorithm": "Ethash", - "BlockHeight": 2251954, + "BlockHeight": 2297292, "CoinName": "Bitnetmoney", - "DAGsize": 1719661184, - "Date": "2024-06-13T13:46:09.599437Z", - "Epoch": 77, + "DAGsize": 1728047744, + "Date": "2024-06-20T08:29:38.2439776Z", + "Epoch": 78, "Url": "https://zergpool.com/api/currencies" }, "CAU": { "Algorithm": "Ethash", - "BlockHeight": 4107071, + "BlockHeight": 4175494, "CoinName": "Canxium", - "DAGsize": 2231367808, - "Date": "2024-06-13T13:46:09.6218887Z", - "Epoch": 138, + "DAGsize": 2256527744, + "Date": "2024-06-20T08:29:38.2652657Z", + "Epoch": 141, "Url": "https://zergpool.com/api/currencies" }, "CFX": { "Algorithm": "Octopus", - "BlockHeight": 97963351, + "BlockHeight": 98456047, "CoinName": "Conflux", - "DAGsize": 7449082112, - "Date": "2024-06-13T05:08:15.1760745Z", - "Epoch": 188, + "DAGsize": 7465851136, + "Date": "2024-06-20T05:03:37.9381013Z", + "Epoch": 189, "Url": "https://prohashing.com/api/v1/currencies" }, "CLO": { "Algorithm": "Ethash", - "BlockHeight": 14970547, + "BlockHeight": 15018216, "CoinName": "Callisto", - "DAGsize": 5276434304, - "Date": "2024-06-13T05:08:13.7950733Z", - "Epoch": 501, + "DAGsize": 5284819328, + "Date": "2024-06-20T05:03:36.6472137Z", + "Epoch": 502, "Url": "https://whattomine.com/coins.json" }, "CLORE": { "Algorithm": "KawPow", - "BlockHeight": 789741, + "BlockHeight": 799438, "CoinName": "Clore", - "DAGsize": 1971321728, - "Date": "2024-06-13T13:46:09.6363451Z", - "Epoch": 107, + "DAGsize": 1979707264, + "Date": "2024-06-20T08:29:38.27657Z", + "Epoch": 108, + "Url": "https://zergpool.com/api/currencies" + }, + "CMS": { + "Algorithm": "KawPow", + "BlockHeight": 114641, + "CoinName": "Cmusicai", + "DAGsize": 1216345216, + "Date": "2024-06-20T08:29:38.2868995Z", + "Epoch": 17, "Url": "https://zergpool.com/api/currencies" }, "DINT": { "Algorithm": "KawPow", - "BlockHeight": 275847, + "BlockHeight": 285096, "CoinName": "Dinartether", - "DAGsize": 1392507008, - "Date": "2024-06-13T13:46:40.512868Z", - "Epoch": 38, + "DAGsize": 1409284736, + "Date": "2024-06-20T08:29:38.325622Z", + "Epoch": 40, "Url": "https://zergpool.com/api/currencies" }, "DOGETHER": { "Algorithm": "Ethash", - "BlockHeight": 882259, + "BlockHeight": 915863, "CoinName": "Dogether", - "DAGsize": 1333787776, - "Date": "2024-06-13T05:08:13.7894246Z", - "Epoch": 31, + "DAGsize": 1342176128, + "Date": "2024-06-20T05:03:36.6235147Z", + "Epoch": 32, "Url": "https://whattomine.com/coins.json" }, "EGAZ": { "Algorithm": "EtcHash", - "BlockHeight": 5274733, + "BlockHeight": 5322022, "CoinName": "Etica", - "DAGsize": 2558525056, - "Date": "2024-06-13T05:08:13.7813735Z", - "Epoch": 177, + "DAGsize": 2575301504, + "Date": "2024-06-20T05:03:36.6180737Z", + "Epoch": 179, "Url": "https://whattomine.com/coins.json" }, "EGEM": { "Algorithm": "Ethash", - "BlockHeight": 15766183, + "BlockHeight": 15815398, "CoinName": "Ethergem", - "DAGsize": 5494536832, - "Date": "2024-06-13T05:08:13.7658341Z", - "Epoch": 527, + "DAGsize": 5511315328, + "Date": "2024-06-20T05:03:36.6441315Z", + "Epoch": 529, "Url": "https://whattomine.com/coins.json" }, "ELH": { @@ -241,11 +250,11 @@ }, "ERG": { "Algorithm": "Autolykos2", - "BlockHeight": 1285483, + "BlockHeight": 1290458, "CoinName": "Ergo", "DAGsize": 4118968140, - "Date": "2024-06-13T05:08:15.1689941Z", - "Epoch": 850, + "Date": "2024-06-20T05:01:24.5994699Z", + "Epoch": 855, "Url": "https://prohashing.com/api/v1/currencies" }, "ESN": { @@ -253,18 +262,18 @@ "BlockHeight": 6408009, "CoinName": "Ethersocial", "DAGsize": 2877286784, - "Date": "2024-06-13T05:08:13.9463135Z", + "Date": "2024-06-20T05:03:36.7582433Z", "Epoch": 215, "Url": "https://minerstat.com/dag-size-calculator" }, "ETC": { "Algorithm": "EtcHash", - "BlockHeight": 20084067, + "BlockHeight": 20129359, "CoinName": "EthereumClassic", - "DAGsize": 3892313728, - "Date": "2024-06-13T05:08:13.938402Z", - "Epoch": 336, - "Url": "https://minerstat.com/dag-size-calculator" + "DAGsize": 3900702592, + "Date": "2024-06-20T05:03:36.6299481Z", + "Epoch": 337, + "Url": "https://whattomine.com/coins.json" }, "ETHF": { "Algorithm": "Ethash", @@ -277,20 +286,20 @@ }, "ETHO": { "Algorithm": "Ethash", - "BlockHeight": 14266373, + "BlockHeight": 14312950, "CoinName": "EthoProtocol", - "DAGsize": 5075107456, - "Date": "2024-06-13T05:08:13.7726064Z", - "Epoch": 477, + "DAGsize": 5091883904, + "Date": "2024-06-20T05:03:36.6410972Z", + "Epoch": 479, "Url": "https://whattomine.com/coins.json" }, "ETHW": { "Algorithm": "Ethash", - "BlockHeight": 19665200, + "BlockHeight": 19709118, "CoinName": "EthereumPow", - "DAGsize": 6585055616, - "Date": "2024-06-13T13:46:40.586486Z", - "Epoch": 657, + "DAGsize": 6593443456, + "Date": "2024-06-20T08:29:38.3502049Z", + "Epoch": 658, "Url": "https://zergpool.com/api/currencies" }, "ETNT": { @@ -304,21 +313,21 @@ }, "ETP": { "Algorithm": "Ethash", - "BlockHeight": 9596465, + "BlockHeight": 9624399, "CoinName": "Metaverse", - "DAGsize": 3766481536, - "Date": "2024-06-13T05:08:13.94086Z", - "Epoch": 321, + "DAGsize": 3774872704, + "Date": "2024-06-20T05:03:36.7509811Z", + "Epoch": 322, "Url": "https://minerstat.com/dag-size-calculator" }, "EVR": { "Algorithm": "EvrProgPow", - "BlockHeight": 846335, + "BlockHeight": 856055, "CoinName": "Evrmore", - "DAGsize": 3825204608, - "Date": "2024-06-13T13:46:54.5359264Z", - "Epoch": 72, - "Url": "https://evr.cryptoscope.io/api/getblockcount" + "DAGsize": 3833592704, + "Date": "2024-06-20T08:29:38.3536591Z", + "Epoch": 73, + "Url": "https://zergpool.com/api/currencies" }, "EXP": { "Algorithm": "Ethash", @@ -331,11 +340,11 @@ }, "FIRO": { "Algorithm": "FiroPow", - "BlockHeight": 904213, + "BlockHeight": 908182, "CoinName": "Firo", - "DAGsize": 6920596864, - "Date": "2024-06-13T13:46:40.6159378Z", - "Epoch": 697, + "DAGsize": 6945764992, + "Date": "2024-06-20T08:26:04.0450174Z", + "Epoch": 700, "Url": "https://zergpool.com/api/currencies" }, "FLORA": { @@ -343,26 +352,26 @@ "BlockHeight": 789635, "CoinName": "", "DAGsize": 1308619904, - "Date": "2024-06-13T05:08:13.9794505Z", + "Date": "2024-06-20T05:03:36.7789042Z", "Epoch": 28, "Url": "https://minerstat.com/dag-size-calculator" }, "FREN": { "Algorithm": "KawPow", - "BlockHeight": 1150382, + "BlockHeight": 1169767, "CoinName": "FrenCoin", - "DAGsize": 2373966976, - "Date": "2024-06-13T13:46:40.6541059Z", - "Epoch": 155, + "DAGsize": 2390748544, + "Date": "2024-06-20T08:29:38.3751548Z", + "Epoch": 157, "Url": "https://zergpool.com/api/currencies" }, "GPN": { "Algorithm": "KawPow", - "BlockHeight": 587419, + "BlockHeight": 597123, "CoinName": "Gamepass", - "DAGsize": 1744829056, - "Date": "2024-06-13T13:46:40.7162159Z", - "Epoch": 80, + "DAGsize": 1753218944, + "Date": "2024-06-20T08:29:38.3921697Z", + "Epoch": 81, "Url": "https://zergpool.com/api/currencies" }, "HVQ": { @@ -376,29 +385,29 @@ }, "HYP": { "Algorithm": "EthashB3", - "BlockHeight": 3258403, + "BlockHeight": 3325539, "CoinName": "Hypra", - "DAGsize": 1996487552, - "Date": "2024-06-13T13:46:40.7866106Z", - "Epoch": 110, + "DAGsize": 2013262208, + "Date": "2024-06-20T08:26:04.1253437Z", + "Epoch": 112, "Url": "https://zergpool.com/api/currencies" }, "KIIRO": { "Algorithm": "FiroPow", - "BlockHeight": 189547, + "BlockHeight": 193394, "CoinName": "KiiroCoin", - "DAGsize": 2306867072, - "Date": "2024-06-13T13:46:40.8295219Z", - "Epoch": 147, + "DAGsize": 2332032128, + "Date": "2024-06-20T08:26:34.4560257Z", + "Epoch": 150, "Url": "https://zergpool.com/api/currencies" }, "LRS": { "Algorithm": "Ethash", - "BlockHeight": 1019408, + "BlockHeight": 1066318, "CoinName": "Larissa", - "DAGsize": 1367339392, - "Date": "2024-06-13T05:08:13.7835617Z", - "Epoch": 35, + "DAGsize": 1384118144, + "Date": "2024-06-20T05:03:36.6355536Z", + "Epoch": 37, "Url": "https://whattomine.com/coins.json" }, "META": { @@ -412,46 +421,46 @@ }, "MEWC": { "Algorithm": "MeowPow", - "BlockHeight": 927113, + "BlockHeight": 936815, "CoinName": "MeowCoin", - "DAGsize": 5268040832, - "Date": "2024-06-13T13:46:54.7518708Z", - "Epoch": 125, + "DAGsize": 5301598592, + "Date": "2024-06-20T08:29:46.6525452Z", + "Epoch": 126, "Url": "https://mewc.cryptoscope.io/api/getblockcount" }, "MOAC": { "Algorithm": "Ethash", - "BlockHeight": 13854246, + "BlockHeight": 13858698, "CoinName": "", "DAGsize": 4957666432, - "Date": "2024-06-13T05:08:13.9302234Z", + "Date": "2024-06-20T05:03:36.7456687Z", "Epoch": 463, "Url": "https://minerstat.com/dag-size-calculator" }, "NEOX": { "Algorithm": "KawPow", - "BlockHeight": 1082955, + "BlockHeight": 1092632, "CoinName": "Neoxa", - "DAGsize": 2298476672, - "Date": "2024-06-13T13:42:36.8629547Z", - "Epoch": 146, + "DAGsize": 2306867072, + "Date": "2024-06-20T08:26:34.4920885Z", + "Epoch": 147, "Url": "https://zergpool.com/api/currencies" }, "NILU": { "Algorithm": "Ethash", - "BlockHeight": 6244695, + "BlockHeight": 6244699, "CoinName": "", "DAGsize": 2835349376, - "Date": "2024-06-13T05:08:13.9500705Z", + "Date": "2024-06-20T05:03:36.7598664Z", "Epoch": 210, "Url": "https://minerstat.com/dag-size-calculator" }, "NIR": { "Algorithm": "ProgPowZ", - "BlockHeight": 425002, + "BlockHeight": 445287, "CoinName": "Nirmata", "DAGsize": 1207958912, - "Date": "2024-06-13T05:08:13.6995042Z", + "Date": "2024-06-20T05:03:36.5690523Z", "Epoch": 16, "Url": "https://whattomine.com/coins.json" }, @@ -460,26 +469,26 @@ "BlockHeight": 8848535, "CoinName": "", "DAGsize": 3556763264, - "Date": "2024-06-13T05:08:13.9432767Z", + "Date": "2024-06-20T05:03:36.7552979Z", "Epoch": 296, "Url": "https://minerstat.com/dag-size-calculator" }, "OCTA": { "Algorithm": "Ethash", - "BlockHeight": 4841098, + "BlockHeight": 4886581, "CoinName": "Octaspace", - "DAGsize": 2441084288, - "Date": "2024-06-13T13:42:36.8905964Z", - "Epoch": 163, + "DAGsize": 2449472384, + "Date": "2024-06-20T08:26:34.5154168Z", + "Epoch": 164, "Url": "https://zergpool.com/api/currencies" }, "PAPRY": { "Algorithm": "KawPow", - "BlockHeight": 687298, + "BlockHeight": 696998, "CoinName": "Paprika", - "DAGsize": 1853879936, - "Date": "2024-06-13T13:42:36.8989424Z", - "Epoch": 93, + "DAGsize": 1862269312, + "Date": "2024-06-20T08:26:34.5308413Z", + "Epoch": 94, "Url": "https://zergpool.com/api/currencies" }, "PGC": { @@ -493,30 +502,30 @@ }, "PRCO": { "Algorithm": "KawPow", - "BlockHeight": 1052373, + "BlockHeight": 1062076, "CoinName": "ProcyonCoin", - "DAGsize": 2264922752, - "Date": "2024-06-13T13:42:36.9166808Z", - "Epoch": 142, + "DAGsize": 2273312128, + "Date": "2024-06-20T08:26:34.5459612Z", + "Epoch": 143, "Url": "https://zergpool.com/api/currencies" }, "QKC": { "Algorithm": "Ethash", - "BlockHeight": 16485382, + "BlockHeight": 16546983, "CoinName": "Quarkchain", - "DAGsize": 5695864448, - "Date": "2024-06-13T05:08:13.7923125Z", - "Epoch": 551, + "DAGsize": 5712641408, + "Date": "2024-06-20T05:03:36.6382313Z", + "Epoch": 553, "Url": "https://whattomine.com/coins.json" }, "REDE": {}, "REDEV2": { "Algorithm": "Ethash", - "BlockHeight": 2372033, + "BlockHeight": 2417006, "CoinName": "Redev2", - "DAGsize": 1753218944, - "Date": "2024-06-13T13:42:36.9300975Z", - "Epoch": 81, + "DAGsize": 1761606272, + "Date": "2024-06-20T08:26:34.5586685Z", + "Epoch": 82, "Url": "https://zergpool.com/api/currencies" }, "RTH": { @@ -530,38 +539,38 @@ }, "RVN": { "Algorithm": "KawPow", - "BlockHeight": 3364820, + "BlockHeight": 3374505, "CoinName": "RavenCoin", - "DAGsize": 4848612224, - "Date": "2024-06-13T13:42:36.952035Z", - "Epoch": 450, + "DAGsize": 4857003392, + "Date": "2024-06-20T08:26:34.5819813Z", + "Epoch": 451, "Url": "https://zergpool.com/api/currencies" }, "SATOX": { "Algorithm": "KawPow", - "BlockHeight": 738298, + "BlockHeight": 747984, "CoinName": "Sato", - "DAGsize": 1912601216, - "Date": "2024-06-13T13:42:36.9593805Z", - "Epoch": 100, + "DAGsize": 1920988544, + "Date": "2024-06-20T08:23:31.8585113Z", + "Epoch": 101, "Url": "https://zergpool.com/api/currencies" }, "SCC": { "Algorithm": "FiroPowSCC", - "BlockHeight": 904213, - "CoinName": "StakeCubeCoin", - "DAGsize": 6920596864, - "Date": "2024-06-13T13:46:40.6159378Z", - "Epoch": 697, - "Url": "https://zergpool.com/api/currencies" + "BlockHeight": 925984, + "CoinName": "Stakecube", + "DAGsize": 3481268864, + "Date": "2024-06-20T05:03:38.0173694Z", + "Epoch": 287, + "Url": "https://www.coinexplorer.net/api/v1/SCC/getblockcount" }, "SERO": { "Algorithm": "ProgPowSero", - "BlockHeight": 12814713, + "BlockHeight": 12861073, "CoinName": "Sero", - "DAGsize": 4672451968, - "Date": "2024-06-13T05:08:13.7199752Z", - "Epoch": 429, + "DAGsize": 4680842624, + "Date": "2024-06-20T05:03:36.5908494Z", + "Epoch": 430, "Url": "https://whattomine.com/coins.json" }, "SLX": { @@ -575,29 +584,29 @@ }, "UBQ": { "Algorithm": "UbqHash", - "BlockHeight": 5392726, + "BlockHeight": 5420064, "CoinName": "Ubiq", - "DAGsize": 2592073856, - "Date": "2024-06-13T05:08:13.9526739Z", - "Epoch": 181, + "DAGsize": 2600467328, + "Date": "2024-06-20T05:03:36.7615652Z", + "Epoch": 182, "Url": "https://minerstat.com/dag-size-calculator" }, "VLC": { "Algorithm": "KawPow", - "BlockHeight": 162358, + "BlockHeight": 170961, "CoinName": "Vultaic", - "DAGsize": 1266673792, - "Date": "2024-06-13T13:43:37.810685Z", - "Epoch": 23, + "DAGsize": 1275067264, + "Date": "2024-06-20T08:28:06.7232086Z", + "Epoch": 24, "Url": "https://zergpool.com/api/currencies" }, "XNA": { "Algorithm": "KawPow", - "BlockHeight": 604035, + "BlockHeight": 613737, "CoinName": "Neurai", - "DAGsize": 1761606272, - "Date": "2024-06-13T13:44:08.6433952Z", - "Epoch": 82, + "DAGsize": 1769995904, + "Date": "2024-06-20T08:28:37.2004545Z", + "Epoch": 83, "Url": "https://zergpool.com/api/currencies" }, "XPB": { @@ -611,20 +620,21 @@ }, "ZANO": { "Algorithm": "ProgPowZ", - "BlockHeight": 2675770, + "BlockHeight": 2685528, "CoinName": "Zano", "DAGsize": 1837102976, - "Date": "2024-06-13T13:44:08.6561193Z", + "Date": "2024-06-20T08:29:07.8844988Z", "Epoch": 91, "Url": "https://zergpool.com/api/currencies" } }, "Updated": { - "https://evr.cryptoscope.io/api/getblockcount": "2024-06-13T13:46:54.5363346Z", - "https://mewc.cryptoscope.io/api/getblockcount": "2024-06-13T13:46:54.7522754Z", - "https://minerstat.com/dag-size-calculator": "2024-06-13T05:08:13.9979642Z", - "https://prohashing.com/api/v1/currencies": "2024-06-13T05:08:15.176459Z", - "https://whattomine.com/coins.json": "2024-06-13T05:08:13.7993938Z", - "https://zergpool.com/api/currencies": "2024-06-13T13:46:40.8299421Z" + "https://evr.cryptoscope.io/api/getblockcount": "2024-06-19T20:01:57.940936Z", + "https://mewc.cryptoscope.io/api/getblockcount": "2024-06-20T08:29:46.6529331Z", + "https://minerstat.com/dag-size-calculator": "2024-06-20T05:03:36.7976188Z", + "https://prohashing.com/api/v1/currencies": "2024-06-20T05:03:37.938492Z", + "https://whattomine.com/coins.json": "2024-06-20T05:03:36.6485752Z", + "https://www.coinexplorer.net/api/v1/SCC/getblockcount": "2024-06-20T05:03:38.017749Z", + "https://zergpool.com/api/currencies": "2024-06-20T08:29:38.3925151Z" } } diff --git a/Data/DonationData.json b/Data/DonationData.json index d33c692e..bf8bce6b 100644 --- a/Data/DonationData.json +++ b/Data/DonationData.json @@ -1,11 +1,6 @@ [ { "Name": "uselessguru", - "Wallets": { - "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF", - "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f", - "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287" - }, "MiningDutchUserName": "UselessGuru", "MiningPoolHubUserName": "UselessGuru", "ProHashingUserName": "UselessGuru", @@ -17,6 +12,11 @@ "ProHashing", "ZergPool", "ZPool" - ] + ], + "Wallets": { + "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF", + "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f", + "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287" + } } ] diff --git a/Data/PoolData.json b/Data/PoolData.json index 7c8cf626..f24be591 100644 --- a/Data/PoolData.json +++ b/Data/PoolData.json @@ -38,7 +38,6 @@ "PoolAPITimeout": 30, "PoolCurrenciesUri": "", "PoolStatusUri": "https://hashcryptos.com/api/status", - "PoolDebug": false, "Region": [ "n/a" ], @@ -88,7 +87,6 @@ "PoolAPIAllowedFailureCount": 3, "PoolAPIRetryInterval": 3, "PoolAPITimeout": 20, - "PoolDebug": false, "PoolStatusUri": "https://Hiveon.net/api/v1/stats/pool", "SSL": "prefer", "Variant": { @@ -117,7 +115,6 @@ "PoolAPITimeout": 3, "PoolCurrenciesUri": "", "PoolStatusUri": "https://www.mining-dutch.nl/api/status", - "PoolDebug": false, "Region": [ "americas", "europe", @@ -186,7 +183,6 @@ "ZEC", "ZEN" ], - "PoolDebug": false, "PoolAPIAllowedFailureCount": 3, "PoolAPIRetryInterval": 3, "PoolAPITimeout": 20, "Region": [ @@ -210,7 +206,6 @@ "Region": [ "n/a (Anycast)" ], - "PoolDebug": false, "PoolAPIAllowedFailureCount": 3, "PoolAPIRetryInterval": 3, "PoolAPITimeout": 20, @@ -251,7 +246,6 @@ "PoolAPITimeout": 20, "PoolCurrenciesUri": "https://prohashing.com/api/v1/currencies", "PoolStatusUri": "https://prohashing.com/api/v1/status", - "PoolDebug": false, "Region": [ "ASIA", "EU", @@ -313,7 +307,6 @@ "PoolAPITimeout": 30, "PoolCurrenciesUri": "https://zergpool.com/api/currencies", "PoolStatusUri": "https://zergpool.com/api/status", - "PoolDebug": false, "ProfitSwitching": false, // Pool changes DAG epoch when best coin switches "Region": [ "asia", @@ -377,7 +370,6 @@ "PoolAPITimeout": 30, "PoolCurrenciesUri": "https://www.zpool.ca/api/currencies", "PoolStatusUri": "https://www.zpool.ca/api/status", - "PoolDebug": false, "ProfitSwitching": false, // Pool changes DAG epoch when best coin switches "Region": [ "eu", diff --git a/Data/PoolsConfig-Template.json b/Data/PoolsConfig-Template.json index 08c702b1..199bde9b 100644 --- a/Data/PoolsConfig-Template.json +++ b/Data/PoolsConfig-Template.json @@ -19,7 +19,7 @@ ], // Exclude region: One or more of 'Asia', 'Europe', 'HongKong', 'Japan', 'Russia', 'USA East', 'USA West' "ExcludeRegion": [ - "Asia", + "Asia", "Europe" ], // EarningsAdjustmentFactor: Default factor with which UG-Miner multiplies the prices reported by the pool. Value between 0.01 & 10.00 diff --git a/Includes/APIServer.psm1 b/Includes/APIServer.psm1 index 31b33c65..f800ceb7 100644 --- a/Includes/APIServer.psm1 +++ b/Includes/APIServer.psm1 @@ -19,7 +19,7 @@ along with this program. If not, see . Product: UG-Miner File: \Includes\APIServer.psm1 Version: 6.2.5 -Version date: 2024/06/13 +Version date: 2024/06/20 #> Function Start-APIServer { @@ -279,6 +279,7 @@ Function Start-APIServer { $ExcludeDeviceName = $Config.ExcludeDeviceName $Config.ExcludeDeviceName = @($Config.ExcludeDeviceName.Where({ $_ -notin $Values }) | Sort-Object -Unique) Write-Config -ConfigFile $Variables.ConfigFile -Config $Config + $Variables.FreshConfig = $false $Data = "Device configuration changed`n`nOld values:" $Data += "`nExcludeDeviceName: '[$($ExcludeDeviceName -join ', ')]'" $Data += "`n`nNew values:" @@ -324,6 +325,7 @@ Function Start-APIServer { } ) $Variables.RestartCycle = $true + $Variables.FreshConfig = $false Write-Message -Level Verbose "Web GUI: Configuration saved. It will become fully active in the next cycle." $Data = "Configuration saved to '$($Variables.ConfigFile)'.`nIt will become fully active in the next cycle." } @@ -347,7 +349,12 @@ Function Start-APIServer { Break } "/functions/mining/getstatus" { - $Data = $Variables.NewMiningStatus | ConvertTo-Json + If ($Variables.FreshConfig) { + $Data = "FreshConfig" | ConvertTo-Json + } + Else { + $Data = $Variables.NewMiningStatus | ConvertTo-Json + } Break } "/functions/mining/pause" { @@ -736,10 +743,6 @@ Function Start-APIServer { $Data = ConvertTo-Json -Depth 2 ($Variables.BrainData | Get-SortedObject) Break } - "/brainjobs" { - $Data = ConvertTo-Json -Depth 2 ($Variables.BrainJobs | Select-Object) - Break - } "/coinnames" { $Data = Get-Content -Path ".\Data\CoinNames.json" Break @@ -829,12 +832,8 @@ Function Start-APIServer { $Data = ConvertTo-Json -Depth 4 @(($Variables.MinersBestPerDevice | 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 -Property DeviceName) Break } - "/miners/bestcombo" { - $Data = ConvertTo-Json -Depth 4 @($Variables.MinersBestPerDeviceCombo | Sort-Object DeviceNames | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, StatEnd, StatStart, SideIndicator, ValidDataSampleTimestamp) - Break - } - "/miners/bestcombos" { - $Data = ConvertTo-Json -Depth 4 @($Variables.MinersBestPerDeviceCombos | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, SideIndicator, ValidDataSampleTimestamp) + "/miners/best" { + $Data = ConvertTo-Json -Depth 4 @($Variables.MinersBest | Sort-Object DeviceNames | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, StatEnd, StatStart, SideIndicator, ValidDataSampleTimestamp) Break } "/miners/disabled" { @@ -846,7 +845,7 @@ Function Start-APIServer { Break } "/miners/launched" { - $Data = ConvertTo-Json -Depth 4 @(($Variables.MinersBestPerDeviceCombo | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp).ForEach({ $_.Workers = $_.WorkersRunning; $_ }) | Select-Object -ExcludeProperty WorkersRunning) + $Data = ConvertTo-Json -Depth 4 @(($Variables.MinersBest | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp).ForEach({ $_.Workers = $_.WorkersRunning; $_ }) | Select-Object -ExcludeProperty WorkersRunning) Break } "/miners/optimal" { diff --git a/Includes/BalancesTracker.ps1 b/Includes/BalancesTracker.ps1 index 9829f1c4..ee82ab2e 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> using module .\Include.psm1 diff --git a/Includes/Core.ps1 b/Includes/Core.ps1 index b5510e23..2e3aa652 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> using module .\Include.psm1 @@ -62,7 +62,7 @@ Do { $Variables.RunningMiners = [Miner[]]@() $Variables.BenchmarkingOrMeasuringMiners = [Miner[]]@() $Variables.FailedMiners = [Miner[]]@() - $Variables.MinersBestPerDeviceCombos = [Miner[]]@() + $Variables.MinersBest = [Miner[]]@() $Variables.MiningEarning = $Variables.MiningProfit = $Variables.MiningPowerCost = $Variables.MiningPowerConsumption = [Double]0 Start-Sleep -Seconds 60 Continue @@ -70,9 +70,11 @@ Do { If ($Variables.NewMiningStatus -eq "Running") { # Read config only if config files have changed - 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." + 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." + } } } @@ -579,7 +581,7 @@ Do { } # Ensure we get the hashrate for running miners prior looking for best miner - ForEach ($Miner in $Variables.MinersBestPerDeviceCombo | Sort-Object -Property { $_.DeviceNames }) { + ForEach ($Miner in $Variables.MinersBest | Sort-Object { [String]$_.DeviceNames }) { If ($Miner.DataReaderJob.HasMoreData -and $Miner.Status -ne [MinerStatus]::DryRun) { If ($Samples = @($Miner.DataReaderJob | Receive-Job | Select-Object)) { $Sample = $Samples[-1] @@ -649,14 +651,14 @@ Do { $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 += [Double]($CollectedHashrate[1]) - $MinerHashrates.$Algorithm = [Double]($CollectedHashrate[0]) + $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 = [Double]($CollectedPowerConsumption[1]) - $MinerPowerConsumption = [Double]($CollectedPowerConsumption[0]) + $Miner.PowerConsumption_Live = $CollectedPowerConsumption[1] + $MinerPowerConsumption = $CollectedPowerConsumption[0] } } @@ -760,7 +762,7 @@ Do { } $Miner.PSObject.Properties.Remove("Fee") $Miner | Add-Member Info "$(($Miner.Name -split '-')[0..2] -join '-') {$($Miner.Workers.ForEach({ "$($_.Pool.AlgorithmVariant)$(If ($_.Pool.Currency) { "[$($_.Pool.Currency)]" })", $_.Pool.Name -join '@' }) -join ' & ')}$(If (($Miner.Name -split '-')[4]) { " (Dual Intensity $(($Miner.Name -split '-')[4]))" })" - If ($Config.UseAllPoolAlgoCombos) { $Miner.Name = $Miner.Info -replace "\{", "(" -replace "\}", ")" -replace " " } + If ($Config.UseAllPoolAlgorithmCombinations) { $Miner.Name = $Miner.Info -replace "\{", "(" -replace "\}", ")" -replace " " } $Miner -as $_.API } Catch { @@ -855,7 +857,7 @@ Do { # 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 -Property { $_.DeviceNames }).ForEach( + ($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 | Select-Object -ExpandProperty Maximum) | Measure-Object Earning -Average).Average * $Config.UnrealMinerEarningFactor) { ($_.Group.Where({ $_.Earning -GT $ReasonableEarning })).ForEach( @@ -867,7 +869,7 @@ Do { } $Bias = If ($Variables.CalculatePowerCost -and -not $Config.IgnorePowerCost) { "Profit_Bias" } Else { "Earning_Bias" } - If ($Config.UseAllPoolAlgoCombos) { + If ($Config.UseAllPoolAlgorithmCombinations) { # Add reason 'Not best miner in algorithm family' ($Miners.Where({ -not $_.Reasons }) | Group-Object { [String]$_.DeviceNames }, { [String]$_.Workers.Pool.Name }, { [String]$_.Workers.Pool.Algorithm }).ForEach( { @@ -899,7 +901,7 @@ Do { # 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.RunningMiners })) { + If ($RelevantWatchdogTimers = $Variables.WatchdogTimers.Where({ $_.MinerName -notin $Variables.RunningMiners.Name })) { # Only miners with a corresponding watchdog timer object are of interest $RelevantMiners = $Variables.Miners.Where({ -not $_.Reasons -and $_.BaseName -in @($Variables.WatchdogTimers.MinerBaseName) -and $_.Version -in @($Variables.WatchdogTimers.MinerVersion) }) @@ -1003,10 +1005,10 @@ Do { } If ($Miners.Where({ $_.Available })) { - Write-Message -Level Info "Selecting best miner$(If (@($Variables.EnabledDevices.Model | Select-Object -Unique).Count -gt 1) { "s" }) based on$(If ($Variables.CalculatePowerCost) { " profit (power cost $($Config.MainCurrency) $($Variables.PowerPricekWh)/kW⋅h)" } Else { " earning" })..." + Write-Message -Level Info "Selecting best miner$(If (@($Variables.EnabledDevices.Model | Select-Object -Unique).Count -gt 1) { " combinations" }) based on$(If ($Variables.CalculatePowerCost) { " profit (power cost $($Config.MainCurrency) $($Variables.PowerPricekWh)/kW⋅h)" } Else { " earning" })..." If ($Miners.Where({ $_.Available }).Count -eq 1) { - $MinersBestPerDeviceCombo = $Variables.MinersBestPerDevice = $Variables.MinersOptimal = $Miners.Where({ $_.Available }) + $MinersBest = $Variables.MinersBestPerDevice = $Variables.MinersOptimal = $Miners.Where({ $_.Available }) } Else { # Add running miner bonus @@ -1017,43 +1019,49 @@ Do { $Variables.MinersOptimal = @(($Miners.Where({ $_.Available -and -not $_.Benchmark -and -not $_.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.MinersDeviceCombos = @((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 })) + $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+NVIDIA+CPU - $MinersBestPerDeviceCombos = @( - $Variables.MinersDeviceCombos.ForEach( + # Get most best miner combination i.e. AMD+INTEL+NVIDIA+CPU + $MinerCombinations = @( + $Variables.MinerDeviceNamesCombinations.ForEach( { - $MinerDeviceCombo = $_.Combination + $MinerDeviceNamesCombination = $_.Combination [PSCustomObject]@{ - Combination = $MinerDeviceCombo.ForEach( + Combination = $MinerDeviceNamesCombination.ForEach( { - $MinerDeviceCount = $_.DeviceNames.Count - [Regex]$MinerDeviceRegex = "^(" + (($_.DeviceNames.ForEach({ [Regex]::Escape($_) })) -join '|') + ")$" - $Variables.MinersBestPerDevice.Where({ ([Array]$_.DeviceNames -notmatch $MinerDeviceRegex).Count -eq 0 -and ([Array]$_.DeviceNames -match $MinerDeviceRegex).Count -eq $MinerDeviceCount }) + $DeviceNames = [String]$_.DeviceNames + $Variables.MinersBestPerDevice.Where({ [String]$_.DeviceNames -eq $DeviceNames }) } ) } } ) ) - $MinersBestPerDeviceCombo = @(($MinersBestPerDeviceCombos | Sort-Object -Descending { @($_.Combination.Where({ [Double]::IsNaN($_.$Bias) })).Count }, { $_.Combination | Measure-Object $Bias -Sum | Select-Object -ExpandProperty Sum }, { ($_.Combination.Where({ $_.$Bias -ne 0 }) | Measure-Object).Count } -Top 1).Combination) + Remove-Variable DeviceNames, MinerDeviceNamesCombinations -ErrorAction Ignore + + # Get smallest $Bias + # Hack: Temporarily make all bias -ge 0 by adding smallest bias, following 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, MinerDeviceCombo, MinerDeviceCount, MinerDeviceRegex, RunningMinerBonusFactor -ErrorAction Ignore + Remove-Variable Bias, MinerCombinations, MinerDeviceNameCount, RunningMinerBonusFactor, SmallestBias -ErrorAction Ignore } - $Variables.PowerConsumptionIdleSystemW = (($Config.PowerConsumptionIdleSystemW - ($MinersBestPerDeviceCombo.Where({ $_.Type -eq "CPU" }) | Measure-Object PowerConsumption -Sum | Select-Object -ExpandProperty Sum)), 0 | Measure-Object -Maximum | Select-Object -ExpandProperty Maximum) + $Variables.PowerConsumptionIdleSystemW = (($Config.PowerConsumptionIdleSystemW - ($MinersBest.Where({ $_.Type -eq "CPU" }) | Measure-Object PowerConsumption -Sum | Select-Object -ExpandProperty Sum)), 0 | Measure-Object -Maximum | Select-Object -ExpandProperty Maximum) $Variables.BasePowerCost = [Double]($Variables.PowerConsumptionIdleSystemW / 1000 * 24 * $Variables.PowerPricekWh / $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) - $Variables.MiningEarning = [Double]($MinersBestPerDeviceCombo | Measure-Object Earning_Bias -Sum | Select-Object -ExpandProperty Sum) - $Variables.MiningPowerCost = [Double]($MinersBestPerDeviceCombo | Measure-Object PowerCost -Sum | Select-Object -ExpandProperty Sum) - $Variables.MiningPowerConsumption = [Double]($MinersBestPerDeviceCombo | Measure-Object PowerConsumption -Sum | Select-Object -ExpandProperty Sum) - $Variables.MiningProfit = [Double](($MinersBestPerDeviceCombo | Measure-Object Profit_Bias -Sum | Select-Object -ExpandProperty Sum) - $Variables.BasePowerCost) + $Variables.MiningEarning = [Double]($MinersBest | Measure-Object Earning_Bias -Sum | Select-Object -ExpandProperty Sum) + $Variables.MiningPowerCost = [Double]($MinersBest | Measure-Object PowerCost -Sum | Select-Object -ExpandProperty Sum) + $Variables.MiningPowerConsumption = [Double]($MinersBest | Measure-Object PowerConsumption -Sum | Select-Object -ExpandProperty Sum) + $Variables.MiningProfit = [Double](($MinersBest | Measure-Object Profit_Bias -Sum | Select-Object -ExpandProperty Sum) - $Variables.BasePowerCost) } Else { $Variables.PowerConsumptionIdleSystemW = (($Config.PowerConsumptionIdleSystemW), 0 | Measure-Object -Maximum | Select-Object -ExpandProperty Maximum) $Variables.BasePowerCost = [Double]($Variables.PowerConsumptionIdleSystemW / 1000 * 24 * $Variables.PowerPricekWh / $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) - $Variables.MinersOptimal = $Variables.MinersBestPerDevice = $Variables.MinersDeviceCombos = $MinersBestPerDeviceCombos = $MinersBestPerDeviceCombo = [Miner[]]@() + $Variables.MinersOptimal = $Variables.MinersBestPerDevice = $Variables.MinerDeviceNamesCombinations = $MinersBest = [Miner[]]@() $Variables.MiningEarning = $Variables.MiningProfit = $Variables.MiningPowerCost = $Variables.MiningPowerConsumption = [Double]0 } } @@ -1062,11 +1070,12 @@ Do { $Variables.MinersNeedingPowerConsumptionMeasurement = @($Miners.Where({ $_.Available -and $_.MeasurePowerConsumption }) | Sort-Object -Property Name -Unique) # ProfitabilityThreshold check - OK to run miners? + $Miners.ForEach({ $_.Best = $false }) If ($Variables.DonationRunning -or $Variables.MinersNeedingBenchmark -or $Variables.MinersNeedingPowerConsumptionMeasurement -or (-not $Config.CalculatePowerCost -and $Variables.MiningEarning -ge ($Config.ProfitabilityThreshold / $Variables.Rates.BTC.($Config.MainCurrency))) -or ($Config.CalculatePowerCost -and $Variables.MiningProfit -ge ($Config.ProfitabilityThreshold / $Variables.Rates.BTC.($Config.MainCurrency)))) { - $MinersBestPerDeviceCombo.ForEach({ $_.Best = $true }) + $MinersBest.ForEach({ $_.Best = $true }) If ($Variables.Rates.($Config.PayoutCurrency)) { 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 -Property { $_.DeviceNames } | Sort-Object -Property Name).ForEach({ "$($_.Name): $($_.Count)" })) -join ', ')]" }))" + $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.MainCurrency)), $Config.MainCurrency @@ -1079,7 +1088,7 @@ Do { 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 -Property { $_.DeviceNames } | Sort-Object -Property Name).ForEach({ "$($_.Name): $($_.Count)" })) -join ', ')]" }))" + $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" @@ -1095,10 +1104,10 @@ Do { 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 ($MinersBestPerDeviceCombo.Count -ne 1) { "s" }): n/a; Base: {1:n} {0} ({2:n2} W)]" -f $Config.MainCurrency, ($Variables.BasePowerCost * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)), $Variables.PowerConsumptionIdleSystemW + $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.MainCurrency, ($Variables.BasePowerCost * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)), $Variables.PowerConsumptionIdleSystemW } ElseIf ($Variables.MiningPowerConsumption -gt 0) { - $Variables.Summary += "Power Cost / day: {1:n} {0} [Miner$(If ($MinersBestPerDeviceCombo.Count -ne 1) { "s" }): {2:n} {0} ({3:n2} W); Base: {4:n} {0} ({5:n2} W)]" -f $Config.MainCurrency, (($Variables.MiningPowerCost + $Variables.BasePowerCost) * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)), ($Variables.MiningPowerCost * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)), $Variables.MiningPowerConsumption, ($Variables.BasePowerCost * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)), $Variables.PowerConsumptionIdleSystemW + $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.MainCurrency, (($Variables.MiningPowerCost + $Variables.BasePowerCost) * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)), ($Variables.MiningPowerCost * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)), $Variables.MiningPowerConsumption, ($Variables.BasePowerCost * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)), $Variables.PowerConsumptionIdleSystemW } Else { $Variables.Summary += "Power Cost / day: n/a [Miner: n/a; Base: {1:n} {0} ({2:n2} W)]" -f $Config.MainCurrency, ($Variables.BasePowerCost * $Variables.Rates.BTC.($Config.MainCurrency)), $Variables.PowerConsumptionIdleSystemW @@ -1120,7 +1129,7 @@ Do { } Else { # Mining earning/profit is below threshold - $MinersBestPerDeviceCombo = [Miner[]]@() + $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.MainCurrency, (($Variables.MiningEarning - $(If ($Config.CalculatePowerCost) { $Variables.MiningPowerCost - $Variables.BasePowerCost } Else { 0 })) * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)), $Config.ProfitabilityThreshold Write-Message -Level Warn ($Variables.Summary -replace '
', ' ' -replace ' / day', '/day') If ($Variables.Rates) { @@ -1134,10 +1143,10 @@ Do { } } - If (-not $MinersBestPerDeviceCombo -and $Miners) { $Miners.ForEach({ $_.Best = $false }) } + If (-not $MinersBest -and $Miners) { $Miners.ForEach({ $_.Best = $false }) } # Stop running miners - ForEach ($Miner in @($Miners.Where({ $_.Status -in @([MinerStatus]::DryRun, [MinerStatus]::Running) }) | Sort-Object -Property { $_.DeviceNames })) { + ForEach ($Miner in @($Miners.Where({ $_.Status -in @([MinerStatus]::DryRun, [MinerStatus]::Running) }) | Sort-Object { [String]$_.DeviceNames })) { If ($Miner.Status -eq [MinerStatus]::Running -and $Miner.GetStatus() -ne [MinerStatus]::Running) { $Miner.StatusInfo = "'$($Miner.Info)' exited unexpectedly" $Miner.SetStatus([MinerStatus]::Failed) @@ -1148,7 +1157,7 @@ Do { } 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 $Miner.SideIndicator -eq "<=" -or $Variables.NewMiningStatus -ne "Running" -or -not $Miner.Best) { + 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 @@ -1214,8 +1223,8 @@ Do { # Update data in API $Variables.Miners = [Miner[]]@($Miners.Where({ $_.SideIndicator -ne "<=" })) - $Variables.MinersBestPerDeviceCombo = $MinersBestPerDeviceCombo - Remove-Variable Miners, MinersBestPerDeviceCombo -ErrorAction Ignore + $Variables.MinersBest = $MinersBest + Remove-Variable Miners, MinersBest -ErrorAction Ignore $Variables.Miners.ForEach({ $_.PSObject.Properties.Remove("SideIndicator") }) @@ -1245,7 +1254,7 @@ Do { Continue } - If (-not $Variables.MinersBestPerDeviceCombo) { + 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 @@ -1261,7 +1270,7 @@ Do { # Optional delay to avoid blue screens Start-Sleep -Seconds $Config.Delay - ForEach ($Miner in $Variables.MinersBestPerDeviceCombo | Sort-Object -Property { $_.DeviceNames }) { + ForEach ($Miner in $Variables.MinersBest | Sort-Object { [String]$_.DeviceNames }) { If ($Miner.Status -ne [MinerStatus]::DryRun -and $Miner.GetStatus() -ne [MinerStatus]::Running) { If ($Miner.Status -ne [MinerStatus]::DryRun) { # Launch prerun if exists @@ -1299,7 +1308,7 @@ Do { } # Add extra time when CPU mining and miner requires DAG creation - If ($Miner.Workers.Pool.DAGSizeGiB -and $Variables.MinersBestPerDeviceCombo.Type -contains "CPU" -and -not $Config.DryRun) { $Miner.WarmupTimes[0] += 15 <# seconds #>} + If ($Miner.Workers.Pool.DAGSizeGiB -and $Variables.MinersBest.Type -contains "CPU" -and -not $Config.DryRun) { $Miner.WarmupTimes[0] += 15 <# seconds #>} # Add extra time when notebook runs on battery If ($Miner.Workers.Pool.DAGSizeGiB -and (Get-CimInstance Win32_Battery).BatteryStatus -eq 1) { $Miner.WarmupTimes[0] += 90 <# seconds #>} @@ -1341,14 +1350,14 @@ Do { } } - ForEach ($Miner in $Variables.MinersBestPerDeviceCombo | Sort-Object -Property { $_.DeviceNames }) { + ForEach ($Miner in $Variables.MinersBest | Sort-Object { [String]$_.DeviceNames }) { 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 -Property { $_.DeviceNames }).ForEach( + ($Variables.Miners.Where({ $_.Available }) | Group-Object { [String]$_.DeviceNames }).ForEach( { # Display benchmarking progress If ($MinersDeviceGroupNeedingBenchmark = $_.Group.Where({ $_.Benchmark })) { @@ -1369,7 +1378,7 @@ Do { $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime().AddSeconds($Config.Interval) } - $Variables.RunningMiners = @($Variables.MinersBestPerDeviceCombo | Sort-Object -Descending -Property Benchmark, MeasurePowerConsumption) + $Variables.RunningMiners = @($Variables.MinersBest | Sort-Object -Descending -Property Benchmark, MeasurePowerConsumption) $Variables.BenchmarkingOrMeasuringMiners = [Miner[]]@() $Variables.FailedMiners = [Miner[]]@() @@ -1456,9 +1465,9 @@ Do { $Variables.RunningMiners = @($Variables.RunningMiners.Where({ $_ -notin $Variables.FailedMiners })) $Variables.BenchmarkingOrMeasuringMiners = @($Variables.RunningMiners.Where({ $_.Activated -gt 0 -and ($_.Benchmark -or $_.MeasurePowerConsumption) })) - - If ($Variables.FailedMiners -and -not $Variables.BenchmarkingOrMeasuringMiners) { - # A miner crashed and we're not benchmarking, exit loop immediately + + If ($Variables.FailedMiners) { + # A miner crashed , exit loop immediately $Variables.EndCycleMessage = " prematurely (miner failed)" } ElseIf ($Variables.BenchmarkingOrMeasuringMiners.Where({ $_.Data.Count -ge $_.MinDataSample })) { @@ -1477,11 +1486,11 @@ Do { While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 } # Exit loop when - # - a miner crashed and no other miners are benchmarking or measuring power consumption - # - a benchmarking miner haa collected enough samples + # - a miner crashed + # - a benchmarking miner has collected enough samples # - WarmupTimes[0] is reached and no readout from miner - # - Interval time is over - } While ($variables.NewMiningStatus -eq "Running" -and -not $Variables.EndCycleMessage -and ([DateTime]::Now.ToUniversalTime() -le $Variables.EndCycleTime -or $Variables.BenchmarkingOrMeasuringMiners)) + # - when not benchmnarking: Interval time is over + } While ($Variables.NewMiningStatus -eq "Running" -and -not $Variables.EndCycleMessage -and ([DateTime]::Now.ToUniversalTime() -le $Variables.EndCycleTime -or $Variables.BenchmarkingOrMeasuringMiners)) Get-Job -State "Completed" | Receive-Job | Out-Null Get-Job -State "Completed" | Remove-Job -Force -ErrorAction Ignore | Out-Null @@ -1504,7 +1513,7 @@ Do { $Variables.EndCycleTime = $Variables.StartCycleTime.AddSeconds($Config.Interval) # Reset timers Continue } - + 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 @@ -1515,8 +1524,24 @@ Do { $Error.Clear() [System.GC]::Collect() - If ($Variables.IdleDetectionRunspace.MiningStatus -ne "Suspended") { Write-Message -Level Info "Ending cycle$($Variables.EndCycleMessage)." } - $Variables.RestartCycle = $true -} While ($Variables.NewMiningStatus -eq "Running") \ No newline at end of file + If ($Variables.NewMiningStatus -eq "Running" -and $Variables.IdleDetectionRunspace.MiningStatus -ne "Suspended") { Write-Message -Level Info "Ending cycle$($Variables.EndCycleMessage)." } + +} While ($Variables.NewMiningStatus -eq "Running") + +# Stop all running miners +ForEach ($Miner in $Variables.Miners.Where({ $_.Status -in @([MinerStatus]::DryRun, [MinerStatus]::Running) })) { + $Miner.SetStatus([MinerStatus]::Idle) + $Variables.Devices.Where({ $_.Name -in $Miner.DeviceNames }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) +} +Remove-Variable Miner -ErrorAction Ignore + +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 + +If ($Variables.IdleDetectionRunspace.MiningStatus -ne "Suspended") { Write-Message -Level Info "Ending cycle$($Variables.EndCycleMessage)." } \ No newline at end of file diff --git a/Includes/Core.ps1.bak b/Includes/Core.ps1.bak new file mode 100644 index 00000000..64d579fc --- /dev/null +++ b/Includes/Core.ps1.bak @@ -0,0 +1,1546 @@ +<# +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.2.10 +Version date: 2024/06/20 +#> + +using module .\Include.psm1 + +$ErrorLogFile = "Logs\Error.txt" + +If ($Config.Transcript) { Start-Transcript -Path ".\Debug\$((Get-Item $MyInvocation.MyCommand.Path).BaseName)-Transcript_$(Get-Date -Format "yyyy-MM-dd_HH-mm-ss").log" } + +Do { + Try { + $Variables.EndCycleMessage = "" + + # Set master timer + $Variables.Timer = [DateTime]::Now.ToUniversalTime() + + (Get-ChildItem -Path ".\Includes\MinerAPIs" -File).ForEach({ . $_.FullName }) + + # Internet connection must be available + If ($NetRoute = ((Get-NetRoute).Where({ $_.DestinationPrefix -eq "0.0.0.0/0" }) | Get-NetIPInterface).Where({ $_.ConnectionState -eq "Connected" })) { + $MyIP = ((Get-NetIPAddress -InterfaceIndex $NetRoute.ifIndex -AddressFamily IPV4).IPAddress) + } + If ($MyIP) { + $Variables.MyIP = $MyIP + Remove-Variable MyIp, NetRoute -ErrorAction Ignore + } + Else { + $Variables.Summary = "No internet connection - will retry in 60 seconds..." + Write-Message -Level Error $Variables.Summary + $Variables.MyIP = $null + $Variables.RefreshNeeded = $true + $Variables.RestartCycle = $true + + #Stop all miners + ForEach ($Miner in $Variables.Miners.Where({ $_.Status -ne [MinerStatus]::Idle })) { + $Miner.SetStatus([MinerStatus]::Idle) + $Variables.Devices.Where({ $_.Name -in $Miner.DeviceNames }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) + } + Remove-Variable Miner -ErrorAction Ignore + $Variables.RunningMiners = [Miner[]]@() + $Variables.BenchmarkingOrMeasuringMiners = [Miner[]]@() + $Variables.FailedMiners = [Miner[]]@() + $Variables.MinersBest = [Miner[]]@() + $Variables.MiningEarning = $Variables.MiningProfit = $Variables.MiningPowerCost = $Variables.MiningPowerConsumption = [Double]0 + 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.UseMinerTweaks = $Variables.IsLocalAdmin -and $Config.UseMinerTweaks + + Write-Message -Level Info "Started new cycle." + + # Use values from config + $Variables.PoolName = $Config.PoolName + $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 + # Remove model information from devices -> will create only one miner instance + If (-not $Config.MinerInstancePerDeviceModel) { $_.Model = $_.Vendor } + } + } + ) + + # Skip some stuff when previous cycle was shorter than half of what it should + If ((-not $Variables.Pools -or $Variables.EndCycleTime) -and (-not $Variables.Miners -or -not $Variables.BeginCycleTime -or (Compare-Object @($Config.PoolName | Select-Object) @($Variables.PoolName | Select-Object)) -or $Variables.BeginCycleTime.AddSeconds([Math]::Floor($Config.Interval / 2)) -lt [DateTime]::Now.ToUniversalTime() -or ((Compare-Object @($Config.ExtraCurrencies | Select-Object) @($Variables.AllCurrencies | Select-Object)).Where({ $_.SideIndicator -eq "<=" })))) { + $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 | Select-Object -ExpandProperty Maximum)) + + # Set minimum Watchdog count 3 + $Variables.WatchdogCount = (3, $Config.WatchdogCount | Measure-Object -Maximum | Select-Object -ExpandProperty 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-NMVersion } + + # Load unprofitable algorithms + Try { + If (-not $Variables.UnprofitableAlgorithms -or (Get-ChildItem -Path ".\Data\UnprofitableAlgorithms.json").LastWriteTime -gt $Variables.Timer.AddSeconds( - $Config.Interval)) { + $Variables.UnprofitableAlgorithms = Get-Content -Path ".\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))) + } + } + } + + If ($Variables.DonationStart -and [DateTime]::Now -ge $Variables.DonationStart) { + If (-not $Variables.DonationEnd) { + $Variables.DonationStart = Get-Date + # 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 + $Brains = $Variables.Brains.psBase.Keys # Error 'Collection was modified; enumeration operation may not execute' + [Void](Stop-Brain @($Brains.Where({ $_ -notin @(Get-PoolBaseName $Variables.PoolName) }))) + Remove-Variable Brains + [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 + + # Load currency exchange rates + [Void](Get-Rate) + + # Get DAG data + [Void](Update-DAGdata) + + # Core suspended with P in MainLoop + While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 } + + # Power cost preparations + If ($Variables.CalculatePowerCost = $Config.CalculatePowerCost) { + If ($Variables.EnabledDevices.Count -ge 1) { + # HWiNFO64 verification + $RegKey = "HKCU:\Software\HWiNFO64\VSB" + If ($RegValue = Get-ItemProperty -Path $RegKey -ErrorAction Ignore) { + If ([String]$Variables.HWInfo64RegValue -eq [String]$RegValue) { + Write-Message -Level Warn "Power consumption data in registry has not been updated [HWiNFO64 not running???] - disabling power consumption and profit calculations." + $Variables.CalculatePowerCost = $false + } + Else { + $Variables.HWInfo64RegValue = $RegValue + $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 ($_ -in $Variables.EnabledDevices.Name -and -not $PowerConsumptionData.$_) { Write-Message -Level Warn "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 + } + Remove-Variable DeviceNamesMissingSensor + + # Enable read power consumption for configured devices + $Variables.EnabledDevices.ForEach({ $_.ReadPowerConsumption = $_.Name -in $PowerConsumptionData.psBase.Keys }) + Remove-Variable ConfiguredPowerConsumption, DeviceName, PowerConsumptionData -ErrorAction Ignore + } + } + Else { + Write-Message -Level Warn "Cannot read power consumption data from registry [Key '$RegKey' does not exist - HWiNFO64 not running???] - disabling power consumption and profit calculations." + $Variables.CalculatePowerCost = $false + } + Remove-Variable RegKey, RegValue -ErrorAction Ignore + } + Else { $Variables.CalculatePowerCost = $false } + } + Else { + $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.MainCurrency)) + + # 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[$_] -and $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 + $Variables.PoolsExpired = @($Variables.Pools.Where({ $_.Updated -lt [DateTime]::Now.ToUniversalTime().AddDays(-1) })) + $Variables.Pools = @($Variables.Pools.Where({ $_.Updated -ge [DateTime]::Now.ToUniversalTime().AddDays(-1) })) + + # Remove de-configured pools + $PoolsDeconfiguredCount = @($Variables.Pools.Where({ $_.Variant -notin $Variables.PoolName })).Count + + If ($Pools = @(Compare-Object @($Variables.PoolsNew | Select-Object) @($Variables.Pools.Where({ $_.Variant -in $Variables.PoolName }) | Select-Object) -Property Algorithm, Currency, 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 -notmatch $Variables.RegexAlgoHasDAG) { + $_.AlgorithmVariant = $_.Algorithm + } + ElseIf (-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 + $_.AlgorithmVariant = "$($_.Algorithm)($([Math]::Ceiling($_.DAGSizeGiB))GiB)" + } + 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 + $_.AlgorithmVariant = "$($_.Algorithm)($([Math]::Ceiling($_.DAGSizeGiB))GiB)" + } + Else { + $_.AlgorithmVariant = $_.Algorithm + } + } + ) + + $MaxPoolAgeMinutes = $Config.SyncWindow * $Config.SyncWindow * $Config.SyncWindow * ($Variables.CycleStarts[-1] - $Variables.CycleStarts[0]).TotalMinutes + $Pools.Where({ $_.Updated -lt $Variables.CycleStarts[0] }).ForEach( + { + # Pool data is older than earliest CycleStart + If ([Math]::Floor(($Variables.CycleStarts[-1] - $_.Updated).TotalMinutes) -gt $MaxPoolAgeMinutes) { $_.Reasons.Add("Data too old") } + Else { $_.Price_Bias *= [Math]::Pow(0.9, ($Variables.CycleStarts[0] - $_.Updated).TotalMinutes) } + } + ) + Remove-Variable MaxPoolAgeMinutes + + # No username or wallet + $Pools.Where({ -not $_.User }).ForEach({ $_.Reasons.Add("No username or wallet") }) + # 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") }) + $Pools.Where({ $_.Price_Bias -eq 0 }).ForEach({ $_.Reasons.Add("Price bias -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 | Select-Object -ExpandProperty 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 + } + 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 $($_.BaseName) 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 + If ($Config.SSL -eq "Never") { $Pools.Where({ -not $_.PoolPorts[0] }).ForEach({ $_.Reasons.Add("Non-SSL port not available (Config.SSL -eq 'Never')") }) } + If ($Config.SSL -eq "Always") { $Pools.Where({ -not $_.PoolPorts[1] }).ForEach({ $_.Reasons.Add("SSL port not available (Config.SSL -eq 'Always')") }) } + # SSL Allow selfsigned certificate + If (-not $Config.SSLAllowSelfSignedCertificate) { $Pools.Where({ $_.SSLSelfSignedCertificate }).ForEach({ $_.Reasons.Add("Pool uses self signed certificate (Config.SSLAllowSelfSignedCertificate -eq '`$false')") }) } + # 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 + If ($Config.Watchdog) { + $PoolWatchdogMessages = @() + # We assume that miner is up and running, so watchdog timer is not relevant + If ($RelevantWatchdogTimers = $Variables.WatchdogTimers.Where({ $_.MinerName -notin $Variables.RunningMiners })) { + # Only pools with a corresponding watchdog timer object are of interest + $RelevantPools = $Pools.Where({ $_.Name -in @($RelevantWatchdogTimers.PoolName) }) + + # Add miner reason "Pool suspended by watchdog 'all algorithms'" + ($RelevantWatchdogTimers | Group-Object -Property PoolName).ForEach( + { + If ($_.Count -ge 3 * $Variables.WatchdogCount * ($_.Group.DeviceNames | Sort-Object -Unique).Count) { + $Group = $_.Group + If ($PoolsToSuspend = $RelevantPools.Where({ -not $_.Reasons }).Where({ $_.Name -eq $Group[0].PoolName })) { + $PoolsToSuspend.ForEach({ $_.Reasons.Add("Pool suspended by watchdog [all algorithms]") }) + $Message = "Pool '$($Group[0].PoolName) [all algorithms]' is suspended by watchdog until $(($Group.Kicked | Sort-Object -Top 1).AddSeconds($Variables.WatchdogReset).ToLocalTime().ToString("T"))." + Write-Message -Level Warn $Message + $PoolWatchdogMessages += $Message + } + } + } + ) + Remove-Variable Algorithms, Group, PoolsToSuspend -ErrorAction Ignore + + # Add miner reason "Pool suspended by watchdog 'Algorithm [Algorithm]'" + ($RelevantWatchdogTimers | Group-Object -Property PoolName, Algorithm).ForEach( + { + If ($_.Count -ge 2 * $Variables.WatchdogCount * ($_.Group.DeviceNames | Sort-Object -Unique).Count) { + $Group = $_.Group + If ($PoolsToSuspend = $RelevantPools.Where({ -not $_.Reasons }).Where({ $_.Name -eq $Group[0].PoolName -and $_.Algorithm -eq $Group[0].Algorithm })) { + $PoolsToSuspend.ForEach({ $_.Reasons.Add("Pool suspended by watchdog [Algorithm $($Group[0].Algorithm)]") }) + $Message = "Pool '$($Group[0].PoolName) [Algorithm $($Group[0].Algorithm)]' is suspended by watchdog until $(($Group.Kicked | Sort-Object -Top 1).AddSeconds($Variables.WatchdogReset).ToLocalTime().ToString("T"))." + Write-Message -Level Warn $Message + $PoolWatchdogMessages += $Message + } + } + } + ) + Remove-Variable Algorithms, Group, PoolsToSuspend, RelevantPools, RelevantWatchdogTimers -ErrorAction Ignore + } + } + + # 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") }) + } + $Pools.Where({ $_.Reasons }).ForEach({ $_.Reasons = $_.Reasons | Sort-Object -Unique }) + + 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 $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 ($_.Name -in $Variables.PoolNamesToKeepBalancesAlive) { $_.Available = $true; $_.Prioritize = $true; $_.Reasons = [System.Collections.Generic.List[String]]@("Prioritized by BalancesKeepAlive") } + Else { $_.Reasons.Add("BalancesKeepAlive prioritizes other pools") } + } + ) + } + } + + # 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 + } + Else { + Write-Message -Level Info "Using $($Variables.Pools.Count) pool$(If ($Variables.Pools.Count -ne 1) { "s" }) from previous cycle." + $PoolWatchdogMessages.ForEach({ Write-Message -Level Warn $_ }) + $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime().AddSeconds([Math]::Floor($Config.Interval / 2)) + } + + # Ensure we get the hashrate for running miners prior looking for best miner + ForEach ($Miner in $Variables.MinersBest | Sort-Object { [String]$_.DeviceNames }) { + If ($Miner.DataReaderJob.HasMoreData -and $Miner.Status -ne [MinerStatus]::DryRun) { + If ($Samples = @($Miner.DataReaderJob | Receive-Job | Select-Object)) { + $Sample = $Samples[-1] + If ([Math]::Floor(($Sample.Date - $Miner.ValidDataSampleTimestamp).TotalSeconds) -ge 0) { $Miner.Data += $Samples } + $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 + } + $Miner.Data = @($Miner.Data | Select-Object -Last ($Miner.MinDataSample * 5)) # Reduce data to MinDataSample * 5 + + If ($Miner.Status -in @([MinerStatus]::Running, [MinerStatus]::DryRun)) { + 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 + $Variables.WatchdogTimers += [PSCustomObject]@{ + Algorithm = $Worker.Pool.Algorithm + AlgorithmVariant = $Worker.Pool.AlgorithmVariant + DeviceNames = $Miner.DeviceNames + Kicked = [DateTime]::Now.ToUniversalTime() + MinerBaseName = $Miner.BaseName + MinerName = $Miner.Name + MinerVersion = $Miner.Version + PoolName = $Worker.Pool.Name + PoolRegion = $Worker.Pool.Region + PoolVariant = $Worker.Pool.Variant + } + } + } + Remove-Variable WatchdogTimer, Worker -ErrorAction Ignore + } + If ($Config.BadShareRatioThreshold -gt 0) { + If ($LatestMinerSharesData = ($Miner.Data | Select-Object -Last 1).Shares) { + ForEach ($Algorithm in $Miner.Algorithms) { + If ($LatestMinerSharesData.$Algorithm -and $LatestMinerSharesData.$Algorithm[1] -gt 0 -and $LatestMinerSharesData.$Algorithm[3] -gt [Math]::Floor(1 / $Config.BadShareRatioThreshold) -and $LatestMinerSharesData.$Algorithm[1] / $LatestMinerSharesData.$Algorithm[3] -gt $Config.BadShareRatioThreshold) { + $Miner.StatusInfo = "'$($Miner.Info)' stopped. Too many bad shares (Shares Total = $($LatestMinerSharesData.$Algorithm[3]), Rejected = $($LatestMinerSharesData.$Algorithm[1]))" + $Miner.SetStatus([MinerStatus]::Failed) + $Variables.Devices.Where({ $_.Name -in $Miner.DeviceNames }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) + } + } + } + Remove-Variable Algorithm, LatestMinerSharesData -ErrorAction Ignore + } + } + Else { + $Miner.StatusInfo = "'$($Miner.Info)' exited unexpectedly" + $Miner.SetStatus([MinerStatus]::Failed) + $Variables.Devices.Where({ $_.Name -in $Miner.DeviceNames }).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 + $LatestMinerSharesData = ($Miner.Data[-1]).Shares + If ($Miner.Data.Count -gt $Miner.MinDataSample -and -not $Miner.Benchmark -and $Config.SubtractBadShares -and $LatestMinerSharesData.$Algorithm -gt 0) { # Need $Miner.MinDataSample shares before adjusting hashrate + $Factor = (1 - $LatestMinerSharesData.$Algorithm[1] / $LatestMinerSharesData.$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 total: $($LatestMinerSharesData.$Algorithm[2]), rejected: $($LatestMinerSharesData.$Algorithm[1])])" })$(If ($Miner.Benchmark) { " [Benchmark done] ($($Miner.Data.Count) Sample$(If ($Miner.Data.Count -ne 1) { "s" }))" })." + $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({ $_.Name -in $Miner.DeviceNames }).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$(If ($Miner.MeasurePowerConsumption) { " [Power consumption measurement done] ($($Miner.Data.Count) Sample$(If ($Miner.Data.Count -ne 1) { "s" }))" })." + } + 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({ $_.Name -in $Miner.DeviceNames }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) + } + } + } + Remove-Variable Algorithm, CollectedHashrateFactor, CollectedPowerConsumption, LatestMinerSharesData, Miner_Hashrates, Miner_PowerConsumption, Stat, Stat_Name, Stat_Span, 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 { + & $_.FullName + } + Catch { + Write-Message -Level Error "Error in 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 Info "$(($Miner.Name -split '-')[0..2] -join '-') {$($Miner.Workers.ForEach({ "$($_.Pool.AlgorithmVariant)$(If ($_.Pool.Currency) { "[$($_.Pool.Currency)]" })", $_.Pool.Name -join '@' }) -join ' & ')}$(If (($Miner.Name -split '-')[4]) { " (Dual Intensity $(($Miner.Name -split '-')[4]))" })" + If ($Config.UseAllPoolAlgorithmCombinations) { $Miner.Name = $Miner.Info -replace "\{", "(" -replace "\}", ")" -replace " " } + $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 + } + 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 Name + ($Miners.Where({ $_.SideIndicator -ne "<=" }) | Group-Object -Property Name).ForEach( + { + $Name = $_.Name + $MinersNewGroup = $MinersNewGroups.Where({ $Name -eq $_.Name }).Group + $_.Group.ForEach( + { + Try { + $Miner = $_ + If ($_.KeepRunning = $_.Status -in @([MinerStatus]::Running, [MinerStatus]::DryRun) -and ($Variables.DonationRunning -or $_.ContinousCycle -lt $Config.MinCycle)) { # Minimum numbers of full cycles not yet reached + $_.Restart = $false + } + Else { + If ($_.SideIndicator -eq "=>") { + $_.CommandLine = $_.GetCommandLine().Replace("$PWD\", "") + # 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] + $_.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().Replace("$PWD\", "") + $_.Port = $Miner.Port + } + $_.PrerequisitePath = $Miner.PrerequisitePath + $_.PrerequisiteURI = $Miner.PrerequisiteURI + $_.WarmupTimes = $Miner.WarmupTimes + $_.Workers = $Miner.Workers + } + } + $DeviceNames = $_.DeviceNames + $_.Devices = $MinerDevices.Where({ $_.Name -in $DeviceNames }) + If ($_.ReadPowerConsumption -ne [Boolean]($_.Devices.ReadPowerConsumption -notcontains $false)) { + $_.Restart = $true + } + $_.Refresh($Variables.PowerCostBTCperW, $Config) + } + Catch { + Write-Message -Level Error "Failed to update miner '$($Miner.Name)': Error $_" + "$(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 | Select-Object -ExpandProperty 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)") } + ) + } + } + ) + } + + $Bias = If ($Variables.CalculatePowerCost -and -not $Config.IgnorePowerCost) { "Profit_Bias" } Else { "Earning_Bias" } + If ($Config.UseAllPoolAlgorithmCombinations) { + # Add reason 'Not best miner in algorithm family' + ($Miners.Where({ -not $_.Reasons }) | Group-Object { [String]$_.DeviceNames }, { [String]$_.Workers.Pool.Name }, { [String]$_.Workers.Pool.Algorithm }).ForEach( + { + ($_.Group | Select-Object -Skip 1).ForEach( + { + $_.Reasons.Add("Not best miner in algorithm family") + } + ) + } + ) + } + + $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 += $_ + } + ) + + # 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.RunningMiners.Name })) { + # Only miners with a corresponding watchdog timer object are of interest + $RelevantMiners = $Variables.Miners.Where({ -not $_.Reasons -and $_.BaseName -in @($Variables.WatchdogTimers.MinerBaseName) -and $_.Version -in @($Variables.WatchdogTimers.MinerVersion) }) + + # Add miner reason 'Miner suspended by watchdog [all algorithms]' + ($RelevantWatchdogTimers | Group-Object { "$(($_.MinerName -split '-')[0..1] -join '-')" }).ForEach( + { + If ($_.Count -gt 2 * $Variables.WatchdogCount * (($_.Group[0].MinerName -split '-')[3] -split '&').Count * ($_.Group.DeviceNames | Sort-Object -Unique).Count) { + $Group = $_.Group + If ($MinersToSuspend = $RelevantMiners.Where({ (($_.Name -split '-')[0..1] -join '-') -eq (($Group[0].MinerName -split '-')[0..1] -join '-') })) { + $MinersToSuspend.ForEach({ $_.Reasons.Add("Miner suspended by watchdog [all algorithms & all devices]") }) + Write-Message -Level Warn "Miner '$(($Group[0].MinerName -split '-')[0..1] -join '-') [all algorithms & all devices]' is suspended by watchdog until $(($Group.Kicked | Sort-Object -Top 1).AddSeconds($Variables.WatchdogReset).ToLocalTime().ToString("T"))." + } + } + } + ) + Remove-Variable Algorithms, Group, MinersToSuspend -ErrorAction Ignore + + # Add miner reason 'Miner suspended by watchdog [Algorithm [Algorithm]]' + ($RelevantWatchdogTimers | Group-Object { "$(($_.MinerName -split '-')[0..2] -join '-')" }).ForEach( + { + If ($_.Count -ge 2 * $Variables.WatchdogCount * (($_.Group[0].MinerName -split '-')[3] -split '&').Count) { + $Group = $_.Group + If ($MinersToSuspend = $RelevantMiners.Where({ (($_.Name -split '-')[0..2] -join '-') -eq (($Group[0].MinerName -split '-')[0..2] -join '-') })) { + $MinersToSuspend.ForEach({ $_.Reasons.Add("Miner suspended by watchdog [all algorithms]") }) + Write-Message -Level Warn "Miner '$(($Group[0].MinerName -split '-')[0..2] -join '-') [all algorithms]' is suspended by watchdog until $(($Group.Kicked | Sort-Object -Top 1).AddSeconds($Variables.WatchdogReset).ToLocalTime().ToString("T"))." + } + } + } + ) + Remove-Variable Algorithms, Group, MinersToSuspend -ErrorAction Ignore + + # Add miner reason 'Miner suspended by watchdog [Algorithm [Algorithm]]' + ($RelevantWatchdogTimers.Where({ $_.Algorithm -eq $_.AlgorithmVariant }) | Group-Object -Property MinerName, Algorithm).ForEach( + { + If ($_.Count -ge $Variables.WatchdogCount) { + $Group = $_.Group + If ($MinersToSuspend = $RelevantMiners.Where({ (($_.Name -split '-')[0..2] -join '-') -eq (($Group[0].MinerName -split '-')[0..2] -join '-') }).Where({ [String]$_.Algorithms -eq [String](($Group[0].MinerName -split '-')[3] -split '&' -replace '\(.*')})) { + $Algorithms = $MinersToSuspend[0].Workers.Pool.Algorithm -join '&' + $MinersToSuspend.ForEach({ $_.Reasons.Add("Miner suspended by watchdog [Algorithm $Algorithms]") }) + Write-Message -Level Warn "Miner '$(($Group[0].MinerName -split '-')[0..2] -join '-') [$Algorithms]' is suspended by watchdog until $(($Group.Kicked | Sort-Object -Top 1).AddSeconds($Variables.WatchdogReset).ToLocalTime().ToString("T"))." + } + } + } + ) + Remove-Variable Algorithms, Group, MinersToSuspend -ErrorAction Ignore + + # Add miner reason 'Miner suspended by watchdog [Algorithm variant [AlgorithmVariant]' + ($RelevantWatchdogTimers.Where({ $_.Algorithm -ne $_.AlgorithmVariant }) | Group-Object -Property MinerName, AlgorithmVariant).ForEach( + { + If ($_.Count -ge $Variables.WatchdogCount) { + $Group = $_.Group + If ($MinersToSuspend = $RelevantMiners.Where({ $_.Name -eq $Group[0].MinerName })) { + $Algorithms = $MinersToSuspend[0].Workers.Pool.AlgorithmVariant -join '&' + $MinersToSuspend.ForEach({ $_.Reasons.Add("Miner suspended by watchdog [Algorithm variant $Algorithms]") }) + Write-Message -Level Warn "Miner '$(($Group[0].MinerName -split '-')[0..2] -join '-') [$Algorithms]' is suspended by watchdog until $(($Group.Kicked | Sort-Object -Top 1).AddSeconds($Variables.WatchdogReset).ToLocalTime().ToString("T"))." + } + } + } + ) + Remove-Variable Algorithms, Group, MinersToSuspend, RelevantMiners, 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({ $_.Reasons }).Count) miner$(If ($Miners.Where({ $_.Reasons }).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 ($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..." + $Downloader_Parameters = @{ + 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 $Downloader_Parameters -ThrottleLimit (2 * $Variables.Devices.Count + 2) + Remove-Variable Downloader_Parameters + } + ElseIf (-not $Miners.Where({ $_.Available })) { + Write-Message -Level Info "Waiting 30 seconds for downloader to install binaries..." + } + } + Remove-Variable DownloadList + + # Open firewall ports for all miners + If ($Config.OpenFirewallPorts) { + If (Get-Command "Get-MpPreference") { + If ((Get-Command "Get-MpComputerStatus") -and (Get-MpComputerStatus)) { + If (Get-Command "Get-NetFirewallRule") { + If ($MissingMinerFirewallRules = (Compare-Object @(Get-NetFirewallApplicationFilter | Select-Object -ExpandProperty Program -Unique) @($Miners | Select-Object -ExpandProperty Path -Unique) -PassThru).Where({ $_.SideIndicator -eq "=>" })) { + Start-Process "pwsh" ("-Command Import-Module NetSecurity; ('$($MissingMinerFirewallRules | 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 + } + Remove-Variable MissingMinerFirewallRules + } + } + } + } + + 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) { " profit (power cost $($Config.MainCurrency) $($Variables.PowerPricekWh)/kW⋅h)" } Else { " earning" })..." + + If ($Miners.Where({ $_.Available }).Count -eq 1) { + $MinersBest = $Variables.MinersBestPerDevice = $Variables.MinersOptimal = $Miners.Where({ $_.Available }) + } + Else { + # 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 -and -not $_.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( + { + $MinerDeviceNames = $_.Combination + [PSCustomObject]@{ + Combination = $MinerDeviceNames.ForEach( + { + $MinerDeviceNameCount = $_.DeviceNames.Count + [Regex]$MinerDeviceRegex = "^(" + (($_.DeviceNames.ForEach({ [Regex]::Escape($_) })) -join '|') + ")$" + $Variables.MinersBestPerDevice.Where({ ([Array]$_.DeviceNames -notmatch $MinerDeviceRegex).Count -eq 0 -and ([Array]$_.DeviceNames -match $MinerDeviceRegex).Count -eq $MinerDeviceNameCount }) + } + ) + } + } + ) + ) + # Get smallest $Bias + $SmallestBias = $Variables.MinersBestPerDevice.$Bias | Sort-Object -Top 1 + # Hack: temporarily make all bias positive, following produces wrong sort order when some profits are negative + $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, MinerDeviceCount, MinerDeviceRegex, MinerCombinations, MinerDeviceNameCount, RunningMinerBonusFactor, SmallestBias -ErrorAction Ignore + } + + $Variables.PowerConsumptionIdleSystemW = (($Config.PowerConsumptionIdleSystemW - ($MinersBest.Where({ $_.Type -eq "CPU" }) | Measure-Object PowerConsumption -Sum | Select-Object -ExpandProperty Sum)), 0 | Measure-Object -Maximum | Select-Object -ExpandProperty Maximum) + $Variables.BasePowerCost = [Double]($Variables.PowerConsumptionIdleSystemW / 1000 * 24 * $Variables.PowerPricekWh / $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) + $Variables.MiningEarning = [Double]($MinersBest | Measure-Object Earning_Bias -Sum | Select-Object -ExpandProperty Sum) + $Variables.MiningPowerCost = [Double]($MinersBest | Measure-Object PowerCost -Sum | Select-Object -ExpandProperty Sum) + $Variables.MiningPowerConsumption = [Double]($MinersBest | Measure-Object PowerConsumption -Sum | Select-Object -ExpandProperty Sum) + $Variables.MiningProfit = [Double](($MinersBest | Measure-Object Profit_Bias -Sum | Select-Object -ExpandProperty Sum) - $Variables.BasePowerCost) + } + Else { + $Variables.PowerConsumptionIdleSystemW = (($Config.PowerConsumptionIdleSystemW), 0 | Measure-Object -Maximum | Select-Object -ExpandProperty Maximum) + $Variables.BasePowerCost = [Double]($Variables.PowerConsumptionIdleSystemW / 1000 * 24 * $Variables.PowerPricekWh / $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) + $Variables.MinersOptimal = $Variables.MinersBestPerDevice = $Variables.MinerDeviceNamesCombinationsss = $MinersBest = [Miner[]]@() + $Variables.MiningEarning = $Variables.MiningProfit = $Variables.MiningPowerCost = $Variables.MiningPowerConsumption = [Double]0 + } + } + + $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? + $Miners.ForEach({ $_.Best = $false }) + If ($Variables.DonationRunning -or $Variables.MinersNeedingBenchmark -or $Variables.MinersNeedingPowerConsumptionMeasurement -or (-not $Config.CalculatePowerCost -and $Variables.MiningEarning -ge ($Config.ProfitabilityThreshold / $Variables.Rates.BTC.($Config.MainCurrency))) -or ($Config.CalculatePowerCost -and $Variables.MiningProfit -ge ($Config.ProfitabilityThreshold / $Variables.Rates.BTC.($Config.MainCurrency)))) { + $MinersBest.ForEach({ $_.Best = $true }) + If ($Variables.Rates.($Config.PayoutCurrency)) { + 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.MainCurrency)), $Config.MainCurrency + } + 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.MainCurrency)), $Config.MainCurrency + } + 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.MainCurrency, ($Variables.BasePowerCost * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)), $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.MainCurrency, (($Variables.MiningPowerCost + $Variables.BasePowerCost) * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)), ($Variables.MiningPowerCost * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)), $Variables.MiningPowerConsumption, ($Variables.BasePowerCost * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)), $Variables.PowerConsumptionIdleSystemW + } + Else { + $Variables.Summary += "Power Cost / day: n/a [Miner: n/a; Base: {1:n} {0} ({2:n2} W)]" -f $Config.MainCurrency, ($Variables.BasePowerCost * $Variables.Rates.BTC.($Config.MainCurrency)), $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.MainCurrency) }).ForEach( + { + $Variables.Summary += "1 $_ = {0:N$(Get-DecimalsFromValue -Value $Variables.Rates.$_.($Config.MainCurrency) -DecimalsMax $Config.DecimalsMax)} $($Config.MainCurrency)   " -f $Variables.Rates.$_.($Config.MainCurrency) + } + ) + } + Else { + $Variables.Summary = "Error:
Could not get BTC exchange rate from min-api.cryptocompare.com" + } + } + 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.MainCurrency, (($Variables.MiningEarning - $(If ($Config.CalculatePowerCost) { $Variables.MiningPowerCost - $Variables.BasePowerCost } Else { 0 })) * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)), $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.MainCurrency) }).ForEach( + { + $Variables.Summary += "1 $_ = {0:N$(Get-DecimalsFromValue -Value $Variables.Rates.$_.($Config.MainCurrency) -DecimalsMax $Config.DecimalsMax)} $($Config.MainCurrency)   " -f $Variables.Rates.$_.($Config.MainCurrency) + } + ) + } + } + + If (-not $MinersBest -and $Miners) { $Miners.ForEach({ $_.Best = $false }) } + + # Stop running miners + ForEach ($Miner in @($Miners.Where({ $_.Status -in @([MinerStatus]::DryRun, [MinerStatus]::Running) }) | Sort-Object { [String]$_.DeviceNames })) { + If ($Miner.Status -eq [MinerStatus]::Running -and $Miner.GetStatus() -ne [MinerStatus]::Running) { + $Miner.StatusInfo = "'$($Miner.Info)' exited unexpectedly" + $Miner.SetStatus([MinerStatus]::Failed) + } + Else { + If ($Miner.Benchmark -or $Miner.MeasurePowerConsumption) { + If ($Miner.Activated -lt 1) { $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 })) + } + } + Remove-Variable WatchdogTimers, Worker -ErrorAction Ignore + $Miner.SetStatus([MinerStatus]::Idle) + } + } + $Variables.Devices.Where({ $_.Name -in $Miner.DeviceNames }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) + } + Remove-Variable Miner, WatchdogTimers, Worker -ErrorAction Ignore + + # Kill stuck miners on subsequent cycles when not in dry run mode + If (-not $Config.DryRun -or $Variables.CycleStarts.Count -eq 1 -or $Variables.MinersNeedingBenchmark -or $Variables.MinersNeedingPowerConsumptionMeasurement) { + $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 + } + ) + 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 = [Miner[]]@($Miners.Where({ $_.SideIndicator -ne "<=" })) + $Variables.MinersBest = $MinersBest + 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 | Sort-Object { [String]$_.DeviceNames }) { + If ($Miner.Status -ne [MinerStatus]::DryRun -and $Miner.GetStatus() -ne [MinerStatus]::Running) { + If ($Miner.Status -ne [MinerStatus]::DryRun) { + # Launch prerun if exists + If ($Miner.Type -eq "AMD" -and (Test-Path -LiteralPath ".\Utils\Prerun\AMDPrerun.bat" -PathType Leaf)) { + Start-Process ".\Utils\Prerun\AMDPrerun.bat" -WorkingDirectory ".\Utils\Prerun" -WindowStyle hidden + } + ElseIf ($Miner.Type -eq "CPU" -and (Test-Path -LiteralPath ".\Utils\Prerun\CPUPrerun.bat" -PathType Leaf)) { + Start-Process ".\Utils\Prerun\CPUPrerun.bat" -WorkingDirectory ".\Utils\Prerun" -WindowStyle hidden + } + ElseIf ($Miner.Type -eq "INTEL" -and (Test-Path -LiteralPath ".\Utils\Prerun\INTELPrerun.bat" -PathType Leaf)) { + Start-Process ".\Utils\Prerun\INTELPrerun.bat" -WorkingDirectory ".\Utils\Prerun" -WindowStyle hidden + } + ElseIf ($Miner.Type -eq "NVIDIA" -and (Test-Path -LiteralPath ".\Utils\Prerun\NVIDIAPrerun.bat" -PathType Leaf)) { + Start-Process ".\Utils\Prerun\NVIDIAPrerun.bat" -WorkingDirectory ".\Utils\Prerun" -WindowStyle hidden + } + $MinerAlgorithmPrerunName = ".\Utils\Prerun\$($Miner.Name)$(If ($Miner.Algorithms.Count -eq 1) { "_$($Miner.Algorithms[0])" }).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 + } + + # Add extra time when CPU mining and miner requires DAG creation + If ($Miner.Workers.Pool.DAGSizeGiB -and $Variables.MinersBest.Type -contains "CPU" -and -not $Config.DryRun) { $Miner.WarmupTimes[0] += 15 <# seconds #>} + # Add extra time when notebook runs on battery + If ($Miner.Workers.Pool.DAGSizeGiB -and (Get-CimInstance Win32_Battery).BatteryStatus -eq 1) { $Miner.WarmupTimes[0] += 90 <# seconds #>} + + If ($Config.DryRun -and -not ($Miner.Benchmark -or $Miner.MeasurePowerConsumption)) { + $Miner.SetStatus([MinerStatus]::DryRun) + } + Else { + $Miner.SetStatus([MinerStatus]::Running) + } + $Variables.Devices.Where({ $_.Name -in $Miner.DeviceNames }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) + + # 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 + 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 | Sort-Object { [String]$_.DeviceNames }) { + 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 full cycle on first loop + $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime().AddSeconds($Config.Interval) + } + + $Variables.RunningMiners = @($Variables.MinersBest | Sort-Object -Descending -Property Benchmark, MeasurePowerConsumption) + $Variables.BenchmarkingOrMeasuringMiners = [Miner[]]@() + $Variables.FailedMiners = [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 { + Start-Sleep -Milliseconds 500 + Try { + ForEach ($Miner in $Variables.RunningMiners.Where({ $_.Status -ne [MinerStatus]::DryRun })) { + If ($Miner.GetStatus() -ne [MinerStatus]::Running) { + # Miner crashed + $Miner.StatusInfo = "'$($Miner.Info)' exited unexpectedly" + $Miner.SetStatus([MinerStatus]::Failed) + $Variables.FailedMiners += $Miner + } + ElseIf ($Miner.DataReaderJob.State -ne [MinerStatus]::Running) { + # Miner data reader process failed + $Miner.StatusInfo = "'$($Miner.Info)' miner data reader exited unexpectedly" + $Miner.SetStatus([MinerStatus]::Failed) + $Variables.FailedMiners += $Miner + } + Else { + If ($Miner.DataReaderJob.HasMoreData) { + If ($Samples = @($Miner.DataReaderJob | Receive-Job | Select-Object)) { + $Sample = $Samples[-1] + $Miner.Hashrates_Live = $Sample.Hashrate.PSObject.Properties.Value + $Miner.DataSampleTimestamp = $Sample.Date + If ($Miner.ReadPowerConsumption) { $Miner.PowerConsumption_Live = $Sample.PowerConsumption } + If ($Sample.Hashrate.PSObject.Properties.Value -notcontains 0) { + # Need hashrates for all algorithms to count as a valid sample + If ($Miner.ValidDataSampleTimestamp -eq [DateTime]0) { + $Miner.ValidDataSampleTimestamp = $Sample.Date.AddSeconds($Miner.WarmupTimes[1]) + } + If (($Sample.Date - $Miner.ValidDataSampleTimestamp) -ge 0) { + $Miner.Data += $Samples + Write-Message -Level Verbose "$($Miner.Name) data sample collected [$(($Sample.Hashrate.PSObject.Properties.Name.ForEach({ "$($_): $(($Sample.Hashrate.$_ | ConvertTo-Hash) -replace ' ')$(If ($Config.ShowShares) { " / Shares Total: $($Sample.Shares.$_[3]), Rejected: $($Sample.Shares.$_[1]), Ignored: $($Sample.Shares.$_[2])" })" })) -join ' & ')$(If ($Sample.PowerConsumption) { " / Power consumption: $($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 Total: $($Sample.Shares.$_[3]), Rejected: $($Sample.Shares.$_[1]), Ignored: $($Sample.Shares.$_[2])" })" })) -join ' & ')$(If ($Sample.PowerConsumption) { " / Power consumption: $($Sample.PowerConsumption.ToString("N2"))W" })] (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" + } + } + } + } + ElseIf ($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.FailedMiners += $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 | Select-Object -ExpandProperty Maximum) * $Miner.Algorithms.Count)) { + $Miner.StatusInfo = "'$($Miner.Info)' has not updated data for more than $((($Miner.DataCollectInterval * 5), 10 | Measure-Object -Maximum | Select-Object -ExpandProperty Maximum) * $Miner.Algorithms.Count) seconds" + $Miner.SetStatus([MinerStatus]::Failed) + $Variables.FailedMiners += $Miner + } + } + Try { + # Set miner priority, some miners reset priority on their own + $Miner.Process.PriorityClass = $Global:PriorityNames.($Miner.ProcessPriority) + # Set window title + [Void][Win32]::SetWindowText($Miner.Process.MainWindowHandle, $Miner.StatusInfo) + } Catch { } + } + $Variables.Devices.Where({ $_.Name -in $Miner.DeviceNames }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) + } + Remove-Variable Miner, Sample, Samples -ErrorAction Ignore + + $Variables.RunningMiners = @($Variables.RunningMiners.Where({ $_ -notin $Variables.FailedMiners })) + $Variables.BenchmarkingOrMeasuringMiners = @($Variables.RunningMiners.Where({ $_.Activated -gt 0 -and ($_.Benchmark -or $_.MeasurePowerConsumption) })) + + If ($Variables.FailedMiners -and -not $Variables.BenchmarkingOrMeasuringMiners) { + # A miner crashed and we're not benchmarking, exit loop immediately + $Variables.EndCycleMessage = " prematurely (miner failed)" + } + ElseIf ($Variables.BenchmarkingOrMeasuringMiners.Where({ $_.Data.Count -ge $_.MinDataSample })) { + # Enough samples collected for this loop, exit loop immediately + $Variables.EndCycleMessage = " (a$(If ($Variables.BenchmarkingOrMeasuringMiners.Where({ $_.Benchmark })) { " benchmarking" })$(If ($Variables.BenchmarkingOrMeasuringMiners.Where({ $_.Benchmark -and $_.MeasurePowerConsumption })) { " and" })$(If ($Variables.BenchmarkingOrMeasuringMiners.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 } + + # Exit loop when + # - a miner crashed and no other miners are benchmarking or measuring power consumption + # - a benchmarking miner haa collected enough samples + # - WarmupTimes[0] is reached and no readout from miner + # - Interval time is over + } While ($Variables.NewMiningStatus -eq "Running" -and -not $Variables.EndCycleMessage -and ([DateTime]::Now.ToUniversalTime() -le $Variables.EndCycleTime -or $Variables.BenchmarkingOrMeasuringMiners)) + + 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 + + # Expire brains loop to collect data + If ($Variables.EndCycleMessage) { + $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime() + Start-Sleep -Seconds 1 + } + } + Catch { + Write-Message -Level Error "Error in file '$(($_.InvocationInfo.ScriptName -split "\\" | Select-Object -Last 2) -join "\")' line $($_.InvocationInfo.ScriptLineNumber) detected. Restarting core..." + "$(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 + Continue + } + + 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() + + $Variables.RestartCycle = $true + + If ($Variables.NewMiningStatus -eq "Running" -and $Variables.IdleDetectionRunspace.MiningStatus -ne "Suspended") { Write-Message -Level Info "Ending cycle$($Variables.EndCycleMessage)." } + +} While ($Variables.NewMiningStatus -eq "Running") + +# Stop all running miners +ForEach ($Miner in $Variables.Miners.Where({ $_.Status -in @([MinerStatus]::DryRun, [MinerStatus]::Running) })) { + $Miner.SetStatus([MinerStatus]::Idle) + $Variables.Devices.Where({ $_.Name -in $Miner.DeviceNames }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) +} +Remove-Variable Miner -ErrorAction Ignore + +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 + +If ($Variables.IdleDetectionRunspace.MiningStatus -ne "Suspended") { Write-Message -Level Info "Ending cycle$($Variables.EndCycleMessage)." } \ No newline at end of file diff --git a/Includes/Downloader.ps1 b/Includes/Downloader.ps1 index 22c65ba2..85bccb3f 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> using module .\Includes\Include.psm1 diff --git a/Includes/Include.psm1 b/Includes/Include.psm1 index 0d0fd290..cc36e1af 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> $Global:DebugPreference = "SilentlyContinue" @@ -529,47 +529,47 @@ Class Miner { [Double[]]CollectHashrate([String]$Algorithm = [String]$this.Algorithm, [Boolean]$Safe = $this.Benchmark) { # Returns an array of two values (safe, unsafe) - $Hashrate_Average = [Double]0 - $Hashrate_Variance = [Double]0 + $HashrateAverage = [Double]0 + $HashrateVariance = [Double]0 - $Hashrate_Samples = @($this.Data.Where({ $_.Hashrate.$Algorithm })) # Do not use 0 valued samples + $HashrateSamples = @($this.Data.Where({ $_.Hashrate.$Algorithm })) # Do not use 0 valued samples - $Hashrate_Average = ($Hashrate_Samples.Hashrate.$Algorithm | Measure-Object -Average | Select-Object -ExpandProperty Average) - $Hashrate_Variance = ($Hashrate_Samples.Hashrate.$Algorithm | Measure-Object -Average -Minimum -Maximum).ForEach({ If ($_.Average) { ($_.Maximum - $_.Minimum) / $_.Average } }) + $HashrateAverage = ($HashrateSamples.Hashrate.$Algorithm | Measure-Object -Average | Select-Object -ExpandProperty Average) + $HashrateVariance = $HashrateSamples.Hashrate.$Algorithm | Measure-Object -Average -Minimum -Maximum | ForEach-Object { If ($_.Average) { ($_.Maximum - $_.Minimum) / $_.Average } } If ($Safe) { - If ($Hashrate_Samples.Count -lt 10 -or $Hashrate_Variance -gt 0.1) { - Return @(0, $Hashrate_Average) + If ($HashrateSamples.Count -lt 10 -or $HashrateVariance -gt 0.1) { + Return 0, $HashrateAverage } Else { - Return @(($Hashrate_Average * (1 + $Hashrate_Variance / 2)), $Hashrate_Average) + Return ($HashrateAverage * (1 + $HashrateVariance / 2)), $HashrateAverage } } Else { - Return @($Hashrate_Average, $Hashrate_Average) + Return $HashrateAverage, $HashrateAverage } } [Double[]]CollectPowerConsumption([Boolean]$Safe = $this.MeasurePowerConsumption) { # Returns an array of two values (safe, unsafe) - $PowerConsumption_Average = [Double]0 - $PowerConsumption_Variance = [Double]0 + $PowerConsumptionAverage = [Double]0 + $PowerConsumptionVariance = [Double]0 - $PowerConsumption_Samples = @($this.Data.Where({ $_.PowerConsumption})) # Do not use 0 valued samples + $PowerConsumptionSamples = @($this.Data.Where({ $_.PowerConsumption})) # Do not use 0 valued samples - $PowerConsumption_Average = ($PowerConsumption_Samples.PowerConsumption | Measure-Object -Average | Select-Object -ExpandProperty Average) - $PowerConsumption_Variance = ($PowerConsumption_Samples.PowerUsage | Measure-Object -Average -Minimum -Maximum).ForEach({ If ($_.Average) { ($_.Maximum - $_.Minimum) / $_.Average } }) + $PowerConsumptionAverage = ($PowerConsumptionSamples.PowerConsumption | Measure-Object -Average | Select-Object -ExpandProperty Average) + $PowerConsumptionVariance = $PowerConsumptionSamples.PowerUsage | Measure-Object -Average -Minimum -Maximum | ForEach-Object { If ($_.Average) { ($_.Maximum - $_.Minimum) / $_.Average } } If ($Safe) { - If ($PowerConsumption_Samples.Count -lt 10 -or $PowerConsumption_Variance -gt 0.1) { - Return @(0, $PowerConsumption_Average) + If ($PowerConsumptionSamples.Count -lt 10 -or $PowerConsumptionVariance -gt 0.1) { + Return 0, $PowerConsumptionAverage } Else { - Return @(($PowerConsumption_Average * (1 + $PowerConsumption_Variance / 2)), $PowerConsumption_Average) + Return ($PowerConsumptionAverage * (1 + $PowerConsumptionVariance / 2)), $PowerConsumptionAverage } } Else { - Return @($PowerConsumption_Average, $PowerConsumption_Average) + Return $PowerConsumptionAverage, $PowerConsumptionAverage } } @@ -761,7 +761,7 @@ Function Start-Core { $Variables.LastDonated = [DateTime]::Now.AddDays(-1).AddHours(1) $Variables.Miners = [Miner[]]@() - $Variables.MinersBestPerDeviceCombo = [Miner[]]@() + $Variables.MinersBest = [Miner[]]@() $Variables.CycleStarts = @() @@ -788,13 +788,14 @@ Function Start-Core { } Function Stop-Core { - - # Stop all running miners - ForEach ($Miner in $Variables.Miners.Where({ $_.Status -in @([MinerStatus]::DryRun, [MinerStatus]::Running) })) { - $Miner.SetStatus([MinerStatus]::Idle) - $Variables.Devices.Where({ $_.Name -in $Miner.DeviceNames }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) + + # Allow up to 30 seconds for all miners to get stopped + $Counter = 0 + While ($Counter -lt 30 -and $Variables.Miners.Where({ $_.Status -in @([MinerStatus]::DryRun, [MinerStatus]::Running) })) { + Start-Sleep -Seconds 1 + $Counter ++ } - Remove-Variable Miner -ErrorAction Ignore + Remove-Variable Counter If ($Global:CoreRunspace) { $Global:CoreRunspace.PowerShell.Stop() | Out-Null @@ -803,13 +804,13 @@ Function Stop-Core { If ($Variables.NewMiningStatus -eq "Idle") { $Variables.Pools = $Variables.PoolsBest = $Variables.PoolsNew = [Pool[]]@() $Variables.PoolsCount = 0 - $Variables.Miners = $Variables.MinersBestPerDevice = $Variables.MinersBestPerDeviceCombos = $Variables.MinersOptimal = $Variables.RunningMiners = [Miner[]]@() + $Variables.Miners = $Variables.MinersBestPerDevice = $Variables.MinersBests = $Variables.MinersOptimal = $Variables.RunningMiners = [Miner[]]@() $Variables.MiningEarning = $Variables.MiningProfit = $Variables.MiningPowerCost = [Double]::NaN $Variables.CycleStarts = @() $Variables.Timer = $null } - $Variables.MinersBestPerDeviceCombo = [Miner[]]@() + $Variables.MinersBest = [Miner[]]@() $Variables.BenchmarkingOrMeasuringMiners = [Miner[]]@() $Variables.FailedMiners = [Miner[]]@() $Variables.RunningMiners = [Miner[]]@() @@ -950,12 +951,14 @@ Function Stop-BalancesTracker { If ($BalancesTrackerRunspace) { - $Variables.BalancesTrackerRunning = $false - $BalancesTrackerRunspace.PowerShell.Stop() | Out-Null - $BalancesTrackerRunspace.PowerShell.EndInvoke() | Out-Null - $BalancesTrackerRunspace.PowerShell.Runspace.Close() | Out-Null - $BalancesTrackerRunspace.PowerShell.Dispose() | Out-Null - + Try { + $Variables.BalancesTrackerRunning = $false + $BalancesTrackerRunspace.PowerShell.Stop() | Out-Null + $BalancesTrackerRunspace.PowerShell.EndInvoke() | Out-Null + $BalancesTrackerRunspace.PowerShell.Runspace.Close() | Out-Null + $BalancesTrackerRunspace.PowerShell.Dispose() | Out-Null + } + Catch { } Remove-Variable BalancesTrackerRunspace -Scope Global -ErrorAction Ignore [System.GC]::Collect() @@ -1092,7 +1095,7 @@ Function Write-Message { $Message = "$(Get-Date -Format "yyyy-MM-dd HH:mm:ss") $($Level.ToUpper()): $Message" - If (-not $Config.Keys -or $Level -in $Config.LogToScreen) { + If (-not $Config.Keys.Count -or $Level -in $Config.LogToScreen) { # Ignore error when legacy GUI gets closed Try { # Update status text box in legacy GUI, scroll to end if no text is selected @@ -1111,7 +1114,7 @@ Function Write-Message { Catch { } } - If (-not $Config.Keys -or $Level -in $Config.LogToFile) { + If (-not $Config.Keys.Count -or $Level -in $Config.LogToFile) { # Get mutex. Mutexes are shared across all threads and processes. # This lets us ensure only one thread is trying to write to the file at a time. @@ -1307,12 +1310,6 @@ Function Read-Config { $DefaultConfig.ConfigFileVersion = $Variables.Branding.Version.ToString() $Variables.FreshConfig = $true - # Add default enabled pools - If (Test-Path -LiteralPath ".\Data\PoolsConfig-Recommended.json" -PathType Leaf) { - $Temp = (Get-Content ".\Data\PoolsConfig-Recommended.json" | ConvertFrom-Json) - $DefaultConfig.PoolName = $Temp.PSObject.Properties.Name.Where({ $_ -ne "Default" }).ForEach({ $Temp.$_.Variant.PSObject.Properties.Name }) - } - # Add default config items $Variables.AllCommandLineParameters.psBase.Keys.Where({ $_ -notin $DefaultConfig.psBase.Keys }).ForEach( { @@ -1321,8 +1318,13 @@ Function Read-Config { $DefaultConfig.$_ = $Value } ) - # MinerInstancePerDeviceModel: Default to $true if more than one device model per vendor - $DefaultConfig.MinerInstancePerDeviceModel = (($Variables.Devices | Group-Object Vendor).ForEach({ ($_.Group.Model | Sort-Object -Unique).Count }) | Measure-Object -Maximum | Select-Object -ExpandProperty Maximum) -gt 1 + + $RandomDonationData = $Variables.DonationData | Get-Random + $DefaultConfig.MiningDutchUserName = $RandomDonationData.MiningDutchUserName + $DefaultConfig.MiningPoolHubUserName = $RandomDonationData.MiningPoolHubUserName + $DefaultConfig.NiceHashWallet = $RandomDonationData.Wallets.BTC + $DefaultConfig.ProHashingUserName = $RandomDonationData.ProHashingUserName + $DefaultConfig.Wallets.BTC = $RandomDonationData.Wallets.BTC Return $DefaultConfig } @@ -1384,11 +1386,11 @@ Function Read-Config { } "NiceHash" { If (-not $PoolConfig.Variant."Nicehash Internal".Wallets.BTC) { - If ($ConfigFromFile.NiceHashWallet -and $ConfigFromFile.NiceHashWalletIsInternal) { $PoolConfig.Variant."NiceHash Internal".Wallets = @{ "BTC" = $ConfigFromFile.NiceHashWallet } } + If ($ConfigFromFile.NiceHashWallet -and $ConfigFromFile.NiceHashWalletIsInternal) { $PoolConfig.Variant."NiceHash Internal".Wallets = [Ordered]@{ "BTC" = $ConfigFromFile.NiceHashWallet } } } If (-not $PoolConfig.Variant."Nicehash External".Wallets.BTC) { - If ($ConfigFromFile.NiceHashWallet -and -not $ConfigFromFile.NiceHashWalletIsInternal) { $PoolConfig.Variant."NiceHash External".Wallets = @{ "BTC" = $ConfigFromFile.NiceHashWallet } } - ElseIf ($ConfigFromFile.Wallets.BTC) { $PoolConfig.Variant."NiceHash External".Wallets = @{ "BTC" = $ConfigFromFile.Wallets.BTC } } + If ($ConfigFromFile.NiceHashWallet -and -not $ConfigFromFile.NiceHashWalletIsInternal) { $PoolConfig.Variant."NiceHash External".Wallets = [Ordered]@{ "BTC" = $ConfigFromFile.NiceHashWallet } } + ElseIf ($ConfigFromFile.Wallets.BTC) { $PoolConfig.Variant."NiceHash External".Wallets = [Ordered]@{ "BTC" = $ConfigFromFile.Wallets.BTC } } } Break } @@ -1421,11 +1423,11 @@ Function Read-Config { $Message = "Configuration file '$ConfigFile' is corrupt and was renamed to '$CorruptConfigFile'." Write-Message -Level Warn $Message $ConfigFromFile = Get-DefaultConfig - $Variables.FreshConfigText = "$Message`n`nUse the configuration editor ('http://127.0.0.1:$($ConfigFromFile.APIPort)') to change your settings and apply the configuration.`n`n`Start making money by clicking 'Start mining'.`n`nHappy Mining!" } Else { $Variables.ConfigFileTimestamp = (Get-Item -Path $Variables.ConfigFile).LastWriteTime - ($Variables.AllCommandLineParameters.psBase.Keys | Sort-Object).ForEach({ + ($Variables.AllCommandLineParameters.psBase.Keys | Sort-Object).ForEach( + { If ($_ -in $ConfigFromFile.psBase.Keys) { # Upper / lower case conversion of variable keys (Web GUI is case sensitive) $Value = $ConfigFromFile.$_ @@ -1455,8 +1457,6 @@ Function Read-Config { } } Else { - Write-Message -Level Warn "No valid configuration file '$ConfigFile' found." - $Variables.FreshConfigText = "This is the first time you have started $($Variables.Branding.ProductLabel).`n`nUse the configuration editor to change your settings and apply the configuration.`n`n`Start making money by clicking 'Start mining'.`n`nHappy Mining!" $ConfigFromFile = Get-DefaultConfig } @@ -1640,7 +1640,7 @@ Function Get-SortedObject { } ) } - "Hashtable|OrderedDictionary|SyncHashtable" { + "Hashtable|OrderedDictionary|SyncHashtable" { $SortedObject = [Ordered]@{ } ($Object.GetEnumerator().Name | Sort-Object).ForEach( { @@ -1889,7 +1889,7 @@ Function Get-Stat { } Try { - $Stat = [System.IO.File]::ReadAllLines("Stats\$StatName.txt") | ConvertFrom-Json -ErrorAction Stop + $Stat = [System.IO.File]::ReadAllLines("$PWD\Stats\$StatName.txt") | ConvertFrom-Json -ErrorAction Stop $Global:Stats[$StatName] = @{ Name = [String]$StatName Live = [Double]$Stat.Live @@ -1912,7 +1912,7 @@ Function Get-Stat { } } Catch { - Write-Message -Level Warn "Stat file ($StatName) is corrupt and will be reset." + Write-Message -Level Warn "Stat file '$StatName' is corrupt and will be reset." Remove-Stat $StatName } } @@ -2344,8 +2344,9 @@ Function Get-Device { ) } Catch { - Write-Message -Level Warn "WDDM device detection has failed. " + Write-Message -Level Warn "WDDM device detection has failed." } + Remove-Variable Device, Device_CIM, Device_Reg, Device_PNP -ErrorAction Ignore # Get OpenCL data Try { @@ -2366,7 +2367,7 @@ Function Get-Device { Default { [String]$Device_OpenCL.Type -replace '\(R\)|\(TM\)|\(C\)|Series|GeForce|Radeon|Intel' -replace '[^A-Z0-9]' } } ) - Bus = $( + Bus = $( If ($Device_OpenCL.PCIBus -is [Int64] -or $Device_OpenCL.PCIBus -is [Int32]) { [Int64]$Device_OpenCL.PCIBus } @@ -2490,7 +2491,7 @@ Function Get-Device { ) } Catch { - Write-Message -Level Warn "OpenCL device detection has failed. " + Write-Message -Level Warn "OpenCL device detection has failed." } } @@ -2688,7 +2689,7 @@ public static class Kernel32 $Process.Handle | Out-Null Do { - If ($ControllerProcess.WaitForExit(15000)) { + If ($ControllerProcess.WaitForExit(1000)) { [Void]$Process.CloseMainWindow() [Void]$Process.WaitForExit() [Void]$Process.Close() @@ -2983,7 +2984,7 @@ Function Start-LogReader { Function Get-ObsoleteMinerStats { - $StatFiles = @(Get-ChildItem ".\Stats\*" -Include "*_HashRate.txt", "*_PowerConsumption.txt").BaseName + $StatFiles = @(Get-ChildItem ".\Stats\*" -Include "*_Hashrate.txt", "*_PowerConsumption.txt").BaseName $MinerNames = @(Get-ChildItem ".\Miners\*.ps1").BaseName Return @($StatFiles.Where({ (($_ -split '-')[0, 1] -join '-') -notin $MinerNames})) @@ -3130,11 +3131,40 @@ Function Update-DAGdata { # Faster shutdown If ($Variables.NewMiningStatus -ne "Running" -or $Variables.IdleDetectionRunspace.MiningStatus -eq "Idle") { Continue } + $Currency = "SCC" + $Url = "https://www.coinexplorer.net/api/v1/SCC/getblockcount" + If (-not $Variables.DAGdata.Currency.$Currency.BlockHeight -or $Variables.DAGdata.Updated.$Url -lt $Variables.ScriptStartTime -or $Variables.DAGdata.Updated.$Url -lt [DateTime]::Now.ToUniversalTime().AddDays(-1)) { + # Get block data from StakeCube block explorer + Try { + $DAGdataResponse = Invoke-RestMethod -Uri $Url -TimeoutSec 15 + If ((Get-AlgorithmFromCurrency -Currency $Currency) -and $DAGdataResponse -gt $Variables.DAGdata.Currency.$Currency.BlockHeight) { + $DAGdata = Get-DAGdata -BlockHeight $DAGdataResponse -Currency $Currency -EpochReserve 2 + If ($DAGdata.Epoch) { + $DAGdata | Add-Member Date ([DateTime]::Now.ToUniversalTime()) -Force + $DAGdata | Add-Member Url $Url -Force + $Variables.DAGdata.Currency | Add-Member $Currency $DAGdata -Force + $Variables.DAGdata.Updated | Add-Member $Url ([DateTime]::Now.ToUniversalTime()) -Force + Write-Message -Level Info "Loaded DAG data from '$Url'." + } + Else { + Write-Message -Level Warn "Failed to load DAG data for '$Currency' from '$Url'." + } + } + } + Catch { + Write-Message -Level Warn "Failed to load DAG data from '$Url'." + } + } + + # Faster shutdown + If ($Variables.NewMiningStatus -ne "Running" -or $Variables.IdleDetectionRunspace.MiningStatus -eq "Idle") { Continue } + + If (-not ($Variables.PoolName -match "ZergPoolCoins.*")) { # ZergPool (Coins) also supplies EVR DAG data $Currency = "EVR" $Url = "https://evr.cryptoscope.io/api/getblockcount" - If (-not $Variables.DAGdata.Currency.EVR.BlockHeight -or $Variables.DAGdata.Updated.$Url -lt $Variables.ScriptStartTime -or $Variables.DAGdata.Updated.$Url -lt [DateTime]::Now.ToUniversalTime().AddDays(-1)) { + If (-not $Variables.DAGdata.Currency.$Currency.BlockHeight -or $Variables.DAGdata.Updated.$Url -lt $Variables.ScriptStartTime -or $Variables.DAGdata.Updated.$Url -lt [DateTime]::Now.ToUniversalTime().AddDays(-1)) { # Get block data from EVR block explorer Try { $DAGdataResponse = Invoke-RestMethod -Uri $Url -TimeoutSec 15 @@ -3202,17 +3232,6 @@ Function Update-DAGdata { } } - # SCC firo variant - If ($Variables.DAGdata.Algorithm."FiroPow") { - $Variables.DAGdata.Algorithm | Add-Member "FiroPowSCC" $Variables.DAGdata.Algorithm.FiroPow.PSObject.Copy() -Force - } - # SCC firo variant - If ($Variables.DAGdata.Currency."FIRO") { - $Variables.DAGdata.Currency | Add-Member "SCC" $Variables.DAGdata.Currency."FIRO".PSObject.Copy() -Force - $Variables.DAGdata.Currency."SCC" | Add-Member Algorithm "FiroPowSCC" -Force - $Variables.DAGdata.Currency."SCC" | Add-Member CoinName "StakeCubeCoin" -Force - } - # Add default '*' (equal to highest) $Variables.DAGdata.Currency | Add-Member "*" ([PSCustomObject]@{ BlockHeight = [Int]($DAGdataKeys.ForEach({ $Variables.DAGdata.Currency.$_.BlockHeight }) | Measure-Object -Maximum | Select-Object -ExpandProperty Maximum) @@ -3327,6 +3346,7 @@ Function Get-EpochLength { "EthashSHA256" { Return 4000 } "EvrProgPow" { Return 12000 } "FiroPow" { Return 1300 } + "FiroPowSCC" { Return 3240 } # https://github.com/stakecube/sccminer/commit/16bdfcaccf9cba555f87c05f6b351e1318bd53aa#diff-200991710fe4ce846f543388b9b276e959e53b9bf5c7b7a8154b439ae8c066aeR32 "KawPow" { Return 7500 } "MeowPow" { Return 7500 } # https://github.com/Meowcoin-Foundation/meowpowminer/blob/6e1f38c1550ab23567960699ba1c05aad3513bcd/libcrypto/ethash.hpp#L32 "Octopus" { Return 524288 } @@ -3414,18 +3434,21 @@ Function Get-Median { Function Hide-Console { # https://stackoverflow.com/questions/3571627/show-hide-the-console-window-of-a-c-sharp-console-application - If ($Variables.ConsoleWindowHandle = [Console.Window]::GetConsoleWindow()) { - # 0 = SW_HIDE - [Console.Window]::ShowWindow($Variables.ConsoleWindowHandle, 0) + If ($host.Name -eq "ConsoleHost") { + If ($ConsoleHandle = [Console.Window]::GetConsoleWindow()) { + # 0 = SW_HIDE + [Console.Window]::ShowWindow($ConsoleWindowHandle, 0) | Out-Null + } } } Function Show-Console { # https://stackoverflow.com/questions/3571627/show-hide-the-console-window-of-a-c-sharp-console-application - If ($Variables.ConsoleWindowHandle) { - # 2 = SW_SHOWMINIMIZED - [Console.Window]::ShowWindow($Variables.ConsoleWindowHandle, 2) - $Variables.Remove("ConsoleWindowHandle") + If ($host.Name -eq "ConsoleHost") { + If ($ConsoleHandle = [Console.Window]::GetConsoleWindow()) { + # 5 = SW_SHOW + [Console.Window]::ShowWindow($ConsoleWindowHandle, 5) | Out-Null + } } } @@ -3584,7 +3607,7 @@ Function Initialize-Environment { } Else { Write-Host "Loaded AMD GPU architecture table." } - $Variables.BalancesCurrencies = @($variables.Balances.PSObject.Properties.Name.ForEach({ $Variables.Balances.$_.Currency })) + $Variables.BalancesCurrencies = @($Variables.Balances.PSObject.Properties.Name.ForEach({ $Variables.Balances.$_.Currency }) | Sort-Object -Unique) Write-Host "" } \ No newline at end of file diff --git a/Includes/LegacyGUI.ps1 b/Includes/LegacyGUI.ps1 index 2b50b0cf..3bbc1173 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.2.9 -Version date: 2024/04/07 +Version: 6.2.10 +Version date: 2024/06/20 #> [Void][System.Reflection.Assembly]::Load("System.Windows.Forms") @@ -150,13 +150,13 @@ Function Update-TabControl { $ContextMenuStripItem6.Enabled = $false $ContextMenuStripItem6.Visible = $false - $ActiveMinersLabel.Text = If ($Variables.MinersBestPerDeviceCombo) { "Active miners updated $([DateTime]::Now.ToString())" } Else { "No miners running." } + $ActiveMinersLabel.Text = If ($Variables.MinersBest) { "Active miners updated $([DateTime]::Now.ToString())" } Else { "No miners running." } If (-not ($ContextMenuStrip.Visible -and $ContextMenuStrip.Enabled)) { $ActiveMinersDGV.BeginInit() $ActiveMinersDGV.ClearSelection() - $ActiveMinersDGV.DataSource = $Variables.MinersBestPerDeviceCombo | Select-Object @( + $ActiveMinersDGV.DataSource = $Variables.MinersBest | Select-Object @( @{ Name = "Info"; Expression = { $_.info } } @{ Name = "SubStatus"; Expression = { $_.SubStatus } } @{ Name = "Device(s)"; Expression = { $_.DeviceNames -join '; ' } } @@ -177,16 +177,16 @@ Function Update-TabControl { If ($ActiveMinersDGV.Columns) { $ActiveMinersDGV.Columns[0].Visible = $false $ActiveMinersDGV.Columns[1].Visible = $false - $ActiveMinersDGV.Columns[2].FillWeight = 30 + ($Variables.MinersBestPerDeviceCombo.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum | Select-Object -ExpandProperty Maximum) * 20 + $ActiveMinersDGV.Columns[2].FillWeight = 30 + ($Variables.MinersBest.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum | Select-Object -ExpandProperty Maximum) * 20 $ActiveMinersDGV.Columns[3].FillWeight = 160 $ActiveMinersDGV.Columns[4].FillWeight = 60 $ActiveMinersDGV.Columns[5].FillWeight = 55; $ActiveMinersDGV.Columns[5].DefaultCellStyle.Alignment = "MiddleRight"; $ActiveMinersDGV.Columns[5].HeaderCell.Style.Alignment = "MiddleRight" $ActiveMinersDGV.Columns[6].FillWeight = 55; $ActiveMinersDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $ActiveMinersDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight"; $ActiveMinersDGV.Columns[6].Visible = $Variables.CalculatePowerCost $ActiveMinersDGV.Columns[7].FillWeight = 55; $ActiveMinersDGV.Columns[7].DefaultCellStyle.Alignment = "MiddleRight"; $ActiveMinersDGV.Columns[7].HeaderCell.Style.Alignment = "MiddleRight"; $ActiveMinersDGV.Columns[7].Visible = $Variables.CalculatePowerCost $ActiveMinersDGV.Columns[8].FillWeight = 55; $ActiveMinersDGV.Columns[8].DefaultCellStyle.Alignment = "MiddleRight"; $ActiveMinersDGV.Columns[8].HeaderCell.Style.Alignment = "MiddleRight"; $ActiveMinersDGV.Columns[8].Visible = $Variables.CalculatePowerCost - $ActiveMinersDGV.Columns[9].FillWeight = 70 + ($Variables.MinersBestPerDeviceCombo.({ $_.Workers.Count })| Measure-Object -Maximum | Select-Object -ExpandProperty Maximum) * 35 - $ActiveMinersDGV.Columns[10].FillWeight = 50 + ($Variables.MinersBestPerDeviceCombo.({ $_.Workers.Count }) | Measure-Object -Maximum | Select-Object -ExpandProperty Maximum) * 25 - $ActiveMinersDGV.Columns[11].FillWeight = 50 + ($Variables.MinersBestPerDeviceCombo.({ $_.Workers.Count }) | Measure-Object -Maximum | Select-Object -ExpandProperty Maximum) * 25; $ActiveMinersDGV.Columns[11].DefaultCellStyle.Alignment = "MiddleRight"; $ActiveMinersDGV.Columns[11].HeaderCell.Style.Alignment = "MiddleRight" + $ActiveMinersDGV.Columns[9].FillWeight = 70 + ($Variables.MinersBest.({ $_.Workers.Count })| Measure-Object -Maximum | Select-Object -ExpandProperty Maximum) * 35 + $ActiveMinersDGV.Columns[10].FillWeight = 50 + ($Variables.MinersBest.({ $_.Workers.Count }) | Measure-Object -Maximum | Select-Object -ExpandProperty Maximum) * 25 + $ActiveMinersDGV.Columns[11].FillWeight = 50 + ($Variables.MinersBest.({ $_.Workers.Count }) | Measure-Object -Maximum | Select-Object -ExpandProperty Maximum) * 25; $ActiveMinersDGV.Columns[11].DefaultCellStyle.Alignment = "MiddleRight"; $ActiveMinersDGV.Columns[11].HeaderCell.Style.Alignment = "MiddleRight" $ActiveMinersDGV.Columns[12].FillWeight = 65; $ActiveMinersDGV.Columns[12].DefaultCellStyle.Alignment = "MiddleRight"; $ActiveMinersDGV.Columns[13].HeaderCell.Style.Alignment = "MiddleRight" $ActiveMinersDGV.Columns[13].FillWeight = 65; $ActiveMinersDGV.Columns[13].DefaultCellStyle.Alignment = "MiddleRight"; $ActiveMinersDGV.Columns[14].HeaderCell.Style.Alignment = "MiddleRight" } @@ -1653,7 +1653,7 @@ $LegacyGUIForm.Add_Load( $MiningSummaryLabel.SendToBack() (($Variables.Summary -replace 'Power Cost', '
Power Cost' -replace ' / ', '/' -replace ' ', ' ' -replace ' ', ' ') -split '
').ForEach({ $MiningSummaryLabel.Text += "`r`n$_" }) $MiningSummaryLabel.Text += "`r`n " - If (-not $Variables.MinersBestPerDeviceCombo) { $MiningSummaryLabel.ForeColor = [System.Drawing.Color]::Black } + If (-not $Variables.MinersBest) { $MiningSummaryLabel.ForeColor = [System.Drawing.Color]::Black } ElseIf ($Variables.MiningProfit -ge 0) { $MiningSummaryLabel.ForeColor = [System.Drawing.Color]::Green } ElseIf ($Variables.MiningProfit -lt 0) { $MiningSummaryLabel.ForeColor = [System.Drawing.Color]::Red } diff --git a/Includes/MinerAPIs/BzMiner.ps1 b/Includes/MinerAPIs/BzMiner.ps1 index 269abfc6..dfe175ff 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> Class BzMiner : Miner { diff --git a/Includes/MinerAPIs/Ccminer.ps1 b/Includes/MinerAPIs/Ccminer.ps1 index 7f78f876..03b2929c 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> Class CcMiner : Miner { diff --git a/Includes/MinerAPIs/EthMiner.ps1 b/Includes/MinerAPIs/EthMiner.ps1 index c245b2bf..b7a4afe7 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> Class EthMiner : Miner { diff --git a/Includes/MinerAPIs/FireIce.ps1 b/Includes/MinerAPIs/FireIce.ps1 index ed342506..0ccbccb1 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> Class Fireice : Miner { diff --git a/Includes/MinerAPIs/Gminer.ps1 b/Includes/MinerAPIs/Gminer.ps1 index 21eb2031..d8b04983 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> Class GMiner : Miner { diff --git a/Includes/MinerAPIs/HellMiner.ps1 b/Includes/MinerAPIs/HellMiner.ps1 index c4a71c42..f167566b 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> Class HellMiner : Miner { diff --git a/Includes/MinerAPIs/MiniZ.ps1 b/Includes/MinerAPIs/MiniZ.ps1 index f55719c2..4f8020c3 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> Class MiniZ : Miner { diff --git a/Includes/MinerAPIs/NBMiner.ps1 b/Includes/MinerAPIs/NBMiner.ps1 index dfbc7182..79e27714 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> Class NBMiner : Miner { diff --git a/Includes/MinerAPIs/NanoMiner.ps1 b/Includes/MinerAPIs/NanoMiner.ps1 index 2051c339..c5713df3 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> Class NanoMiner : Miner { diff --git a/Includes/MinerAPIs/OneZero.ps1 b/Includes/MinerAPIs/OneZero.ps1 index 122f630a..b09a997b 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> Class OneZero : Miner { diff --git a/Includes/MinerAPIs/Rigel.ps1 b/Includes/MinerAPIs/Rigel.ps1 index 9b826221..ba839e36 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> Class Rigel : Miner { diff --git a/Includes/MinerAPIs/SRBMiner.ps1 b/Includes/MinerAPIs/SRBMiner.ps1 index c822252e..3f9768db 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> Class SRBMiner : Miner { diff --git a/Includes/MinerAPIs/TeamBlackMiner.ps1 b/Includes/MinerAPIs/TeamBlackMiner.ps1 index ff59163c..89c2d744 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> Class TeamBlackMiner : Miner { diff --git a/Includes/MinerAPIs/Trex.ps1 b/Includes/MinerAPIs/Trex.ps1 index edf83c07..8c5f8a8d 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> Class Trex : Miner { diff --git a/Includes/MinerAPIs/Xgminer.ps1 b/Includes/MinerAPIs/Xgminer.ps1 index e6485aec..73252d81 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> Class XgMiner : Miner { diff --git a/Includes/MinerAPIs/XmRig.ps1 b/Includes/MinerAPIs/XmRig.ps1 index 023b43b7..0a47cc70 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> Class XmRig : Miner { diff --git a/Includes/MinerAPIs/lolMiner.ps1 b/Includes/MinerAPIs/lolMiner.ps1 index 3f0de0ab..d9e76985 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> Class lolMiner : Miner { diff --git a/Miners/BzMiner-v21.2.0.ps1 b/Miners/BzMiner-v21.2.0.ps1 index f17624b2..c9f26e31 100644 --- a/Miners/BzMiner-v21.2.0.ps1 +++ b/Miners/BzMiner-v21.2.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -in @("AMD", "INTEL") -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 e77ae7c9..a60d5f8f 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.1" }))) { Return } @@ -29,7 +29,7 @@ $Path = "$PWD\Bin\$Name\ccminer.exe" $DeviceEnumerator = "Type_Vendor_Index" $Algorithms = @( - [PSCustomObject]@{ Algorithm = "Blake256R8"; MinMemGiB = 2; MinerSet = 3; WarmupTimes = @(30, 0); ExcludePools = @(); Arguments = " --algo blakecoin --intensity 22" } # FPGA + [PSCustomObject]@{ Algorithm = "Blakecoin"; MinMemGiB = 2; MinerSet = 3; WarmupTimes = @(30, 0); ExcludePools = @(); Arguments = " --algo blakecoin --intensity 22" } # FPGA [PSCustomObject]@{ Algorithm = "C11"; MinMemGiB = 3; MinerSet = 1; WarmupTimes = @(60, 0); ExcludePools = @(); Arguments = " --algo c11 --intensity 22" } # [PSCustomObject]@{ Algorithm = "Keccak"; MinMemGiB = 3; MinerSet = 3; WarmupTimes = @(45, 0); ExcludePools = @(); Arguments = " --algo keccak --diff-multiplier 2 --intensity 29" } # ASIC # [PSCustomObject]@{ Algorithm = "Lyra2RE2"; MinMemGiB = 3; MinerSet = 3; WarmupTimes = @(30, 0); ExcludePools = @(); Arguments = " --algo lyra2v2" } # ASIC diff --git a/Miners/CcminerDyn-v1.0.2.ps1 b/Miners/CcminerDyn-v1.0.2.ps1 index c8bc6c84..e15b19ac 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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 2ce53024..daf23e93 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -and $_.OpenCL.ComputeCapability -lt "6.0" -and $_.Architecture -ne "Other" }))) { Return } @@ -32,7 +32,7 @@ $Path = "$PWD\Bin\$Name\ccminer.exe" $DeviceEnumerator = "Type_Vendor_Index" $Algorithms = @( - [PSCustomObject]@{ Algorithm = "Blake256R8"; MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(30, 0); ExcludePools = @(); Arguments = " --algo blakecoin --intensity 22" } # FPGA + [PSCustomObject]@{ Algorithm = "Blakecoin"; MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(30, 0); ExcludePools = @(); Arguments = " --algo blakecoin --intensity 22" } # FPGA [PSCustomObject]@{ Algorithm = "C11"; MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(60, 0); ExcludePools = @(); Arguments = " --algo c11 --intensity 22" } # CcminerAlexis78-v1.5.2 is faster # [PSCustomObject]@{ Algorithm = "Keccak"; MinMemGiB = 2; MinerSet = 3; WarmupTimes = @(30, 0); ExcludePools = @(); Arguments = " --algo keccak --diff-multiplier 2 --intensity 29" } # ASIC # [PSCustomObject]@{ Algorithm = "Lyra2RE2"; MinMemGiB = 2; MinerSet = 3; WarmupTimes = @(45, 0); ExcludePools = @(); Arguments = " --algo lyra2v2" } # ASIC diff --git a/Miners/CcminerKlausT-v8.26x2.ps1 b/Miners/CcminerKlausT-v8.26x2.ps1 index 00ef301f..404d4cd9 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge [Version]"6.0" }))) { Return } @@ -35,7 +35,7 @@ $Path = "$PWD\Bin\$Name\ccminer.exe" $DeviceEnumerator = "Type_Vendor_Index" $Algorithms = @( - [PSCustomObject]@{ Algorithm = "Blake256R8"; MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(30, 0); ExcludePools = @(); Arguments = " --algo blakecoin --intensity 22" } # FPGA + [PSCustomObject]@{ Algorithm = "Blakecoin"; MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(30, 0); ExcludePools = @(); Arguments = " --algo blakecoin --intensity 22" } # FPGA [PSCustomObject]@{ Algorithm = "C11"; MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(60, 0); ExcludePools = @(); Arguments = " --algo c11 --intensity 22" } # CcminerAlexis78-v1.5.2 is faster # [PSCustomObject]@{ Algorithm = "Keccak"; MinMemGiB = 2; MinerSet = 3; WarmupTimes = @(60, 0); ExcludePools = @(); Arguments = " --algo keccak --diff-multiplier 2 --intensity 29" } # ASIC # [PSCustomObject]@{ Algorithm = "Lyra2RE2"; MinMemGiB = 2; MinerSet = 3; WarmupTimes = @(60, 0); ExcludePools = @(); Arguments = " --algo lyra2v2" } # ASIC diff --git a/Miners/CcminerLyra2z330-v8.21r9.ps1 b/Miners/CcminerLyra2z330-v8.21r9.ps1 index 700fcab6..c0b02d54 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.1" }))) { Return } @@ -29,7 +29,7 @@ $Path = "$PWD\Bin\$Name\ccminer.exe" $DeviceEnumerator = "Type_Vendor_Index" $Algorithms = @( - [PSCustomObject]@{ Algorithm = "Blake256R8"; MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(30, 0); ExcludePools = @(); Arguments = " --algo blakecoin --intensity 12.3" } # FPGA + [PSCustomObject]@{ Algorithm = "Blakecoin"; MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(30, 0); ExcludePools = @(); Arguments = " --algo blakecoin --intensity 12.3" } # FPGA # [PSCustomObject]@{ Algorithm = "Lyra2z330"; MinMemGiB = 3; MinerSet = 0; WarmupTimes = @(30, 0); ExcludePools = @(); Arguments = " --algo lyra2z330 -intensity 12.5" } # Algorithtm is dead # [PSCustomObject]@{ Algorithm = "Yescrypt"; MinMemGiB = 3; MinerSet = 0; WarmupTimes = @(75, 5); ExcludePools = @(); Arguments = " --algo yescrypt" } # Too many bad shares [PSCustomObject]@{ Algorithm = "YescryptR16"; MinMemGiB = 3; MinerSet = 1; WarmupTimes = @(30, 0); ExcludePools = @(); Arguments = " --algo yescryptr16 --intensity 13.3" } # CcminerLyraYesscrypt-v8.21r18v5 is fastest diff --git a/Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1 b/Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1 index b37b6eb6..006b9846 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.1" }))) { Return } @@ -29,7 +29,7 @@ $Path = "$PWD\Bin\$Name\ccminer.exe" $DeviceEnumerator = "Type_Vendor_Index" $Algorithms = @( - [PSCustomObject]@{ Algorithm = "Blake256R8"; MinMemGiB = 2; MinerSet = 3; WarmupTimes = @(30, 0); ExcludePools = @(); Arguments = " --algo blakecoin --intensity 13.2" } # FPGA + [PSCustomObject]@{ Algorithm = "Blakecoin"; MinMemGiB = 2; MinerSet = 3; WarmupTimes = @(60, 0); ExcludePools = @(); Arguments = " --algo blakecoin --intensity 13.2" } # FPGA # [PSCustomObject]@{ Algorithm = "Lyra2RE3"; MinMemGiB = 3; MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(); Arguments = " --algo lyra2v3 --intensity 24" } # ASIC # [PSCustomObject]@{ Algorithm = "Lyra2z330"; MinMemGiB = 3; MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(); Arguments = " --algo lyra2z330 --intensity 13.2" } # Algorithm is dead # [PSCustomObject]@{ Algorithm = "Yescrypt"; MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(); Arguments = " --algo yescrypt" } # bad shares, CcminerLyra2z330-v8.21r9 is fastest diff --git a/Miners/CcminerMemeHash-v2.5.5.9.ps1 b/Miners/CcminerMemeHash-v2.5.5.9.ps1 index 942d24c4..f8aedc40 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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 e251b62d..c2b13f0b 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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 ee5668aa..01663cec 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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 e8960008..c01d5a96 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "7.5" }))) { Return } diff --git a/Miners/ClaymoreDualME-v2.7.ps1 b/Miners/ClaymoreDualME-v2.7.ps1 index 30dd3429..65a04334 100644 --- a/Miners/ClaymoreDualME-v2.7.ps1 +++ b/Miners/ClaymoreDualME-v2.7.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "AMD" -and $Variables.DriverVersion.CIM.AMD -le [Version]"20.45.01.28") -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } # Only supports AMD drivers until 20.12.1 diff --git a/Miners/ClaymoreNeoscrypt-v1.2.ps1 b/Miners/ClaymoreNeoscrypt-v1.2.ps1 index 95dcd083..aeb86ddc 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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 52fb7d90..8eadd7f6 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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 6695b9f5..50ab386a 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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 b932bd1a..d1750899 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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 4eeac084..717eb942 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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 9a26a080..728490f8 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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 e49a83c1..c54707f8 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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 6dec8e99..388251c4 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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 d3247cb3..c8420714 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> using module ..\Includes\Include.psm1 diff --git a/Miners/GMiner-v3.44.ps1 b/Miners/GMiner-v3.44.ps1 index 742d9f09..dd988014 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> using module ..\Includes\Include.psm1 @@ -46,7 +46,7 @@ $Algorithms = @( # [PSCustomObject]@{ Algorithms = @("Cuckatoo32"); Type = "NVIDIA"; Fee = @(0.05); MinMemGiB = 8.0; Tuning = " --mt 2"; MinerSet = 3; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); AutoCoinPers = ""; Arguments = " --nvml 0 --algo cuckatoo32 --cuda 1 --opencl 0" } # ASIC [PSCustomObject]@{ Algorithms = @("Cuckaroo30CTX"); Type = "NVIDIA"; Fee = @(0.05); MinMemGiB = 8.0; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); AutoCoinPers = ""; Arguments = " --nvml 0 --algo cortex --cuda 1 --opencl 0" } [PSCustomObject]@{ Algorithms = @("Cuckoo29"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 6.0; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); AutoCoinPers = ""; Arguments = " --nvml 0 --algo aeternity --cuda 1 --opencl 0" } - [PSCustomObject]@{ Algorithms = @("Equihash1254"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 3.0; Tuning = " --mt 2"; MinerSet = 1; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); AutoCoinPers = ""; Arguments = " --nvml 0 --algo equihash125_4 --cuda 1 --opencl 0" } # MiniZ-v2.3c is fastest + [PSCustomObject]@{ Algorithms = @("Equihash1254"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 3.0; Tuning = " --mt 2"; MinerSet = 1; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); AutoCoinPers = ""; Arguments = " --nvml 0 --algo equihash125_4 --cuda 1 --opencl 0" } # MiniZ-v2.4.d is fastest [PSCustomObject]@{ Algorithms = @("Equihash1445"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 2.1; Tuning = " --mt 2"; MinerSet = 1; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ProHashing"), @()); AutoCoinPers = " --pers auto"; Arguments = " --nvml 0 --algo equihash144_5 --cuda 1 --opencl 0" } # FPGA [PSCustomObject]@{ Algorithms = @("Equihash2109"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 1.0; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); AutoCoinPers = ""; Arguments = " --nvml 0 --algo equihash210_9 --cuda 1 --opencl 0" } [PSCustomObject]@{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @("NiceHash")); AutoCoinPers = ""; Arguments = " --nvml 0 --algo etchash --cuda 1 --opencl 0" } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool diff --git a/Miners/HellMiner-v0.59.1.ps1 b/Miners/HellMiner-v0.59.1.ps1 index f82415b5..4568acc1 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } diff --git a/Miners/JayddeeCpu-v24.3.ps1 b/Miners/JayddeeCpu-v24.3.ps1 index fd47c3ba..47926d09 100644 --- a/Miners/JayddeeCpu-v24.3.ps1 +++ b/Miners/JayddeeCpu-v24.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } @@ -44,7 +44,7 @@ $Algorithms = @( [PSCustomObject]@{ Algorithm = "Argon2d500"; MinerSet = 3; WarmupTimes = @(45, 60); ExcludePools = @(); Arguments = " --algo argon2d500" } [PSCustomObject]@{ Algorithm = "Argon2d5096"; MinerSet = 3; WarmupTimes = @(45, 60); ExcludePools = @(); Arguments = " --algo argon2d5096" } [PSCustomObject]@{ Algorithm = "Blake2b"; MinerSet = 3; WarmupTimes = @(45, 30); ExcludePools = @(); Arguments = " --algo blake2b" } # FPGA - [PSCustomObject]@{ Algorithm = "Blake256R8"; MinerSet = 3; WarmupTimes = @(45, 30); ExcludePools = @(); Arguments = " --algo blake256r8" } # FPGA + [PSCustomObject]@{ Algorithm = "Blake2s"; MinerSet = 3; WarmupTimes = @(45, 30); ExcludePools = @(); Arguments = " --algo blake2s" } # ASIC [PSCustomObject]@{ Algorithm = "Bastiom"; MinerSet = 3; WarmupTimes = @(45, 30); ExcludePools = @(); Arguments = " --algo bastion" } [PSCustomObject]@{ Algorithm = "BMW"; MinerSet = 3; WarmupTimes = @(45, 30); ExcludePools = @(); Arguments = " --algo bmw" } [PSCustomObject]@{ Algorithm = "HMQ1725"; MinerSet = 3; WarmupTimes = @(45, 60); ExcludePools = @(); Arguments = " --algo hmq1725" } # GPU diff --git a/Miners/KawpowMiner-v1.2.4cl.ps1 b/Miners/KawpowMiner-v1.2.4cl.ps1 index 5101d219..5ad5ec38 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" }))) { Return } @@ -26,7 +26,7 @@ If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" }))) { $URI = "https://github.com/UselessGuru/UG-Miner-Binaries/releases/download/KawpowMiner/kawpowminer-windows-1.2.4-opencl.zip" $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName $Path = "$PWD\Bin\$Name\kawpowminer.exe" -$DeviceEnumerator = "Type_Vendor_Index" +$DeviceEnumerator = "Type_Vendor_Slot" $Algorithms = @( [PSCustomObject]@{ Algorithm = "KawPow"; MinMemGiB = 0.93; MinerSet = 2; WarmupTimes = @(75, 10); ExcludePools = @(); Arguments = "" } diff --git a/Miners/KawpowMiner-v1.2.4cuda.ps1 b/Miners/KawpowMiner-v1.2.4cuda.ps1 index 2ff3e88b..5f7d6b88 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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 d70036f0..b45cf49e 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Vendor -ne "CPU" -or $_.CUDAVersion -ge [Version]"10.2" }))) { Return } diff --git a/Miners/MeowPowMiner-v2.0.0cl.ps1 b/Miners/MeowPowMiner-v2.0.0cl.ps1 index db989bfc..b5bb97e0 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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 c2932923..76a6f960 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/MiniZ-v2.3c.ps1 b/Miners/MiniZ-v2.4d.ps1 similarity index 79% rename from Miners/MiniZ-v2.3c.ps1 rename to Miners/MiniZ-v2.4d.ps1 index 6d94de4b..47435f54 100644 --- a/Miners/MiniZ-v2.3c.ps1 +++ b/Miners/MiniZ-v2.4d.ps1 @@ -17,40 +17,41 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> using module ..\Includes\Include.psm1 If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } -$URI = "https://github.com/UselessGuru/UG-Miner-Binaries/releases/download/MiniZ/miniZ_v2.3c_win-x64.zip" +$URI = "https://github.com/UselessGuru/UG-Miner-Binaries/releases/download/MiniZ/miniZ_v2.4d_win-x64.zip" $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName $Path = "$PWD\Bin\$Name\miniZ.exe" $DeviceEnumerator = "Type_Vendor_Slot" $Algorithms = @( - [PSCustomObject]@{ Algorithm = "BeamV3"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "GCN4", "RDNA1"); ExcludePools = @("NiceHash"); AutoCoinPers = ""; Arguments = " --amd --par=beam3" } - [PSCustomObject]@{ Algorithm = "Equihash1254"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @("RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=125,4 --smart-pers" } - [PSCustomObject]@{ Algorithm = "Equihash1445"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @("RDNA1"); ExcludePools = @(); AutoCoinPers = " --par=144,5"; Arguments = " --amd" } # FPGA - [PSCustomObject]@{ Algorithm = "Equihash1505"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @("RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=150,5 --smart-pers" } - [PSCustomObject]@{ Algorithm = "Equihash1927"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 2.3; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "GCN4", "RDNA1", "RDNA2", "RDNA3"); ExcludePools = @(); AutoCoinPers = " --par=192,7"; Arguments = " --amd" } #FPGA - [PSCustomObject]@{ Algorithm = "Equihash2109"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @("RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=210,9 --smart-pers" } - [PSCustomObject]@{ Algorithm = "Equihash965"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=96,5 --smart-pers" } - [PSCustomObject]@{ Algorithm = "EtcHash"; Type = "AMD"; Fee = @(0.0075); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "_RDNA1"); ExcludePools = @("NiceHash"); AutoCoinPers = ""; Arguments = " --amd --par=etcHash --dag-fix" } - [PSCustomObject]@{ Algorithm = "Ethash"; Type = "AMD"; Fee = @(0.0075); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3"); ExcludePools = @("NiceHash"); AutoCoinPers = ""; Arguments = " --amd --par=ethash --dag-fix" } - [PSCustomObject]@{ Algorithm = "EthashB3"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=ethashb3 --dag-fix" } - [PSCustomObject]@{ Algorithm = "EvrProgPow"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --pers=EVRMORE-PROGPOW --dag-fix" } - [PSCustomObject]@{ Algorithm = "FiroPow"; Type = "AMD"; Fee = @(0.0075); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(55, 45); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --pers=firo" } - [PSCustomObject]@{ Algorithm = "KawPow"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(45, 35); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=kawpow --dag-fix --pers=RAVENCOINKAWPOW" } - [PSCustomObject]@{ Algorithm = "HeavyHashKarlsen"; Type = "AMD"; Fee = @(0.008); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "GCN4", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --pers=kls" } -# [PSCustomObject]@{ Algorithm = "HeavyHashKaspa"; Type = "AMD"; Fee = @(0.008); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(45, 35); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "GCN4", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=kaspa" } # ASIC - [PSCustomObject]@{ Algorithm = "HeavyHashPyrin"; Type = "AMD"; Fee = @(0.008); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "GCN4", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --pers=pyr" } - [PSCustomObject]@{ Algorithm = "ProgPowSero"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=progpow --pers=sero" } - [PSCustomObject]@{ Algorithm = "ProgPowVeil"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 8.0; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=progpow --pers=veil" } - [PSCustomObject]@{ Algorithm = "ProgPowVeriblock"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=progpow --pers=VeriBlock" } - [PSCustomObject]@{ Algorithm = "ProgPowZ"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=progpow --pers=auto" } + [PSCustomObject]@{ Algorithm = "BeamV3"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "GCN4", "RDNA1"); ExcludePools = @("NiceHash"); AutoCoinPers = ""; Arguments = " --amd --par=beam3" } + [PSCustomObject]@{ Algorithm = "Equihash1254"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @("RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=125,4 --smart-pers" } + [PSCustomObject]@{ Algorithm = "Equihash1445"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @("RDNA1"); ExcludePools = @(); AutoCoinPers = " --par=144,5"; Arguments = " --amd" } # FPGA + [PSCustomObject]@{ Algorithm = "Equihash1505"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @("RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=150,5 --smart-pers" } + [PSCustomObject]@{ Algorithm = "Equihash1927"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 2.3; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); AutoCoinPers = " --par=192,7"; Arguments = " --amd" } #FPGA + [PSCustomObject]@{ Algorithm = "Equihash2109"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @("RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=210,9 --smart-pers" } + [PSCustomObject]@{ Algorithm = "Equihash965"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=96,5 --smart-pers" } + [PSCustomObject]@{ Algorithm = "EtcHash"; Type = "AMD"; Fee = @(0.0075); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3"); ExcludePools = @("NiceHash"); AutoCoinPers = ""; Arguments = " --amd --par=etcHash --dag-fix" } + [PSCustomObject]@{ Algorithm = "Ethash"; Type = "AMD"; Fee = @(0.0075); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3"); ExcludePools = @("NiceHash"); AutoCoinPers = ""; Arguments = " --amd --par=ethash --dag-fix" } + [PSCustomObject]@{ Algorithm = "EthashB3"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "RDNA1"); ExcludePools = @("ZergPool"); AutoCoinPers = ""; Arguments = " --amd --par=ethashb3 --dag-fix" } + [PSCustomObject]@{ Algorithm = "EvrProgPow"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --pers=EVRMORE-PROGPOW --dag-fix" } + [PSCustomObject]@{ Algorithm = "FiroPow"; Type = "AMD"; Fee = @(0.0075); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(55, 45); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --pers=firo" } + [PSCustomObject]@{ Algorithm = "HeavyHashKarlsen"; Type = "AMD"; Fee = @(0.008); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --pers=kls" } + [PSCustomObject]@{ Algorithm = "HeavyHashPyrin"; Type = "AMD"; Fee = @(0.008); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --pers=pyr" } + [PSCustomObject]@{ Algorithm = "KawPow"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(45, 35); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=kawpow --dag-fix --pers=RAVENCOINKAWPOW" } + [PSCustomObject]@{ Algorithm = "HeavyHashKarlsen"; Type = "AMD"; Fee = @(0.008); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(45, 0) ; ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "GCN4", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --pers=kls" } + [PSCustomObject]@{ Algorithm = "HeavyHashPyrin"; Type = "AMD"; Fee = @(0.008); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "GCN4", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --pers=pyr" } + [PSCustomObject]@{ Algorithm = "ProgPowSero"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=progpow --pers=sero" } + [PSCustomObject]@{ Algorithm = "ProgPowVeil"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 8.0; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=progpow --pers=veil" } + [PSCustomObject]@{ Algorithm = "ProgPowVeriblock"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=progpow --pers=VeriBlock" } + [PSCustomObject]@{ Algorithm = "ProgPowZ"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @("GCN1", "GCN2", "GCN3", "RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=progpow --pers=auto" } [PSCustomObject]@{ Algorithm = "BeamV3"; Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 2; Tuning = " --ocX"; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @("NiceHash"); AutoCoinPers = ""; Arguments = " --nvidia --par=beam3" } [PSCustomObject]@{ Algorithm = "Equihash1254"; Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 3.0; MinerSet = 0; Tuning = " --ocX"; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --nvidia --par=125,4 --smart-pers" } @@ -61,11 +62,10 @@ $Algorithms = @( [PSCustomObject]@{ Algorithm = "Equihash965"; Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 2.0; MinerSet = 2; Tuning = " --ocX"; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --nvidia --par=96,5 --smart-pers" } [PSCustomObject]@{ Algorithm = "EtcHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.08; MinerSet = 2; Tuning = " --ocX"; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @("NiceHash"); AutoCoinPers = ""; Arguments = " --nvidia --par=etcHash --dag-fix" } [PSCustomObject]@{ Algorithm = "Ethash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.08; MinerSet = 2; Tuning = " --ocX"; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @("NiceHash"); AutoCoinPers = ""; Arguments = " --nvidia --par=ethash --dag-fix" } - [PSCustomObject]@{ Algorithm = "EthashB3"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " --ocX"; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --nvidia --par=ethashb3 --dag-fix" } + [PSCustomObject]@{ Algorithm = "EthashB3"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " --ocX"; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @("ZergPool"); AutoCoinPers = ""; Arguments = " --nvidia --par=ethashb3 --dag-fix" } [PSCustomObject]@{ Algorithm = "EvrProgPow"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " --ocX"; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --nvidia --pers=EVRMORE-PROGPOW --dag-fix" } [PSCustomObject]@{ Algorithm = "FiroPow"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.08; MinerSet = 2; Tuning = " --ocX"; WarmupTimes = @(55, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --nvidia --pers=firo" } [PSCustomObject]@{ Algorithm = "HeavyHashKarlsen"; Type = "NVIDIA"; Fee = @(0.008); MinMemGiB = 2.0; MinerSet = 0; Tuning = " --ocX"; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --nvidia --pers=kls" } -# [PSCustomObject]@{ Algorithm = "HeavyHashKaspa"; Type = "NVIDIA"; Fee = @(0.008); MinMemGiB = 1.08; MinerSet = 2; Tuning = " --ocX"; WarmupTimes = @(45, 35); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --nvidia --par=kaspa" } # ASIC [PSCustomObject]@{ Algorithm = "HeavyHashPyrin"; Type = "NVIDIA"; Fee = @(0.008); MinMemGiB = 2.0; MinerSet = 0; Tuning = " --ocX"; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --nvidia --pers=pyr" } [PSCustomObject]@{ Algorithm = "KawPow"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " --ocX"; WarmupTimes = @(45, 35); ExcludeGPUArchitecture = @(); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --nvidia --par=kawpow --dag-fix --pers=RAVENCOINKAWPOW" } [PSCustomObject]@{ Algorithm = "ProgPowSero"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " --ocX"; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --nvidia --pers=sero" } diff --git a/Miners/NBMiner-v42.3.ps1 b/Miners/NBMiner-v42.3.ps1 index 99ed6f08..5a04a0d0 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "5.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 30dbc1f0..b026d706 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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.1.ps1 b/Miners/NanoMiner-v3.9.1.ps1 index fbaafdd9..4f113e80 100644 --- a/Miners/NanoMiner-v3.9.1.ps1 +++ b/Miners/NanoMiner-v3.9.1.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -ne "NVIDIA" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge [Version]"455.23") }))) { Return } @@ -35,8 +35,8 @@ $Algorithms = @( # [PSCustomObject]@{ Algorithms = @("EtcHash", "HeavyHashKaspa"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100 -memTweak 2"; WarmupTimes = @(45, 60); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @("GCN4"); Arguments = @(" -algo Etchash"," -algo Kaspa") } # ASIC [PSCustomObject]@{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100 -memTweak 2"; WarmupTimes = @(45, 0); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @(""); Arguments = @(" -algo Ethash") } # PhoenixMiner-v6.2c is fastest # [PSCustomObject]@{ Algorithms = @("Ethash", "HeavyHashKaspa"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100 -memTweak 2"; WarmupTimes = @(45, 60); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @("GCN4"); Arguments = @(" -algo Ethash"," -algo Kaspa") } # ASIC - [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100 -memTweak 2"; WarmupTimes = @(45, 60); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @(); Arguments = @(" -algo EthashB3") } -# [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashKaspa"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100 -memTweak 2"; WarmupTimes = @(45, 60); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @("GCN4"); Arguments = @(" -algo EthashB3", " -algo Kaspa") } # ASIC + [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100 -memTweak 2"; WarmupTimes = @(45, 60); ExcludePools = @(@("ZergPool"), @()); ExcludeGPUArchitecture = @(); Arguments = @(" -algo EthashB3") } +# [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashKaspa"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100 -memTweak 2"; WarmupTimes = @(45, 60); ExcludePools = @(@("ZergPool"), @()); ExcludeGPUArchitecture = @("GCN4"); Arguments = @(" -algo EthashB3", " -algo Kaspa") } # ASIC [PSCustomObject]@{ Algorithms = @("EvrProgPow"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 1.08; MinerSet = 1; Tuning = " -coreClocks +20 -memClocks +100 -memTweak 2"; WarmupTimes = @(45, 60); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @(); Arguments = @(" -algo Evrprogpow") } [PSCustomObject]@{ Algorithms = @("FiroPow"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " -coreClocks +20 -memClocks +100 -memTweak 2"; WarmupTimes = @(45, 0); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @(); Arguments = @(" -algo FiroPow") } [PSCustomObject]@{ Algorithms = @("FishHash"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 6; MinerSet = 1; Tuning = " -coreClocks +20 -memClocks +100 -memTweak 2"; WarmupTimes = @(45, 0); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @("RDNA1"); Arguments = @(" -algo Fishhash") } # https://github.com/nanopool/nanominer/issues/427 @@ -53,9 +53,9 @@ $Algorithms = @( [PSCustomObject]@{ Algorithms = @("EtcHash"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(45, 45); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @(); Arguments = @(" -algo Etchash") } # [PSCustomObject]@{ Algorithms = @("EtcHash", "HeavyHashKaspa"); Type = "INTEL"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 45); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @(); Arguments = @(" -algo Etchash", " -algo Kaspa") } # ASIC [PSCustomObject]@{ Algorithms = @("Ethash"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(45, 0); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @(); Arguments = @(" -algo Ethash") } -# [PSCustomObject]@{ Algorithms = @("Ethash", "HeavyHashKaspa"); Type = "INTEL"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 60); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @(); Arguments = @(" -algo Ethash", " -algo Kaspa") } # ASIC - [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(45, 0); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @(); Arguments = @(" -algo EthashB3") } -# [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashKaspa"); Type = "INTEL"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 60); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @(); Arguments = @(" -algo EthashB3", " -algo Kaspa") } # ASIC +# [PSCustomObject]@{ Algorithms = @("Ethash", "HeavyHashKaspa"); Type = "INTEL"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 60); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @(); Arguments = @(" -algo Ethash", " -algo Kaspa") } # ASIC + [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(45, 0); ExcludePools = @(@("ZergPool"), @()); ExcludeGPUArchitecture = @(); Arguments = @(" -algo EthashB3") } +# [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashKaspa"); Type = "INTEL"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 60); ExcludePools = @(@("ZergPool"), @()); ExcludeGPUArchitecture = @(); Arguments = @(" -algo EthashB3", " -algo Kaspa") } # ASIC [PSCustomObject]@{ Algorithms = @("EvrProgPow"); Type = "INTEL"; Fee = @(0.02); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(45, 0); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @(); Arguments = @(" -algo Evrprogpow") } [PSCustomObject]@{ Algorithms = @("FishHash"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 6; MinerSet = 1; WarmupTimes = @(45, 0); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @(); Arguments = @(" -algo Fishhash") } [PSCustomObject]@{ Algorithms = @("HeavyHashKarlsen"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 0); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @(); Arguments = @(" -algo Karlsen") } @@ -69,8 +69,8 @@ $Algorithms = @( [PSCustomObject]@{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @(); Arguments = @(" -algo Etchash") } # PhoenixMiner-v6.2c is fastest # [PSCustomObject]@{ Algorithms = @("EtcHash", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 60); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @(); Arguments = @(" -algo Etchash", " -algo Kaspa") } # ASIC [PSCustomObject]@{ Algorithms = @("Ethash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @("Other"); Arguments = @(" -algo Ethash") } # PhoenixMiner-v6.2c is fastest -# [PSCustomObject]@{ Algorithms = @("Ethash", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 60); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @("Other"); Arguments = @(" -algo Ethash", " -algo Kaspa") } # ASIC - [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @("Other"); Arguments = @(" -algo EthashB3") } +# [PSCustomObject]@{ Algorithms = @("Ethash", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 60); ExcludePools = @(@("ZergPool"), @()); ExcludeGPUArchitecture = @("Other"); Arguments = @(" -algo Ethash", " -algo Kaspa") } # ASIC + [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludePools = @(@("ZergPool"), @()); ExcludeGPUArchitecture = @("Other"); Arguments = @(" -algo EthashB3") } # [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 60); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @("Other"); Arguments = @(" -algo EthashB3", " -algo Kaspa") } # ASIC [PSCustomObject]@{ Algorithms = @("EvrProgPow"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 1.08; MinerSet = 1; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @(); Arguments = @(" -algo Evrprogpow") } [PSCustomObject]@{ Algorithms = @("FiroPow"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 0; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludePools = @(@(), @()); ExcludeGPUArchitecture = @(); Arguments = @(" -algo FiroPow") } diff --git a/Miners/Ninjarig-1.0.3.ps1 b/Miners/Ninjarig-1.0.3.ps1 index 5ae87a5d..15938114 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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 dcd3555c..7032784d 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } diff --git a/Miners/OneZeroMiner-v1.3.4.ps1 b/Miners/OneZeroMiner-v1.3.4.ps1 index c757dffe..b8cd03dc 100644 --- a/Miners/OneZeroMiner-v1.3.4.ps1 +++ b/Miners/OneZeroMiner-v1.3.4.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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 0c1294f4..00a9a5ee 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/Radiator-v1.0.0.ps1 b/Miners/Radiator-v1.0.0.ps1 index dc63381f..1246bb13 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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 37ac671d..20e3319e 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } diff --git a/Miners/Rigel-v1.17.4.ps1 b/Miners/Rigel-v1.17.4.ps1 index 72d94828..e1c83735 100644 --- a/Miners/Rigel-v1.17.4.ps1 +++ b/Miners/Rigel-v1.17.4.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> # Return @@ -30,54 +30,54 @@ $Path = "$PWD\Bin\$Name\Rigel.exe" $DeviceEnumerator = "Type_Vendor_Slot" $Algorithms = @( - [PSCustomObject]@{ Algorithms = @("Autolykos2"); Fee = @(0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm autolykos2" } - [PSCustomObject]@{ Algorithms = @("Autolykos2", "Blake3"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm autolykos2+alephium" } - [PSCustomObject]@{ Algorithms = @("Autolykos2", "HeavyHashKarlsen"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm autolykos2+karlsenhash" } - [PSCustomObject]@{ Algorithms = @("Autolykos2", "HeavyHashPyrin"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm autolykos2+pyrinhash" } - [PSCustomObject]@{ Algorithms = @("Autolykos2", "FishHash"); Fee = @(0.01, 0.01); MinMemGiB = 6.0; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm autolykos2+fishhash" } - [PSCustomObject]@{ Algorithms = @("Autolykos2", "SHA512256d"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZPool")); Arguments = " --algorithm autolykos2+sha512256d" } - [PSCustomObject]@{ Algorithms = @("Blake3"); Fee = @(0.007); MinMemGiB = 2.0; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm alephium" } - [PSCustomObject]@{ Algorithms = @("EtcHash"); Fee = @(0.007); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm etchash" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "Blake3"); Fee = @(0.007, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm etchash+alephium" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "HeavyHashKarlsen"); Fee = @(0.007, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm etchash+karlsenhash" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "HeavyHashPyrin"); Fee = @(0.007, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm etchash+pyrinhash" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "FishHash"); Fee = @(0.007, 0.01); MinMemGiB = 6.0; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm etchash+fishhash" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "SHA512256d"); Fee = @(0.007, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZPool")); Arguments = " --algorithm etchash+sha512256d" } - [PSCustomObject]@{ Algorithms = @("Ethash"); Fee = @(0.007); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm ethash" } - [PSCustomObject]@{ Algorithms = @("Ethash", "Blake3"); Fee = @(0.007, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm ethash+alephium" } - [PSCustomObject]@{ Algorithms = @("Ethash", "HeavyHashKarlsen"); Fee = @(0.007, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm ethash+karlsenhash" } - [PSCustomObject]@{ Algorithms = @("Ethash", "HeavyHashPyrin"); Fee = @(0.007, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm ethash+pyrinhash" } - [PSCustomObject]@{ Algorithms = @("Ethash", "FishHash"); Fee = @(0.007, 0.01); MinMemGiB = 6.0; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm ethash+fishhash" } - [PSCustomObject]@{ Algorithms = @("Ethash", "SHA512256d"); Fee = @(0.007, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZPool")); Arguments = " --algorithm ethash+sha512256d" } - [PSCustomObject]@{ Algorithms = @("EthashB3"); Fee = @(0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm ethashb3" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "Blake3"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm ethashb3+alephium" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm ethashb3+karlsenhash" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashPyrin"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm ethashb3+pyrinhash" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "FishHash"); Fee = @(0.01, 0.01); MinMemGiB = 6.0; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm ethashb3+fishhash" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "SHA512256d"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZPool")); Arguments = " --algorithm ethashb3+sha512256d" } - [PSCustomObject]@{ Algorithms = @("EthashSHA256"); Fee = @(0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm abelian" } - [PSCustomObject]@{ Algorithms = @("EthashSHA256", "Blake3"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm abelian+alephium" } - [PSCustomObject]@{ Algorithms = @("EthashSHA256", "HeavyHashKarlsen"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm abelian+karlsenhash" } - [PSCustomObject]@{ Algorithms = @("EthashSHA256", "HeavyHashPyrin"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm abelian+pyrinhash" } - [PSCustomObject]@{ Algorithms = @("EthashSHA256", "FishHash"); Fee = @(0.01, 0.01); MinMemGiB = 6.0; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm abelian+fishhash" } - [PSCustomObject]@{ Algorithms = @("EthashSHA256", "SHA512256d"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZPool")); Arguments = " --algorithm abelian+sha512256d" } - [PSCustomObject]@{ Algorithms = @("FishHash"); Fee = @(0.01); MinMemGiB = 6.0; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm fishhash" } - [PSCustomObject]@{ Algorithms = @("FishHash", "Blake3"); Fee = @(0.01, 0.01); MinMemGiB = 6.0; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm fishhash+alephium" } - [PSCustomObject]@{ Algorithms = @("FishHash", "HeavyHashKarlsen"); Fee = @(0.01, 0.01); MinMemGiB = 6.0; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm fishhash+karlsenhash" } - [PSCustomObject]@{ Algorithms = @("FishHash", "HeavyHashPyrin"); Fee = @(0.01, 0.01); MinMemGiB = 6.0; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm fishhash+pyrinhash" } - [PSCustomObject]@{ Algorithms = @("FishHash", "SHA512256d"); Fee = @(0.01, 0.01); MinMemGiB = 6.0; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZPool")); Arguments = " --algorithm fishhash+sha512256d" } - [PSCustomObject]@{ Algorithms = @("HeavyHashKarlsen"); Fee = @(0.007); MinMemGiB = 2.0; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm karlsenhash" } - [PSCustomObject]@{ Algorithms = @("HeavyHashPyrin"); Fee = @(0.01); MinMemGiB = 2.0; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm pyrinhash" } - [PSCustomObject]@{ Algorithms = @("KawPow"); Fee = @(0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(90, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm kawpow" } - [PSCustomObject]@{ Algorithms = @("NexaPow"); Fee = @(0.02); MinMemGiB = 3.0; Tuning = " --mt 2"; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm nexapow" } - [PSCustomObject]@{ Algorithms = @("Octopus"); Fee = @(0.02); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm octopus" } - [PSCustomObject]@{ Algorithms = @("Octopus", "Blake3"); Fee = @(0.02, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm octopus+alephium" } - [PSCustomObject]@{ Algorithms = @("Octopus", "HeavyHashKarlsen"); Fee = @(0.02, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm octopus+karlsenhash" } - [PSCustomObject]@{ Algorithms = @("Octopus", "HeavyHashPyrin"); Fee = @(0.02, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm octopus+pyrinhash" } - [PSCustomObject]@{ Algorithms = @("Octopus", "SHA512256d"); Fee = @(0.02, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm octopus+sha512256d" } - [PSCustomObject]@{ Algorithms = @("PowBlocks"); Fee = @(0.007); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm powblocks" } - [PSCustomObject]@{ Algorithms = @("SHA512256d"); Fee = @(0.01); MinMemGiB = 1.0; Tuning = " --mt 2"; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZPool"), @()); Arguments = " --algorithm sha512256d" } -# [PSCustomObject]@{ Algorithms = @("XelisHash"); Fee = @(0.03); MinMemGiB = 1.0; Tuning = " --mt 2"; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm xelishash" } # No supported pools yet + [PSCustomObject]@{ Algorithms = @("Autolykos2"); Fee = @(0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm autolykos2" } + [PSCustomObject]@{ Algorithms = @("Autolykos2", "Blake3"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm autolykos2+alephium" } + [PSCustomObject]@{ Algorithms = @("Autolykos2", "HeavyHashKarlsen"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm autolykos2+karlsenhash" } + [PSCustomObject]@{ Algorithms = @("Autolykos2", "HeavyHashPyrin"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm autolykos2+pyrinhash" } + [PSCustomObject]@{ Algorithms = @("Autolykos2", "FishHash"); Fee = @(0.01, 0.01); MinMemGiB = 6.0; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm autolykos2+fishhash" } + [PSCustomObject]@{ Algorithms = @("Autolykos2", "SHA512256d"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZPool")); Arguments = " --algorithm autolykos2+sha512256d" } + [PSCustomObject]@{ Algorithms = @("Blake3"); Fee = @(0.007); MinMemGiB = 2.0; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm alephium" } + [PSCustomObject]@{ Algorithms = @("EtcHash"); Fee = @(0.007); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm etchash" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "Blake3"); Fee = @(0.007, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm etchash+alephium" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "HeavyHashKarlsen"); Fee = @(0.007, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm etchash+karlsenhash" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "HeavyHashPyrin"); Fee = @(0.007, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm etchash+pyrinhash" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "FishHash"); Fee = @(0.007, 0.01); MinMemGiB = 6.0; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm etchash+fishhash" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "SHA512256d"); Fee = @(0.007, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZPool")); Arguments = " --algorithm etchash+sha512256d" } + [PSCustomObject]@{ Algorithms = @("Ethash"); Fee = @(0.007); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm ethash" } + [PSCustomObject]@{ Algorithms = @("Ethash", "Blake3"); Fee = @(0.007, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm ethash+alephium" } + [PSCustomObject]@{ Algorithms = @("Ethash", "HeavyHashKarlsen"); Fee = @(0.007, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm ethash+karlsenhash" } + [PSCustomObject]@{ Algorithms = @("Ethash", "HeavyHashPyrin"); Fee = @(0.007, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm ethash+pyrinhash" } + [PSCustomObject]@{ Algorithms = @("Ethash", "FishHash"); Fee = @(0.007, 0.01); MinMemGiB = 6.0; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm ethash+fishhash" } + [PSCustomObject]@{ Algorithms = @("Ethash", "SHA512256d"); Fee = @(0.007, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZPool")); Arguments = " --algorithm ethash+sha512256d" } + [PSCustomObject]@{ Algorithms = @("EthashB3"); Fee = @(0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algorithm ethashb3" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "Blake3"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algorithm ethashb3+alephium" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algorithm ethashb3+karlsenhash" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashPyrin"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algorithm ethashb3+pyrinhash" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "FishHash"); Fee = @(0.01, 0.01); MinMemGiB = 6.0; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algorithm ethashb3+fishhash" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "SHA512256d"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @("ZPool")); Arguments = " --algorithm ethashb3+sha512256d" } + [PSCustomObject]@{ Algorithms = @("EthashSHA256"); Fee = @(0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm abelian" } + [PSCustomObject]@{ Algorithms = @("EthashSHA256", "Blake3"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm abelian+alephium" } + [PSCustomObject]@{ Algorithms = @("EthashSHA256", "HeavyHashKarlsen"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm abelian+karlsenhash" } + [PSCustomObject]@{ Algorithms = @("EthashSHA256", "HeavyHashPyrin"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm abelian+pyrinhash" } + [PSCustomObject]@{ Algorithms = @("EthashSHA256", "FishHash"); Fee = @(0.01, 0.01); MinMemGiB = 6.0; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm abelian+fishhash" } + [PSCustomObject]@{ Algorithms = @("EthashSHA256", "SHA512256d"); Fee = @(0.01, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZPool")); Arguments = " --algorithm abelian+sha512256d" } + [PSCustomObject]@{ Algorithms = @("FishHash"); Fee = @(0.01); MinMemGiB = 6.0; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm fishhash" } + [PSCustomObject]@{ Algorithms = @("FishHash", "Blake3"); Fee = @(0.01, 0.01); MinMemGiB = 6.0; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm fishhash+alephium" } + [PSCustomObject]@{ Algorithms = @("FishHash", "HeavyHashKarlsen"); Fee = @(0.01, 0.01); MinMemGiB = 6.0; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm fishhash+karlsenhash" } + [PSCustomObject]@{ Algorithms = @("FishHash", "HeavyHashPyrin"); Fee = @(0.01, 0.01); MinMemGiB = 6.0; Tuning = " --mt 2"; MinerSet = 2; WarmupTimes = @(45, 25); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm fishhash+pyrinhash" } + [PSCustomObject]@{ Algorithms = @("FishHash", "SHA512256d"); Fee = @(0.01, 0.01); MinMemGiB = 6.0; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZPool")); Arguments = " --algorithm fishhash+sha512256d" } + [PSCustomObject]@{ Algorithms = @("HeavyHashKarlsen"); Fee = @(0.007); MinMemGiB = 2.0; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm karlsenhash" } + [PSCustomObject]@{ Algorithms = @("HeavyHashPyrin"); Fee = @(0.01); MinMemGiB = 2.0; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm pyrinhash" } + [PSCustomObject]@{ Algorithms = @("KawPow"); Fee = @(0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(90, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm kawpow" } + [PSCustomObject]@{ Algorithms = @("NexaPow"); Fee = @(0.02); MinMemGiB = 3.0; Tuning = " --mt 2"; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm nexapow" } + [PSCustomObject]@{ Algorithms = @("Octopus"); Fee = @(0.02); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm octopus" } + [PSCustomObject]@{ Algorithms = @("Octopus", "Blake3"); Fee = @(0.02, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm octopus+alephium" } + [PSCustomObject]@{ Algorithms = @("Octopus", "HeavyHashKarlsen"); Fee = @(0.02, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm octopus+karlsenhash" } + [PSCustomObject]@{ Algorithms = @("Octopus", "HeavyHashPyrin"); Fee = @(0.02, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm octopus+pyrinhash" } + [PSCustomObject]@{ Algorithms = @("Octopus", "SHA512256d"); Fee = @(0.02, 0.01); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm octopus+sha512256d" } + [PSCustomObject]@{ Algorithms = @("PowBlocks"); Fee = @(0.007); MinMemGiB = 0.94; Tuning = " --mt 2"; MinerSet = 0; WarmupTimes = @(45, 10); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm powblocks" } + [PSCustomObject]@{ Algorithms = @("SHA512256d"); Fee = @(0.01); MinMemGiB = 1.0; Tuning = " --mt 2"; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZPool"), @()); Arguments = " --algorithm sha512256d" } +# [PSCustomObject]@{ Algorithms = @("XelisHash"); Fee = @(0.03); MinMemGiB = 1.0; Tuning = " --mt 2"; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algorithm xelishash" } # No supported pools yet ) $Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet }) diff --git a/Miners/RplantCpu-v5.0.34.ps1 b/Miners/RplantCpu-v5.0.34.ps1 index 3734fae3..83825c31 100644 --- a/Miners/RplantCpu-v5.0.34.ps1 +++ b/Miners/RplantCpu-v5.0.34.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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 ba00b9ec..b823596e 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } @@ -28,7 +28,7 @@ $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName $Path = ".\Bin\$()$Name)\cpuminer.exe" $Algorithms = @( - [PSCustomObject]@{ Algorithm = "Blake256R8"; MinerSet = 3; WarmupTimes = @(30, 0); ExcludePools = @(); Arguments = " --algo blake256r8" } # FPGA + [PSCustomObject]@{ Algorithm = "Blakecoin"; MinerSet = 3; WarmupTimes = @(30, 0); ExcludePools = @(); Arguments = " --algo blakecoin" } # FPGA # [PSCustomObject]@{ Algorithm = "CpuPower"; MinerSet = 0; WarmupTimes = @(30, 15); ExcludePools = @(); Arguments = " --algo cpupower" } # ASIC [PSCustomObject]@{ Algorithm = "Yespower2b"; MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(); Arguments = " --algo power2b" } ) @@ -36,6 +36,7 @@ $Algorithms = @( $Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet }) $Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithm] }) # $Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithm].Name -notin $_.ExcludePools }) +$Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithm].PoolPorts[0] }) If ($Algorithms) { @@ -51,7 +52,7 @@ If ($Algorithms) { [PSCustomObject]@{ API = "CcMiner" - Arguments = "$($_.Arguments) --url $(If ($Pool.PoolPorts[1]) { "stratum+ssl" } Else { "stratum+tcp" })://$($Pool.Host):$($Pool.PoolPorts | Select-Object -Last 1) --user $($Pool.User) --pass $($Pool.Pass) --cpu-affinity AAAA --quiet --threads $($AvailableMinerDevices.CIM.NumberOfLogicalProcessors -1) --api-bind=$($MinerAPIPort)" + Arguments = "$($_.Arguments) --url stratum+tcp://$($Pool.Host):$($Pool.PoolPorts[0]) --user $($Pool.User) --pass $($Pool.Pass) --cpu-affinity AAAA --quiet --threads $($AvailableMinerDevices.CIM.NumberOfLogicalProcessors -1) --api-bind=$($MinerAPIPort)" DeviceNames = $AvailableMinerDevices.Name Fee = @(0) # Dev fee MinerSet = $_.MinerSet diff --git a/Miners/SRBMinerMulti-v0.9.4.ps1 b/Miners/SRBMinerMulti-v0.9.4.ps1 index e90e0daf..e1eb0985 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -and $_.Architecture -eq "Other" }))) { Return } diff --git a/Miners/SRBMinerMulti-v2.5.6.ps1 b/Miners/SRBMinerMulti-v2.5.7.ps1 similarity index 73% rename from Miners/SRBMinerMulti-v2.5.6.ps1 rename to Miners/SRBMinerMulti-v2.5.7.ps1 index 4c7eac04..c6f0f148 100644 --- a/Miners/SRBMinerMulti-v2.5.6.ps1 +++ b/Miners/SRBMinerMulti-v2.5.7.ps1 @@ -17,91 +17,90 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" -or $_.Type -eq "INTEL" -or ($_.Type -eq "AMD" -and $_.Model -notmatch "^RX5[5|6]0$" -and $_.OpenCL.ClVersion -ge "OpenCL C 2.0") -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge "510.00") }))) { Return } -$URI = "https://github.com/doktor83/SRBMiner-Multi/releases/download/2.5.6/SRBMiner-Multi-2-5-6-win64.zip" +$URI = "https://github.com/doktor83/SRBMiner-Multi/releases/download/2.5.7/SRBMiner-Multi-2-5-7-win64.zip" $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName $Path = "$PWD\Bin\$Name\SRBMiner-MULTI.exe" $DeviceEnumerator = "Type_Vendor_Slot" # Algorithm parameter values are case sensitive! $Algorithms = @( - [PSCustomObject]@{ Algorithms = @("0x10"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm 0x10") } - [PSCustomObject]@{ Algorithms = @("Argon2d16000"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2d_16000") } - [PSCustomObject]@{ Algorithms = @("Argon2d500"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2d_dynamic") } - [PSCustomObject]@{ Algorithms = @("Argon2Chukwa"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2id_chukwa") } - [PSCustomObject]@{ Algorithms = @("Argon2Chukwa2"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2id_chukwa2") } - [PSCustomObject]@{ Algorithms = @("Aurum"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm aurum") } - [PSCustomObject]@{ Algorithms = @("Autolykos2"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2") } - [PSCustomObject]@{ Algorithms = @("Autolykos2", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm blake3_alephium") } - [PSCustomObject]@{ Algorithms = @("Autolykos2", "Decred"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm blake3_decred") } - [PSCustomObject]@{ Algorithms = @("Autolykos2", "HeavyHash"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm heavyhash") } - [PSCustomObject]@{ Algorithms = @("Autolykos2", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @("GCN4"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm karlsenhash") } # No optimized DUAL binary found for GPU0 - [PSCustomObject]@{ Algorithms = @("Autolykos2", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @("GCN4"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm pyrinhash") } - [PSCustomObject]@{ Algorithms = @("Autolykos2", "SHA256dt"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm sha256dt") } - [PSCustomObject]@{ Algorithms = @("Autolykos2", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm sha512_256d_radiant") } - [PSCustomObject]@{ Algorithms = @("Blake3"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm blake3_alephium") } - [PSCustomObject]@{ Algorithms = @("CryptonightGpu"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_gpu") } - [PSCustomObject]@{ Algorithms = @("CryptonightHeavyXhv"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_xhv") } - [PSCustomObject]@{ Algorithms = @("CryptonightTurtle"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_turtle") } # TeamRedMiner-v0.10.21 is fastest - [PSCustomObject]@{ Algorithms = @("CryptonightUpx"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_upx") } - [PSCustomObject]@{ Algorithms = @("CurveHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm curvehash") } - [PSCustomObject]@{ Algorithms = @("Decred"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm blake3d_decred") } - [PSCustomObject]@{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); 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 - [PSCustomObject]@{ Algorithms = @("EtcHash", "Blake3"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm blake3_alephium") } - [PSCustomObject]@{ Algorithms = @("EtcHash", "Decred"); Type = "AMD"; Fee = @(0.0065, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm blake3_decred") } - [PSCustomObject]@{ Algorithms = @("EtcHash", "HeavyHash"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm heavyhash") } - [PSCustomObject]@{ Algorithms = @("EtcHash", "SHA256dt"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm sha256dt") } - [PSCustomObject]@{ Algorithms = @("EtcHash", "SHA512256d"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm sha512_256d_radiant") } - [PSCustomObject]@{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); 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 - [PSCustomObject]@{ Algorithms = @("Ethash", "Blake3"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm blake3_alephium") } - [PSCustomObject]@{ Algorithms = @("Ethash", "Decred"); Type = "AMD"; Fee = @(0.0065, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm blake3_decred") } - [PSCustomObject]@{ Algorithms = @("Ethash", "Heavyhash"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm heavyhash") } - [PSCustomObject]@{ Algorithms = @("Ethash", "SHA256dt"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm sha256dt") } - [PSCustomObject]@{ Algorithms = @("Ethash", "SHA512256d"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm sha512_256d_radiant") } - [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3") } - [PSCustomObject]@{ Algorithms = @("EthashB3", "Blake3"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm blake3_alephium") } - [PSCustomObject]@{ Algorithms = @("EthashB3", "Decred"); Type = "AMD"; Fee = @(0.0085, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm blake3_decred") } - [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm karlsenhash") } - [PSCustomObject]@{ Algorithms = @("EthashB3", "SHA256dt"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm sha256dt") } - [PSCustomObject]@{ Algorithms = @("EthashB3", "SHA512256d"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm sha512_256d_radiant") } - [PSCustomObject]@{ Algorithms = @("EvrProgPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm evrprogpow") } - [PSCustomObject]@{ Algorithms = @("FiroPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm firopow") } - [PSCustomObject]@{ Algorithms = @("FishHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 6; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash") } - [PSCustomObject]@{ Algorithms = @("FishHash", "Blake3"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @("GCN4"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm blake3_alephium") } - [PSCustomObject]@{ Algorithms = @("FishHash", "Decred"); Type = "AMD"; Fee = @(0.0085, 0.01); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @("GCN4"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm blake3_decred") } - [PSCustomObject]@{ Algorithms = @("FishHash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @("GCN4"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm karlsenhash") } - [PSCustomObject]@{ Algorithms = @("FishHash", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @("GCN4"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm pyrinhash") } - [PSCustomObject]@{ Algorithms = @("FishHash", "SHA512256d"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @("GCN4"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm sha512_256d_radiant") } - - [PSCustomObject]@{ Algorithms = @("HeavyHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm heavyhash") } # FPGA - [PSCustomObject]@{ Algorithms = @("HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm KarlsenHash") } - [PSCustomObject]@{ Algorithms = @("HeavyHashPyrin"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm pyrinhash") } - [PSCustomObject]@{ Algorithms = @("KawPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ProHashing"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm kawpow") } - [PSCustomObject]@{ Algorithms = @("Lyra2v2Webchain"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm lyra2v2_webchain") } - [PSCustomObject]@{ Algorithms = @("MemeHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm memehash") } - [PSCustomObject]@{ Algorithms = @("ProgPowEpic"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_epic") } - [PSCustomObject]@{ Algorithms = @("MeowPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm meowpow") } - [PSCustomObject]@{ Algorithms = @("ProgPowSero"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_sero") } - [PSCustomObject]@{ Algorithms = @("ProgPowVeil"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_veil") } - [PSCustomObject]@{ Algorithms = @("ProgPowVeriblock"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_veriblock") } - [PSCustomObject]@{ Algorithms = @("ProgPowZ"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_zano") } - [PSCustomObject]@{ Algorithms = @("Pufferfish2BMB"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 8; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm pufferfish2bmb") } - [PSCustomObject]@{ Algorithms = @("SHA256dt"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm sha256dt") } - [PSCustomObject]@{ Algorithms = @("SHA3d"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm sha3d") } # FPGA - [PSCustomObject]@{ Algorithms = @("SHA512256d"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm sha512_256d_radiant") } - [PSCustomObject]@{ Algorithms = @("UbqHash"); Type = "AMD"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ubqhash") } - [PSCustomObject]@{ Algorithms = @("VerusHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm verushash") } - [PSCustomObject]@{ Algorithms = @("VertHash"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm verthash --verthash-dat-path ..\.$($Variables.VerthashDatPath)") } - [PSCustomObject]@{ Algorithms = @("Yescrypt"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("MiningDutch"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescrypt") } - [PSCustomObject]@{ Algorithms = @("YescryptR8"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(90, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr8") } - [PSCustomObject]@{ Algorithms = @("YescryptR16"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr16") } - [PSCustomObject]@{ Algorithms = @("YescryptR32"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr32") } - [PSCustomObject]@{ Algorithms = @("XelisHash"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(0, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm xelishash") } + [PSCustomObject]@{ Algorithms = @("0x10"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm 0x10") } + [PSCustomObject]@{ Algorithms = @("Argon2d16000"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2d_16000") } + [PSCustomObject]@{ Algorithms = @("Argon2d500"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2d_dynamic") } + [PSCustomObject]@{ Algorithms = @("Argon2Chukwa"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2id_chukwa") } + [PSCustomObject]@{ Algorithms = @("Argon2Chukwa2"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2id_chukwa2") } + [PSCustomObject]@{ Algorithms = @("Aurum"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm aurum") } + [PSCustomObject]@{ Algorithms = @("Autolykos2"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2") } + [PSCustomObject]@{ Algorithms = @("Autolykos2", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm blake3_alephium") } + [PSCustomObject]@{ Algorithms = @("Autolykos2", "Decred"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm blake3_decred") } + [PSCustomObject]@{ Algorithms = @("Autolykos2", "HeavyHash"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm heavyhash") } + [PSCustomObject]@{ Algorithms = @("Autolykos2", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @("GCN4"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm karlsenhash") } # No optimized DUAL binary found for GPU0 + [PSCustomObject]@{ Algorithms = @("Autolykos2", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @("GCN4"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm pyrinhash") } + [PSCustomObject]@{ Algorithms = @("Autolykos2", "SHA256dt"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm sha256dt") } + [PSCustomObject]@{ Algorithms = @("Autolykos2", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm sha512_256d_radiant") } + [PSCustomObject]@{ Algorithms = @("Blake3"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm blake3_alephium") } + [PSCustomObject]@{ Algorithms = @("CryptonightGpu"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_gpu") } + [PSCustomObject]@{ Algorithms = @("CryptonightHeavyXhv"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_xhv") } + [PSCustomObject]@{ Algorithms = @("CryptonightTurtle"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_turtle") } # TeamRedMiner-v0.10.21 is fastest + [PSCustomObject]@{ Algorithms = @("CryptonightUpx"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_upx") } + [PSCustomObject]@{ Algorithms = @("CurveHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm curvehash") } + [PSCustomObject]@{ Algorithms = @("Decred"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm blake3d_decred") } + [PSCustomObject]@{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); 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 + [PSCustomObject]@{ Algorithms = @("EtcHash", "Blake3"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm blake3_alephium") } + [PSCustomObject]@{ Algorithms = @("EtcHash", "Decred"); Type = "AMD"; Fee = @(0.0065, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm blake3_decred") } + [PSCustomObject]@{ Algorithms = @("EtcHash", "HeavyHash"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm heavyhash") } + [PSCustomObject]@{ Algorithms = @("EtcHash", "SHA256dt"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm sha256dt") } + [PSCustomObject]@{ Algorithms = @("EtcHash", "SHA512256d"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm sha512_256d_radiant") } + [PSCustomObject]@{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); 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 + [PSCustomObject]@{ Algorithms = @("Ethash", "Blake3"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm blake3_alephium") } + [PSCustomObject]@{ Algorithms = @("Ethash", "Decred"); Type = "AMD"; Fee = @(0.0065, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm blake3_decred") } + [PSCustomObject]@{ Algorithms = @("Ethash", "Heavyhash"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm heavyhash") } + [PSCustomObject]@{ Algorithms = @("Ethash", "SHA256dt"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm sha256dt") } + [PSCustomObject]@{ Algorithms = @("Ethash", "SHA512256d"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm sha512_256d_radiant") } + [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3") } + [PSCustomObject]@{ Algorithms = @("EthashB3", "Blake3"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm blake3_alephium") } + [PSCustomObject]@{ Algorithms = @("EthashB3", "Decred"); Type = "AMD"; Fee = @(0.0085, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm blake3_decred") } + [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm karlsenhash") } + [PSCustomObject]@{ Algorithms = @("EthashB3", "SHA256dt"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm sha256dt") } + [PSCustomObject]@{ Algorithms = @("EthashB3", "SHA512256d"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm sha512_256d_radiant") } + [PSCustomObject]@{ Algorithms = @("EvrProgPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm evrprogpow") } + [PSCustomObject]@{ Algorithms = @("FiroPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm firopow") } + [PSCustomObject]@{ Algorithms = @("FishHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 6; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash") } + [PSCustomObject]@{ Algorithms = @("FishHash", "Blake3"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @("GCN4"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm blake3_alephium") } + [PSCustomObject]@{ Algorithms = @("FishHash", "Decred"); Type = "AMD"; Fee = @(0.0085, 0.01); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @("GCN4"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm blake3_decred") } + [PSCustomObject]@{ Algorithms = @("FishHash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @("GCN4"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm karlsenhash") } + [PSCustomObject]@{ Algorithms = @("FishHash", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @("GCN4"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm pyrinhash") } + [PSCustomObject]@{ Algorithms = @("FishHash", "SHA512256d"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @("GCN4"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm sha512_256d_radiant") } + [PSCustomObject]@{ Algorithms = @("HeavyHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm heavyhash") } # FPGA + [PSCustomObject]@{ Algorithms = @("HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm KarlsenHash") } + [PSCustomObject]@{ Algorithms = @("HeavyHashPyrin"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm pyrinhash") } + [PSCustomObject]@{ Algorithms = @("KawPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ProHashing"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm kawpow") } + [PSCustomObject]@{ Algorithms = @("Lyra2v2Webchain"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm lyra2v2_webchain") } + [PSCustomObject]@{ Algorithms = @("MemeHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm memehash") } + [PSCustomObject]@{ Algorithms = @("ProgPowEpic"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_epic") } + [PSCustomObject]@{ Algorithms = @("MeowPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm meowpow") } + [PSCustomObject]@{ Algorithms = @("ProgPowSero"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_sero") } + [PSCustomObject]@{ Algorithms = @("ProgPowVeil"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_veil") } + [PSCustomObject]@{ Algorithms = @("ProgPowVeriblock"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_veriblock") } + [PSCustomObject]@{ Algorithms = @("ProgPowZ"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_zano") } + [PSCustomObject]@{ Algorithms = @("Pufferfish2BMB"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 8; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm pufferfish2bmb") } + [PSCustomObject]@{ Algorithms = @("SHA256dt"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm sha256dt") } + [PSCustomObject]@{ Algorithms = @("SHA3d"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm sha3d") } # FPGA + [PSCustomObject]@{ Algorithms = @("SHA512256d"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm sha512_256d_radiant") } + [PSCustomObject]@{ Algorithms = @("UbqHash"); Type = "AMD"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ubqhash") } + [PSCustomObject]@{ Algorithms = @("VerusHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm verushash") } + [PSCustomObject]@{ Algorithms = @("VertHash"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm verthash --verthash-dat-path ..\.$($Variables.VerthashDatPath)") } + [PSCustomObject]@{ Algorithms = @("Yescrypt"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("MiningDutch"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescrypt") } + [PSCustomObject]@{ Algorithms = @("YescryptR8"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(90, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr8") } + [PSCustomObject]@{ Algorithms = @("YescryptR16"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr16") } + [PSCustomObject]@{ Algorithms = @("YescryptR32"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr32") } + [PSCustomObject]@{ Algorithms = @("XelisHash"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(0, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm xelishash") } [PSCustomObject]@{ Algorithms = @("Argon2d16000"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm argon2d_16000") } [PSCustomObject]@{ Algorithms = @("Argon2d500"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm argon2d_dynamic") } @@ -172,11 +171,11 @@ $Algorithms = @( [PSCustomObject]@{ Algorithms = @("Ethash", "Heavyhash"); Type = "INTEL"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethash", " --algorithm heavyhash") } [PSCustomObject]@{ Algorithms = @("Ethash", "SHA256dt"); Type = "INTEL"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethash", " --algorithm sha256dt") } [PSCustomObject]@{ Algorithms = @("Ethash", "SHA512256d"); Type = "INTEL"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethash", " --algorithm sha512_256d_radiant") } - [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethashb3") } - [PSCustomObject]@{ Algorithms = @("EthashB3", "Blake3"); Type = "INTEL"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethashb3", " --algorithm blake3_alephium") } - [PSCustomObject]@{ Algorithms = @("EthashB3", "Decred"); Type = "INTEL"; Fee = @(0.0085, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethashb3", " --algorithm blake3_decred") } - [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Type = "INTEL"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethashb3", " --algorithm karlsenhash") } - [PSCustomObject]@{ Algorithms = @("EthashB3", "SHA512256d"); Type = "INTEL"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethashb3", " --algorithm sha512_256d_radiant") } + [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethashb3") } + [PSCustomObject]@{ Algorithms = @("EthashB3", "Blake3"); Type = "INTEL"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethashb3", " --algorithm blake3_alephium") } + [PSCustomObject]@{ Algorithms = @("EthashB3", "Decred"); Type = "INTEL"; Fee = @(0.0085, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethashb3", " --algorithm blake3_decred") } + [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Type = "INTEL"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethashb3", " --algorithm karlsenhash") } + [PSCustomObject]@{ Algorithms = @("EthashB3", "SHA512256d"); Type = "INTEL"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethashb3", " --algorithm sha512_256d_radiant") } [PSCustomObject]@{ Algorithms = @("FiroPow"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm firopow") } [PSCustomObject]@{ Algorithms = @("HeavyHash"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm heavyhash") } # FPGA [PSCustomObject]@{ Algorithms = @("HeavyHashKarlsen"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm karnlsenhash") } @@ -200,56 +199,56 @@ $Algorithms = @( [PSCustomObject]@{ Algorithms = @("SHA512256d"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm sha512_256d_radiant") } [PSCustomObject]@{ Algorithms = @("UbqHash"); Type = "INTEL"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ubqhash") } - [PSCustomObject]@{ Algorithms = @("Autolykos2"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm autolykos2") } - [PSCustomObject]@{ Algorithms = @("Autolykos2", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm autolykos2", " --algorithm blake3_alephium") } - [PSCustomObject]@{ Algorithms = @("Autolykos2", "Decred"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm autolykos2", " --algorithm blake3_decred") } - [PSCustomObject]@{ Algorithms = @("Autolykos2", "HeavyHash"); Type = "NVIDIA"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm autolykos2", " --algorithm heavyhash") } - [PSCustomObject]@{ Algorithms = @("Autolykos2", "SHA256dt"); Type = "NVIDIA"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm autolykos2", " --algorithm sha256dt") } - [PSCustomObject]@{ Algorithms = @("Autolykos2", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm autolykos2", " --algorithm sha512_256d_radiant") } - [PSCustomObject]@{ Algorithms = @("Aurum"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm aurum") } - [PSCustomObject]@{ Algorithms = @("Blake3"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm blake3_alephium") } - [PSCustomObject]@{ Algorithms = @("CryptonightGpu"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm cryptonight_gpu") } - [PSCustomObject]@{ Algorithms = @("CryptonightHeavyXhv"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm cryptonight_xhv") } - [PSCustomObject]@{ Algorithms = @("Decred"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(30, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm blake3_decred") } - [PSCustomObject]@{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm etchash") } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool - [PSCustomObject]@{ Algorithms = @("EtcHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm etchash", " --algorithm blake3_alephium") } - [PSCustomObject]@{ Algorithms = @("EtcHash", "Decred"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm etchash", " --algorithm blake3_decred") } - [PSCustomObject]@{ Algorithms = @("EtcHash", "HeavyHash"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm etchash", " --algorithm heavyhash") } - [PSCustomObject]@{ Algorithms = @("EtcHash", "SHA256dt"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm etchash", " --algorithm sha256dt") } - [PSCustomObject]@{ Algorithms = @("EtcHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm etchash", " --algorithm sha512_256d_radiant") } - [PSCustomObject]@{ Algorithms = @("Ethash"); Type = "NVIDIA"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethash") } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool - [PSCustomObject]@{ Algorithms = @("Ethash", "Blake3"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethash", " --algorithm blake3_alephium") } - [PSCustomObject]@{ Algorithms = @("Ethash", "Decred"); Type = "NVIDIA"; Fee = @(0.0065, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethash", " --algorithm blake3_decred") } - [PSCustomObject]@{ Algorithms = @("Ethash", "Heavyhash"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethash", " --algorithm heavyhash") } - [PSCustomObject]@{ Algorithms = @("Ethash", "SHA256dt"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethash", " --algorithm sha256dt") } - [PSCustomObject]@{ Algorithms = @("Ethash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethash", " --algorithm sha512_256d_radiant") } - [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethashb3") } - [PSCustomObject]@{ Algorithms = @("EthashB3", "Blake3"); Type = "NVIDIA"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethashb3", " --algorithm blake3_alephium") } - [PSCustomObject]@{ Algorithms = @("EthashB3", "Decred"); Type = "NVIDIA"; Fee = @(0.0085, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethashb3", " --algorithm blake3_decred") } - [PSCustomObject]@{ Algorithms = @("EthashB3", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethashb3", " --algorithm sha512_256d_radiant") } - [PSCustomObject]@{ Algorithms = @("EvrProgPow"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm evrprogpow") } - [PSCustomObject]@{ Algorithms = @("FiroPow"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm firopow") } - [PSCustomObject]@{ Algorithms = @("FishHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 6; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm fishhash") } - [PSCustomObject]@{ Algorithms = @("FishHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 6; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm fishhash") } - [PSCustomObject]@{ Algorithms = @("FishHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm fishhash", " --algorithm blake3_alephium") } - [PSCustomObject]@{ Algorithms = @("FishHash", "Decred"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm fishhash", " --algorithm blake3_decred") } - [PSCustomObject]@{ Algorithms = @("FishHash", "HeavyHashPyrin"); Type = "NVIDIA"; Fee = @(0.01, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm fishhash", " --algorithm sha256dt") } - [PSCustomObject]@{ Algorithms = @("FishHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm fishhash", " --algorithm sha512_256d_radiant") } - [PSCustomObject]@{ Algorithms = @("HeavyHash"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm heavyhash") } # FPGA - [PSCustomObject]@{ Algorithms = @("HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm KarlsenHash") } - [PSCustomObject]@{ Algorithms = @("KawPow"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ProHashing"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm kawpow") } - [PSCustomObject]@{ Algorithms = @("Lyra2v2Webchain"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm lyra2v2_webchain") } - [PSCustomObject]@{ Algorithms = @("MemeHash"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm memehash") } - [PSCustomObject]@{ Algorithms = @("MeowPow"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ProHashing"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm meowpow") } - [PSCustomObject]@{ Algorithms = @("ProgPowEpic"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm progpow_epic") } - [PSCustomObject]@{ Algorithms = @("ProgPowSero"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm progpow_sero") } - [PSCustomObject]@{ Algorithms = @("ProgPowVeil"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm progpow_veil") } - [PSCustomObject]@{ Algorithms = @("ProgPowVeriblock"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm progpow_veriblock") } - [PSCustomObject]@{ Algorithms = @("ProgPowZ"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm progpow_zano") } - [PSCustomObject]@{ Algorithms = @("SHA256dt"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm sha256dt") } - [PSCustomObject]@{ Algorithms = @("SHA3d"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm sha3d") } # FPGA - [PSCustomObject]@{ Algorithms = @("SHA512256d"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm sha512_256d_radiant") } - [PSCustomObject]@{ Algorithms = @("UbqHash"); Type = "NVIDIA"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ubqhash") } + [PSCustomObject]@{ Algorithms = @("Autolykos2"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm autolykos2") } + [PSCustomObject]@{ Algorithms = @("Autolykos2", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm autolykos2", " --algorithm blake3_alephium") } + [PSCustomObject]@{ Algorithms = @("Autolykos2", "Decred"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm autolykos2", " --algorithm blake3_decred") } + [PSCustomObject]@{ Algorithms = @("Autolykos2", "HeavyHash"); Type = "NVIDIA"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm autolykos2", " --algorithm heavyhash") } + [PSCustomObject]@{ Algorithms = @("Autolykos2", "SHA256dt"); Type = "NVIDIA"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm autolykos2", " --algorithm sha256dt") } + [PSCustomObject]@{ Algorithms = @("Autolykos2", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm autolykos2", " --algorithm sha512_256d_radiant") } + [PSCustomObject]@{ Algorithms = @("Aurum"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm aurum") } + [PSCustomObject]@{ Algorithms = @("Blake3"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm blake3_alephium") } + [PSCustomObject]@{ Algorithms = @("CryptonightGpu"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @("Other", "Pascal"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm cryptonight_gpu") } + [PSCustomObject]@{ Algorithms = @("CryptonightHeavyXhv"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm cryptonight_xhv") } + [PSCustomObject]@{ Algorithms = @("Decred"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(30, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm blake3_decred") } + [PSCustomObject]@{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm etchash") } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool + [PSCustomObject]@{ Algorithms = @("EtcHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm etchash", " --algorithm blake3_alephium") } + [PSCustomObject]@{ Algorithms = @("EtcHash", "Decred"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm etchash", " --algorithm blake3_decred") } + [PSCustomObject]@{ Algorithms = @("EtcHash", "HeavyHash"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm etchash", " --algorithm heavyhash") } + [PSCustomObject]@{ Algorithms = @("EtcHash", "SHA256dt"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm etchash", " --algorithm sha256dt") } + [PSCustomObject]@{ Algorithms = @("EtcHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm etchash", " --algorithm sha512_256d_radiant") } + [PSCustomObject]@{ Algorithms = @("Ethash"); Type = "NVIDIA"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethash") } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool + [PSCustomObject]@{ Algorithms = @("Ethash", "Blake3"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethash", " --algorithm blake3_alephium") } + [PSCustomObject]@{ Algorithms = @("Ethash", "Decred"); Type = "NVIDIA"; Fee = @(0.0065, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethash", " --algorithm blake3_decred") } + [PSCustomObject]@{ Algorithms = @("Ethash", "Heavyhash"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethash", " --algorithm heavyhash") } + [PSCustomObject]@{ Algorithms = @("Ethash", "SHA256dt"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethash", " --algorithm sha256dt") } + [PSCustomObject]@{ Algorithms = @("Ethash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethash", " --algorithm sha512_256d_radiant") } + [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethashb3") } + [PSCustomObject]@{ Algorithms = @("EthashB3", "Blake3"); Type = "NVIDIA"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethashb3", " --algorithm blake3_alephium") } + [PSCustomObject]@{ Algorithms = @("EthashB3", "Decred"); Type = "NVIDIA"; Fee = @(0.0085, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethashb3", " --algorithm blake3_decred") } + [PSCustomObject]@{ Algorithms = @("EthashB3", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethashb3", " --algorithm sha512_256d_radiant") } + [PSCustomObject]@{ Algorithms = @("EvrProgPow"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm evrprogpow") } + [PSCustomObject]@{ Algorithms = @("FiroPow"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm firopow") } + [PSCustomObject]@{ Algorithms = @("FishHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 6; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm fishhash") } + [PSCustomObject]@{ Algorithms = @("FishHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 6; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm fishhash") } + [PSCustomObject]@{ Algorithms = @("FishHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm fishhash", " --algorithm blake3_alephium") } + [PSCustomObject]@{ Algorithms = @("FishHash", "Decred"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm fishhash", " --algorithm blake3_decred") } + [PSCustomObject]@{ Algorithms = @("FishHash", "HeavyHashPyrin"); Type = "NVIDIA"; Fee = @(0.01, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm fishhash", " --algorithm sha256dt") } + [PSCustomObject]@{ Algorithms = @("FishHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm fishhash", " --algorithm sha512_256d_radiant") } + [PSCustomObject]@{ Algorithms = @("HeavyHash"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm heavyhash") } # FPGA + [PSCustomObject]@{ Algorithms = @("HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm KarlsenHash") } + [PSCustomObject]@{ Algorithms = @("KawPow"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ProHashing"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm kawpow") } + [PSCustomObject]@{ Algorithms = @("Lyra2v2Webchain"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm lyra2v2_webchain") } + [PSCustomObject]@{ Algorithms = @("MemeHash"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm memehash") } + [PSCustomObject]@{ Algorithms = @("MeowPow"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ProHashing"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm meowpow") } + [PSCustomObject]@{ Algorithms = @("ProgPowEpic"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm progpow_epic") } + [PSCustomObject]@{ Algorithms = @("ProgPowSero"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm progpow_sero") } + [PSCustomObject]@{ Algorithms = @("ProgPowVeil"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm progpow_veil") } + [PSCustomObject]@{ Algorithms = @("ProgPowVeriblock"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm progpow_veriblock") } + [PSCustomObject]@{ Algorithms = @("ProgPowZ"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm progpow_zano") } + [PSCustomObject]@{ Algorithms = @("SHA256dt"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm sha256dt") } + [PSCustomObject]@{ Algorithms = @("SHA3d"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm sha3d") } # FPGA + [PSCustomObject]@{ Algorithms = @("SHA512256d"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm sha512_256d_radiant") } + [PSCustomObject]@{ Algorithms = @("UbqHash"); Type = "NVIDIA"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ubqhash") } ) $Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet }) diff --git a/Miners/SgMinerFancyIX-v0.9.4.ps1 b/Miners/SgMinerFancyIX-v0.9.4.ps1 index 3aad843b..ec40be08 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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 de9bc163..87148bf4 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/TTMiner-v2024.2.0.ps1 b/Miners/TTMiner-v2024.2.0.ps1 index 08fd532a..a72e8c8c 100644 --- a/Miners/TTMiner-v2024.2.0.ps1 +++ b/Miners/TTMiner-v2024.2.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "NVIDIA" -and $_.OpenCL.ComputeCapability -gt "5.0") -or $_.Type -eq "AMD" } ))) { Return } @@ -32,57 +32,57 @@ $Path = "$PWD\Bin\$Name\TT-Miner.exe" $DeviceEnumerator = "Type_Index" $Algorithms = @( -# [PSCustomObject]@{ Algorithm = "Blake3"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Blake3" } -# [PSCustomObject]@{ Algorithm = "EtcHash"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a EtcHash" } -# [PSCustomObject]@{ Algorithm = "Ethash"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.00; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Ethash" } -# [PSCustomObject]@{ Algorithm = "EthashB3"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.00; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a EthashB3" } -# [PSCustomObject]@{ Algorithm = "EvrProPow"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a EvrProgPow" } -# [PSCustomObject]@{ Algorithm = "FiroPow"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a FiroPow" } -# [PSCustomObject]@{ Algorithm = "FiroPowSCC"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c SCC" } -# [PSCustomObject]@{ Algorithm = "FishHash"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 4; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a FishHash" } -# [PSCustomObject]@{ Algorithm = "KawPow"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(90, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a KawPow" } -# # [PSCustomObject]@{ Algorithm = "MemeHash"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(120, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Memehash" } # Not yet working -# [PSCustomObject]@{ Algorithm = "MeowPow"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(120, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a meowpow" } -# [PSCustomObject]@{ Algorithm = "ProgPowEpic"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c EPIC" } -# [PSCustomObject]@{ Algorithm = "ProgPowSero"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c SERO" } -# [PSCustomObject]@{ Algorithm = "ProgPowVeil"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c VEIL" } -# [PSCustomObject]@{ Algorithm = "ProgPowZ"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c ZANO" } -# [PSCustomObject]@{ Algorithm = "ProgPowVeriblock"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a vProgPow" } -# # [PSCustomObject]@{ Algorithm = "SHA256d"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA256D" } # ASIC -# [PSCustomObject]@{ Algorithm = "SHA256dt"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA256DT" } -# [PSCustomObject]@{ Algorithm = "SHA3D"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Sha3D" } -# [PSCustomObject]@{ Algorithm = "SHA512256d"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA512256D" } -# [PSCustomObject]@{ Algorithm = "SHA3Solidity"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA3SOL" } -# [PSCustomObject]@{ Algorithm = "UbqHash"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a UbqHash" } - - [PSCustomObject]@{ Algorithm = "Blake3"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Blake3" } - [PSCustomObject]@{ Algorithm = "EtcHash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a EtcHash" } - [PSCustomObject]@{ Algorithm = "Ethash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.00; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Ethash" } - [PSCustomObject]@{ Algorithm = "EthashB3"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.00; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a EthashB3" } - [PSCustomObject]@{ Algorithm = "EvrProPow"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a EvrProgPow" } - [PSCustomObject]@{ Algorithm = "FiroPow"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a FiroPow" } - [PSCustomObject]@{ Algorithm = "FiroPowSCC"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c SCC" } - [PSCustomObject]@{ Algorithm = "FishHash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 4; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a FishHash" } -# [PSCustomObject]@{ Algorithm = "Ghostrider"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 3; MinerSet = 2; WarmupTimes = @(180, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Ghostrider" } # No hashrate - [PSCustomObject]@{ Algorithm = "KawPow"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(90, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a KawPow" } -# [PSCustomObject]@{ Algorithm = "MemeHash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(120, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Memehash" } # Not yet working - [PSCustomObject]@{ Algorithm = "MeowPow"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(120, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a meowpow" } - [PSCustomObject]@{ Algorithm = "ProgPowEpic"; Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c EPIC" } - [PSCustomObject]@{ Algorithm = "ProgPowSero"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c SERO" } - [PSCustomObject]@{ Algorithm = "ProgPowVeil"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c VEIL" } - [PSCustomObject]@{ Algorithm = "ProgPowZ"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c ZANO" } - [PSCustomObject]@{ Algorithm = "ProgPowVeriblock"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a vProgPow" } -# [PSCustomObject]@{ Algorithm = "SHA256d"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA256D" } # ASIC - [PSCustomObject]@{ Algorithm = "SHA256dt"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA256DT" } - [PSCustomObject]@{ Algorithm = "SHA3D"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Sha3D" } - [PSCustomObject]@{ Algorithm = "SHA512256d"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA512256D" } - [PSCustomObject]@{ Algorithm = "SHA3Solidity"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA3SOL" } - [PSCustomObject]@{ Algorithm = "UbqHash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a UbqHash" } +# [PSCustomObject]@{ Algorithm = "Blake3"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Blake3" } +# [PSCustomObject]@{ Algorithm = "EtcHash"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a EtcHash" } +# [PSCustomObject]@{ Algorithm = "Ethash"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.00; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Ethash" } +# [PSCustomObject]@{ Algorithm = "EthashB3"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.00; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = @(); ExcludePools = @("ZergPool"); Arguments = " -a EthashB3" } +# [PSCustomObject]@{ Algorithm = "EvrProPow"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a EvrProgPow" } +# [PSCustomObject]@{ Algorithm = "FiroPow"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a FiroPow" } +# [PSCustomObject]@{ Algorithm = "FiroPowSCC"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c SCC" } +# [PSCustomObject]@{ Algorithm = "FishHash"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 4; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a FishHash" } +# [PSCustomObject]@{ Algorithm = "KawPow"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(90, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a KawPow" } +# # [PSCustomObject]@{ Algorithm = "MemeHash"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(120, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Memehash" } # Not yet working +# [PSCustomObject]@{ Algorithm = "MeowPow"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(120, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a meowpow" } +# [PSCustomObject]@{ Algorithm = "ProgPowEpic"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c EPIC" } +# [PSCustomObject]@{ Algorithm = "ProgPowSero"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c SERO" } +# [PSCustomObject]@{ Algorithm = "ProgPowVeil"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c VEIL" } +# [PSCustomObject]@{ Algorithm = "ProgPowZ"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c ZANO" } +# [PSCustomObject]@{ Algorithm = "ProgPowVeriblock"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a vProgPow" } +# # [PSCustomObject]@{ Algorithm = "SHA256d"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA256D" } # ASIC +# [PSCustomObject]@{ Algorithm = "SHA256dt"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA256DT" } +# [PSCustomObject]@{ Algorithm = "SHA3D"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Sha3D" } +# [PSCustomObject]@{ Algorithm = "SHA512256d"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA512256D" } +# [PSCustomObject]@{ Algorithm = "SHA3Solidity"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA3SOL" } +# [PSCustomObject]@{ Algorithm = "UbqHash"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a UbqHash" } + + [PSCustomObject]@{ Algorithm = "Blake3"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Blake3" } + [PSCustomObject]@{ Algorithm = "EtcHash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a EtcHash" } + [PSCustomObject]@{ Algorithm = "Ethash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.00; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Ethash" } + [PSCustomObject]@{ Algorithm = "EthashB3"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.00; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = @(); ExcludePools = @("ZergPool"); Arguments = " -a EthashB3" } + [PSCustomObject]@{ Algorithm = "EvrProPow"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a EvrProgPow" } + [PSCustomObject]@{ Algorithm = "FiroPow"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a FiroPow" } + [PSCustomObject]@{ Algorithm = "FiroPowSCC"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c SCC" } + [PSCustomObject]@{ Algorithm = "FishHash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 4; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a FishHash" } +# [PSCustomObject]@{ Algorithm = "Ghostrider"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 3; MinerSet = 2; WarmupTimes = @(180, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Ghostrider" } # No hashrate + [PSCustomObject]@{ Algorithm = "KawPow"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(90, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a KawPow" } +# [PSCustomObject]@{ Algorithm = "MemeHash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(120, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Memehash" } # Not yet working + [PSCustomObject]@{ Algorithm = "MeowPow"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(120, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a meowpow" } + [PSCustomObject]@{ Algorithm = "ProgPowEpic"; Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c EPIC" } + [PSCustomObject]@{ Algorithm = "ProgPowSero"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c SERO" } + [PSCustomObject]@{ Algorithm = "ProgPowVeil"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c VEIL" } + [PSCustomObject]@{ Algorithm = "ProgPowZ"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c ZANO" } + [PSCustomObject]@{ Algorithm = "ProgPowVeriblock"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a vProgPow" } +# [PSCustomObject]@{ Algorithm = "SHA256d"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA256D" } # ASIC + [PSCustomObject]@{ Algorithm = "SHA256dt"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA256DT" } + [PSCustomObject]@{ Algorithm = "SHA3D"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Sha3D" } + [PSCustomObject]@{ Algorithm = "SHA512256d"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA512256D" } + [PSCustomObject]@{ Algorithm = "SHA3Solidity"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA3SOL" } + [PSCustomObject]@{ Algorithm = "UbqHash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a UbqHash" } ) $Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet }) $Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithm] }) -# $Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithm].Name -notin $_.ExcludePools }) +$Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithm].Name -notin $_.ExcludePools }) $Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithm].PoolPorts[0] }) If ($Algorithms) { @@ -97,9 +97,8 @@ If ($Algorithms) { $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture If ($AvailableMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { - # $ExcludePools = $_.ExcludePools - # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) { - ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] })) { + $ExcludePools = $_.ExcludePools + ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) { $MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { @@ -121,7 +120,7 @@ If ($Algorithms) { [PSCustomObject]@{ API = "EthMiner" - Arguments = "$Arguments -report-average 5 -report-interval 5 -b 127.0.0.1:$($MinerAPIPort) -d $(($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0:x}' -f $_ }) -join ',')" + Arguments = "$Arguments -report-average 5 -report-interval 5$(If ($_.Algorithm -match $Variables.RegexAlgoHasDAG) { " -daginfo" }) -b 127.0.0.1:$($MinerAPIPort) -d $(($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0:x}' -f $_ }) -join ',')" DeviceNames = $AvailableMinerDevices.Name Fee = $_.Fee # Dev fee MinerSet = $_.MinerSet diff --git a/Miners/TTMiner-v5.0.3.ps1 b/Miners/TTMiner-v5.0.3.ps1 index 5d2de39d..a95f9549 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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 1fba1e63..f3f26797 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.CUDAVersion -ge [Version]"11.6") }))) { Return } @@ -31,64 +31,64 @@ $DeviceSelector = @{ AMD = " --cl-devices"; NVIDIA = " --cuda-devices" } $DeviceEnumerator = "Type_Vendor_Slot" $Algorithms = @( - [PSCustomObject]@{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etchash" } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool - [PSCustomObject]@{ Algorithms = @("EtcHash", "EthashB3"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(120, 45); ExcludeGPUArchitecture = @("RDNA1"); ExcludePools = @(@(), @()); Arguments = " --algo etc+ethb3" } # https://github.com/sp-hash/TeamBlackMiner/issues/450 - [PSCustomObject]@{ Algorithms = @("EtcHash", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+evr" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+firo" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+rvn" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+meow" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # 120 Seconds; https://github.com/sp-hash/TeamBlackMiner/issues/427 - [PSCustomObject]@{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethash" } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool - [PSCustomObject]@{ Algorithms = @("Ethash", "EthashB3"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(120, 15); ExcludeGPUArchitecture = @("RDNA1"); ExcludePools = @(@(), @()); Arguments = " --algo eth+ethb3" } # https://github.com/sp-hash/TeamBlackMiner/issues/450 - [PSCustomObject]@{ Algorithms = @("Ethash", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+evr" } - [PSCustomObject]@{ Algorithms = @("Ethash", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+firo" } - [PSCustomObject]@{ Algorithms = @("Ethash", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+rvn" } - [PSCustomObject]@{ Algorithms = @("Ethash", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+meow" } - [PSCustomObject]@{ Algorithms = @("Ethash", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # 120 Secs; https://github.com/sp-hash/TeamBlackMiner/issues/427 - [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethashb3" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+firo" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+evr" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+rvn" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+meow" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # 120 Seconds; https://github.com/sp-hash/TeamBlackMiner/issues/427 - [PSCustomObject]@{ Algorithms = @("EvrProgPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo evrprogpow" } - [PSCustomObject]@{ Algorithms = @("FiroPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo firopow" } - [PSCustomObject]@{ Algorithms = @("KawPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo kawpow" } - [PSCustomObject]@{ Algorithms = @("MeowPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo meowpow" } - [PSCustomObject]@{ Algorithms = @("VertHash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 3.0; MinerSet = 1; Tuning = ""; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo verthash --verthash-data ..\.$($Variables.VerthashDatPath)" } + [PSCustomObject]@{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etchash" } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool + [PSCustomObject]@{ Algorithms = @("EtcHash", "EthashB3"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(120, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZergPool")); Arguments = " --algo etc+ethb3" } # https://github.com/sp-hash/TeamBlackMiner/issues/450 + [PSCustomObject]@{ Algorithms = @("EtcHash", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+evr" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+firo" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+rvn" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+meow" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # 120 Seconds; https://github.com/sp-hash/TeamBlackMiner/issues/427 + [PSCustomObject]@{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethash" } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool + [PSCustomObject]@{ Algorithms = @("Ethash", "EthashB3"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(120, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZergPool")); Arguments = " --algo eth+ethb3" } # https://github.com/sp-hash/TeamBlackMiner/issues/450 + [PSCustomObject]@{ Algorithms = @("Ethash", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+evr" } + [PSCustomObject]@{ Algorithms = @("Ethash", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+firo" } + [PSCustomObject]@{ Algorithms = @("Ethash", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+rvn" } + [PSCustomObject]@{ Algorithms = @("Ethash", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+meow" } + [PSCustomObject]@{ Algorithms = @("Ethash", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # 120 Secs; https://github.com/sp-hash/TeamBlackMiner/issues/427 + [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethashb3" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+firo" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+evr" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+rvn" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+meow" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # 120 Seconds; https://github.com/sp-hash/TeamBlackMiner/issues/427 + [PSCustomObject]@{ Algorithms = @("EvrProgPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo evrprogpow" } + [PSCustomObject]@{ Algorithms = @("FiroPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo firopow" } + [PSCustomObject]@{ Algorithms = @("KawPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo kawpow" } + [PSCustomObject]@{ Algorithms = @("MeowPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo meowpow" } + [PSCustomObject]@{ Algorithms = @("VertHash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 3.0; MinerSet = 1; Tuning = ""; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo verthash --verthash-data ..\.$($Variables.VerthashDatPath)" } - [PSCustomObject]@{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etchash" } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool - [PSCustomObject]@{ Algorithms = @("EtcHash", "EthashB3"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+ethb3" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "EvrProgPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+evr" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "FiroPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+firo" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "KawPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+rvn" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "MeowPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+meow" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "VertHash"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } - [PSCustomObject]@{ Algorithms = @("Ethash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethash" } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool - [PSCustomObject]@{ Algorithms = @("Ethash", "EthashB3"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+ethb3" } - [PSCustomObject]@{ Algorithms = @("Ethash", "EvrProgPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+evr" } - [PSCustomObject]@{ Algorithms = @("Ethash", "FiroPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+firo" } - [PSCustomObject]@{ Algorithms = @("Ethash", "KawPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+rvn" } - [PSCustomObject]@{ Algorithms = @("Ethash", "MeowPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+meow" } - [PSCustomObject]@{ Algorithms = @("Ethash", "VertHash"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.70; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } - [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethashb3" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "EvrProgPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+evr" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "FiroPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+firo" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "KawPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+rvn" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "MeowPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+meow" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "VertHash"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.70; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } - [PSCustomObject]@{ Algorithms = @("EvrProgPow"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo evrprogpow" } - [PSCustomObject]@{ Algorithms = @("FiroPow"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo firopow" } - [PSCustomObject]@{ Algorithms = @("KawPow"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo kawpow" } - [PSCustomObject]@{ Algorithms = @("MeowPow"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo meowpow" } - [PSCustomObject]@{ Algorithms = @("VertHash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 3.0; MinerSet = 0; Tuning = " --tweak 2"; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo verthash --verthash-data ..\.$($Variables.VerthashDatPath)" } + [PSCustomObject]@{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etchash" } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool + [PSCustomObject]@{ Algorithms = @("EtcHash", "EthashB3"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZergPool")); Arguments = " --algo etc+ethb3" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "EvrProgPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+evr" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "FiroPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+firo" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "KawPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+rvn" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "MeowPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+meow" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "VertHash"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } + [PSCustomObject]@{ Algorithms = @("Ethash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethash" } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool + [PSCustomObject]@{ Algorithms = @("Ethash", "EthashB3"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZergPool")); Arguments = " --algo eth+ethb3" } + [PSCustomObject]@{ Algorithms = @("Ethash", "EvrProgPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+evr" } + [PSCustomObject]@{ Algorithms = @("Ethash", "FiroPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+firo" } + [PSCustomObject]@{ Algorithms = @("Ethash", "KawPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+rvn" } + [PSCustomObject]@{ Algorithms = @("Ethash", "MeowPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+meow" } + [PSCustomObject]@{ Algorithms = @("Ethash", "VertHash"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.70; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } + [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethashb3" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "EvrProgPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+evr" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "FiroPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+firo" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "KawPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+rvn" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "MeowPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+meow" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "VertHash"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.70; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } + [PSCustomObject]@{ Algorithms = @("EvrProgPow"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo evrprogpow" } + [PSCustomObject]@{ Algorithms = @("FiroPow"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo firopow" } + [PSCustomObject]@{ Algorithms = @("KawPow"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo kawpow" } + [PSCustomObject]@{ Algorithms = @("MeowPow"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo meowpow" } + [PSCustomObject]@{ Algorithms = @("VertHash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 3.0; MinerSet = 0; Tuning = " --tweak 2"; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo verthash --verthash-data ..\.$($Variables.VerthashDatPath)" } ) $Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet }) $Algorithms.Where({ -not $_.Algorithms[1] }).ForEach({ $_.Algorithms += "" }) $Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithms[0]] -and $_.Algorithms[1] -eq "" -or $MinerPools[1][$_.Algorithms[1]] }) -# $Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithms[0]].Name -notin $_.ExcludePools[0] }) -# $Algorithms = $Algorithms.Where({ $MinerPools[1][$_.Algorithms[1]].Name -notin $_.ExcludePools[1] }) +$Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithms[0]].Name -notin $_.ExcludePools[0] }) +$Algorithms = $Algorithms.Where({ $MinerPools[1][$_.Algorithms[1]].Name -notin $_.ExcludePools[1] }) If ($Algorithms) { @@ -111,11 +111,9 @@ If ($Algorithms) { $PrerequisiteURI = "" } - # $ExcludePools = $_.ExcludePools - # ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $_.Name -notin $ExcludePools[0] })) { - ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]]) { - # ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $_.Name -notin $ExcludePools[1] })) { - ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]]) { + $ExcludePools = $_.ExcludePools + ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $_.Name -notin $ExcludePools[0] })) { + ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $_.Name -notin $ExcludePools[1] })) { # Dual algorithm mining: Both pools must support same protocol (SSL or non-SSL) :-( If (-not $_.Algorithms[1] -or ($Pool0.PoolPorts[0] -and $Pool1.PoolPorts[0]) -or ($Pool0.PoolPorts[1] -and $Pool1.PoolPorts[1])) { diff --git a/Miners/TeamRedMiner-v0.10.21.ps1 b/Miners/TeamRedMiner-v0.10.21.ps1 index 536c226b..665ec7c3 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 2.0" }))) { Return } diff --git a/Miners/Trex-v0.26.8.ps1 b/Miners/Trex-v0.26.8.ps1 index a618abab..ea05e015 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/Wildrig-v0.40.5.ps1 b/Miners/Wildrig-v0.40.5.ps1 index 35262491..5a07eec1 100644 --- a/Miners/Wildrig-v0.40.5.ps1 +++ b/Miners/Wildrig-v0.40.5.ps1 @@ -18,7 +18,7 @@ along with this program. If not, see . <# Product: UG-Miner Version: 6.2.9 -Version date: 2024/06/13 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 1.2") -or $_.Type -eq "INTEL" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge [Version]"452.39.00") }))) { Return } @@ -26,7 +26,7 @@ If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "AMD" -and $ $URI = "https://github.com/andru-kun/wildrig-multi/releases/download/0.40.5/wildrig-multi-windows-0.40.5.zip" $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName $Path = "$PWD\Bin\$Name\wildrig.exe" -$DeviceEnumerator = "Type_Slot" +$DeviceEnumerator = "Type_Vendor_Slot" $Algorithms = @( [PSCustomObject]@{ Algorithm = "Aergo"; Type = "AMD"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = "^GCN1$"; ExcludePools = @(); Arguments = " --algo aergo" } @@ -282,7 +282,7 @@ If ($Algorithms) { [PSCustomObject]@{ API = "XmRig" - Arguments = "$($_.Arguments) --api-port $MinerAPIPort --url $(If ($Pool.PoolPorts[1]) { "stratum+tcps" } Else { "stratum+tcp" })://$($Pool.Host):$($Pool.PoolPorts | Select-Object -Last 1) --user $($Pool.User) --pass $($Pool.Pass) --multiple-instance --opencl-devices $(($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0:x}' -f $_ }) -join ',')" + Arguments = "$($_.Arguments) --api-port $MinerAPIPort --url $(If ($Pool.PoolPorts[1]) { "stratum+tcps" } Else { "stratum+tcp" })://$($Pool.Host):$($Pool.PoolPorts | Select-Object -Last 1) --user $($Pool.User) --pass $($Pool.Pass) --multiple-instance --opencl-platform $($AvailableMinerDevices.PlatformId) --opencl-devices $(($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0:x}' -f $_ }) -join ',')" DeviceNames = $AvailableMinerDevices.Name Fee = $_.Fee # Dev fee MinerSet = $_.MinerSet diff --git a/Miners/XmRig-v6.21.3.15.ps1 b/Miners/XmRig-v6.21.3.15.ps1 index 511c52d9..033042d2 100644 --- a/Miners/XmRig-v6.21.3.15.ps1 +++ b/Miners/XmRig-v6.21.3.15.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -in @("AMD", "CPU", "INTEL") -or $_.OpenCL.ComputeCapability -gt "5.0" }))) { Return } diff --git a/Miners/XmrStak-v2.10.8.ps1 b/Miners/XmrStak-v2.10.8.ps1 index 70d3ed74..0dd2e393 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.ComputeCapability -lt "8.6" }))) { Return } diff --git a/Miners/ZealotEnemy-v2.6.2.ps1 b/Miners/ZealotEnemy-v2.6.2.ps1 index e07dc300..224fc0c0 100644 --- a/Miners/ZealotEnemy-v2.6.2.ps1 +++ b/Miners/ZealotEnemy-v2.6.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -gt "5.0" }))) { Return } diff --git a/Miners/ZealotEnemy-v2.6.3.ps1 b/Miners/ZealotEnemy-v2.6.3.ps1 index f1549849..025ce226 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/lolMiner-v1.88.ps1 b/Miners/lolMiner-v1.88.ps1 index 94a3a768..60a14d00 100644 --- a/Miners/lolMiner-v1.88.ps1 +++ b/Miners/lolMiner-v1.88.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> 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 } @@ -49,11 +49,11 @@ $Algorithms = @( # [PSCustomObject]@{ Algorithms = @("Ethash", "Blake3"); Type = "AMD"; Fee = @(0.01, 0); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode ALEPHDUAL" } # # [PSCustomObject]@{ Algorithms = @("Ethash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode KARLSENDUAL" } # No hashrate for second algorithm # [PSCustomObject]@{ Algorithms = @("Ethash", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode RXDDUAL" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 - [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUArchitecture = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1992 - [PSCustomObject]@{ Algorithms = @("EthashB3", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode ALEPHDUAL" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUArchitecture = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode KARLSENDUAL" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode PYRINDUAL" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 100); ExcludeGPUArchitecture = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode RXDDUAL" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 + [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUArchitecture = "^GCN4$"; ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ETHASHB3" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1992 + [PSCustomObject]@{ Algorithms = @("EthashB3", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = "^GCN4$"; ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ETHASHB3 --dualmode ALEPHDUAL" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUArchitecture = "^GCN4$"; ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ETHASHB3 --dualmode KARLSENDUAL" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = "^GCN4$"; ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ETHASHB3 --dualmode PYRINDUAL" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 100); ExcludeGPUArchitecture = "^GCN4$"; ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ETHASHB3 --dualmode RXDDUAL" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 [PSCustomObject]@{ Algorithms = @("Flux"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.00; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUArchitecture = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo FLUX" } [PSCustomObject]@{ Algorithms = @("FishHash"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 6.0; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = ""; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH" } [PSCustomObject]@{ Algorithms = @("FishHash", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = "^GCN4$|^GCN5\d$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode ALEPHDUAL" } @@ -75,45 +75,45 @@ $Algorithms = @( [PSCustomObject]@{ Algorithms = @("Equihash1445"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 60); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); AutoCoinPers = " --pers auto"; Arguments = " --algo EQUI144_5" } # FPGA [PSCustomObject]@{ Algorithms = @("EtcHash"); Type = "INTEL"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); AutoCoinPers = ""; Arguments = " --algo ETCHASH" } # PhoenixMiner-v6.2c is faster - [PSCustomObject]@{ Algorithms = @("Autolykos2"); Type = "NVIDIA"; Fee = @(0.015); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo AUTOLYKOS2" } - [PSCustomObject]@{ Algorithms = @("Blake3"); Type = "NVIDIA"; Fee = @(0.075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ALEPH" } - [PSCustomObject]@{ Algorithms = @("BeamV3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 2; WarmupTimes = @(45, 50); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo BEAM-III" } # NBMiner-v42.3 is fastest - [PSCustomObject]@{ Algorithms = @("Cuckoo29"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 8.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo C29AE" } - [PSCustomObject]@{ Algorithms = @("Cuckaroo29B"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo CR29-40" } - [PSCustomObject]@{ Algorithms = @("Cuckaroo29S"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo CR29-32" } - [PSCustomObject]@{ Algorithms = @("Cuckaroo30CTX"); Type = "NVIDIA"; Fee = @(0.025); MinMemGiB = 8.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo C30CTX" } -# [PSCustomObject]@{ Algorithms = @("Cuckatoo31"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 3; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo C31" } # ASIC -# [PSCustomObject]@{ Algorithms = @("Cuckatoo32"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 3; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo C32" } # ASIC - [PSCustomObject]@{ Algorithms = @("Equihash1254"); Type = "NVIDIA"; Fee = @(0.015); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ZEL --pers ZelProof" } # MiniZ-v2.3c is fastest, but has 2% miner fee - [PSCustomObject]@{ Algorithms = @("Equihash1445"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 60); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI144_5" } # FPGA - [PSCustomObject]@{ Algorithms = @("Equihash2109"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI210_9" } - [PSCustomObject]@{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH" } # PhoenixMiner-v6.2c is faster -# [PSCustomObject]@{ Algorithms = @("EtcHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode ALEPHDUAL --maxdualimpact *" } # No hashrate for second algorithm -# [PSCustomObject]@{ Algorithms = @("EtcHash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode KARLSENDUAL --maxdualimpact *" } # No hashrate for second algorithm -# [PSCustomObject]@{ Algorithms = @("EtcHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode RXDDUAL --maxdualimpact *" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 - [PSCustomObject]@{ Algorithms = @("Ethash"); Type = "NVIDIA"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH" } # PhoenixMiner-v6.2c is faster -# [PSCustomObject]@{ Algorithms = @("Ethash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode ALEPHDUAL --maxdualimpact *" } # No hashrate for second algorithm -# [PSCustomObject]@{ Algorithms = @("Ethash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode KARLSENDUAL --maxdualimpact *" } # No hashrate for second algorithm -# [PSCustomObject]@{ Algorithms = @("Ethash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode RXDDUAL --maxdualimpact *" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 - [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode ALEPHDUAL --maxdualimpact *" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashPyrin"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode PYRINDUAL --maxdualimpact *" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode KARLSENDUAL --maxdualimpact *" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode RXDDUAL --maxdualimpact *" } - [PSCustomObject]@{ Algorithms = @("FishHash"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 6.0; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH" } - [PSCustomObject]@{ Algorithms = @("FishHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUArchitecture = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode ALEPHDUAL --maxdualimpact *" } - [PSCustomObject]@{ Algorithms = @("FishHash", "HeavyHashPyrin"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUArchitecture = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode PYRINDUAL --maxdualimpact *" } - [PSCustomObject]@{ Algorithms = @("FishHash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUArchitecture = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode KARLSENDUAL --maxdualimpact *" } - [PSCustomObject]@{ Algorithms = @("FishHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUArchitecture = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode RXDDUAL --maxdualimpact *" } - [PSCustomObject]@{ Algorithms = @("HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(60, 50); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo KARLSEN" } - [PSCustomObject]@{ Algorithms = @("HeavyHashPyrin"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(90, 50); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo PYRIN" } - [PSCustomObject]@{ Algorithms = @("IronFish"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo IRONFISH" } - [PSCustomObject]@{ Algorithms = @("NexaPow"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 60); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo NEXA" } - [PSCustomObject]@{ Algorithms = @("SHA512256d"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.0; MinerSet = 2; WarmupTimes = @(60, 20); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo RADIANT" } - [PSCustomObject]@{ Algorithms = @("UbqHash"); Type = "NVIDIA"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH" } - [PSCustomObject]@{ Algorithms = @("UbqHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode ALEPHDUAL --maxdualimpact *" } -# [PSCustomObject]@{ Algorithms = @("UbqHash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode KARLSENDUAL --maxdualimpact *" } # No hashrate for second algorithm -# [PSCustomObject]@{ Algorithms = @("UbqHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode RXDDUAL --maxdualimpact *" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 + [PSCustomObject]@{ Algorithms = @("Autolykos2"); Type = "NVIDIA"; Fee = @(0.015); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo AUTOLYKOS2" } + [PSCustomObject]@{ Algorithms = @("Blake3"); Type = "NVIDIA"; Fee = @(0.075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ALEPH" } + [PSCustomObject]@{ Algorithms = @("BeamV3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 2; WarmupTimes = @(45, 50); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo BEAM-III" } # NBMiner-v42.3 is fastest + [PSCustomObject]@{ Algorithms = @("Cuckoo29"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 8.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo C29AE" } + [PSCustomObject]@{ Algorithms = @("Cuckaroo29B"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo CR29-40" } + [PSCustomObject]@{ Algorithms = @("Cuckaroo29S"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo CR29-32" } + [PSCustomObject]@{ Algorithms = @("Cuckaroo30CTX"); Type = "NVIDIA"; Fee = @(0.025); MinMemGiB = 8.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo C30CTX" } +# [PSCustomObject]@{ Algorithms = @("Cuckatoo31"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 3; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo C31" } # ASIC +# [PSCustomObject]@{ Algorithms = @("Cuckatoo32"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 3; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo C32" } # ASIC + [PSCustomObject]@{ Algorithms = @("Equihash1254"); Type = "NVIDIA"; Fee = @(0.015); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ZEL --pers ZelProof" } # MiniZ-v2.4.d is fastest, but has 2% miner fee + [PSCustomObject]@{ Algorithms = @("Equihash1445"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 60); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI144_5" } # FPGA + [PSCustomObject]@{ Algorithms = @("Equihash2109"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI210_9" } + [PSCustomObject]@{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH" } # PhoenixMiner-v6.2c is faster +# [PSCustomObject]@{ Algorithms = @("EtcHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode ALEPHDUAL --maxdualimpact *" } # No hashrate for second algorithm +# [PSCustomObject]@{ Algorithms = @("EtcHash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode KARLSENDUAL --maxdualimpact *" } # No hashrate for second algorithm +# [PSCustomObject]@{ Algorithms = @("EtcHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode RXDDUAL --maxdualimpact *" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 + [PSCustomObject]@{ Algorithms = @("Ethash"); Type = "NVIDIA"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH" } # PhoenixMiner-v6.2c is faster +# [PSCustomObject]@{ Algorithms = @("Ethash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode ALEPHDUAL --maxdualimpact *" } # No hashrate for second algorithm +# [PSCustomObject]@{ Algorithms = @("Ethash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode KARLSENDUAL --maxdualimpact *" } # No hashrate for second algorithm +# [PSCustomObject]@{ Algorithms = @("Ethash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode RXDDUAL --maxdualimpact *" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 + [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUArchitecture = " "; ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ETHASHB3" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ETHASHB3 --dualmode ALEPHDUAL --maxdualimpact *" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashPyrin"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ETHASHB3 --dualmode PYRINDUAL --maxdualimpact *" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ETHASHB3 --dualmode KARLSENDUAL --maxdualimpact *" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ETHASHB3 --dualmode RXDDUAL --maxdualimpact *" } + [PSCustomObject]@{ Algorithms = @("FishHash"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 6.0; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH" } + [PSCustomObject]@{ Algorithms = @("FishHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUArchitecture = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode ALEPHDUAL --maxdualimpact *" } + [PSCustomObject]@{ Algorithms = @("FishHash", "HeavyHashPyrin"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUArchitecture = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode PYRINDUAL --maxdualimpact *" } + [PSCustomObject]@{ Algorithms = @("FishHash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUArchitecture = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode KARLSENDUAL --maxdualimpact *" } + [PSCustomObject]@{ Algorithms = @("FishHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUArchitecture = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode RXDDUAL --maxdualimpact *" } + [PSCustomObject]@{ Algorithms = @("HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(60, 50); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo KARLSEN" } + [PSCustomObject]@{ Algorithms = @("HeavyHashPyrin"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(90, 50); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo PYRIN" } + [PSCustomObject]@{ Algorithms = @("IronFish"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo IRONFISH" } + [PSCustomObject]@{ Algorithms = @("NexaPow"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 60); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo NEXA" } + [PSCustomObject]@{ Algorithms = @("SHA512256d"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.0; MinerSet = 2; WarmupTimes = @(60, 20); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo RADIANT" } + [PSCustomObject]@{ Algorithms = @("UbqHash"); Type = "NVIDIA"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH" } + [PSCustomObject]@{ Algorithms = @("UbqHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode ALEPHDUAL --maxdualimpact *" } +# [PSCustomObject]@{ Algorithms = @("UbqHash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode KARLSENDUAL --maxdualimpact *" } # No hashrate for second algorithm +# [PSCustomObject]@{ Algorithms = @("UbqHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 90); ExcludeGPUArchitecture = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode RXDDUAL --maxdualimpact *" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986 ) $Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet }) diff --git a/Pools/HashCryptos.ps1 b/Pools/HashCryptos.ps1 index 68576f07..cfb8e4bd 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> param( diff --git a/Pools/HiveON.ps1 b/Pools/HiveON.ps1 index 5195d2b6..98c1b192 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> param( diff --git a/Pools/MiningDutch.ps1 b/Pools/MiningDutch.ps1 index 2e953e01..a51bdaab 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> param( diff --git a/Pools/MiningPoolHub.ps1 b/Pools/MiningPoolHub.ps1 index e647985b..ffad420c 100644 --- a/Pools/MiningPoolHub.ps1 +++ b/Pools/MiningPoolHub.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\MiningPoolHub.ps1 -Version: 6.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> param( diff --git a/Pools/NiceHash.ps1 b/Pools/NiceHash.ps1 index 23c30137..7f00a6ec 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> param( diff --git a/Pools/ProHashing.ps1 b/Pools/ProHashing.ps1 index 8e3e09c6..a8975089 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> param( diff --git a/Pools/ZPool.ps1 b/Pools/ZPool.ps1 index 013f8a5d..e4640012 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> param( diff --git a/Pools/ZergPool.ps1 b/Pools/ZergPool.ps1 index 7b34aabd..969d3c2f 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> param( diff --git a/README.md b/README.md index 009d7a06..04d8db67 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ UG-Miner monitors mining pools in real-time in order to find the most profitable algorithm -Updated 2024/06/13 +Updated 2024/06/18 Copyright (c) 2018-2024 UselessGuru @@ -162,7 +162,7 @@ Easy configuration, easy start: The prerun scripts can be used to set per miner/algorithm OC via nvidiaInspector or OverdriveNTool. Before starting a miner executable UG-Miner is trying to launch one of the following 3 prerun scripts (in this order): 1. _.bat - Simply create a file named _.bat in prerun folder, e.g. 'MiniZ-v2.3c-1xRadeonRX5808GB-EtcHash.bat' or 'Wildrig-v0.40.5-1xGTX10606GB_Ghostrider.bat' + Simply create a file named _.bat in prerun folder, e.g. 'MiniZ-v2.4.d-1xRadeonRX5808GB-EtcHash.bat' or 'Wildrig-v0.40.5-1xGTX10606GB_Ghostrider.bat' 2. .bat Simply create a file named .bat in prerun folder, e.g. 'Ethash.bat' 3. default.bat @@ -283,11 +283,11 @@ PowerShell Version 7.x is required: UG-Miner works best with the latest PWSH version 7.2.x. Versions 7.3.x and later have a memory leak and are therefore not recommended. -[Download Installer for version 7.2.19](https://github.com/PowerShell/PowerShell/releases/download/v7.2.19/PowerShell-7.2.19-win-x64.msi) +[Download Installer for version 7.2.21](https://github.com/PowerShell/PowerShell/releases/download/v7.2.19/PowerShell-7.2.21-win-x64.msi) **Some miners may need 'Visual C+ RunTimes download/extract, run install_all.bat file** -[Visual C+ RunTimes](https://github.com/UselessGuru/Visual-C-Runtimes-All-in-One-Sep-2019/releases/download/sep2019/Visual-C-Runtimes-All-in-One-Sep-2019.zip) +[Visual C+ RunTimes](https://github.com/UselessGuru/UG-Miner-Extras/releases/download/Visual-C-Runtimes-All-in-One-Sep-2019/Visual-C-Runtimes-All-in-One-Sep-2019.zip) **Virtual memory settings** diff --git a/UG-Miner.bat b/UG-Miner.bat index 7eff3971..d8067bd6 100644 --- a/UG-Miner.bat +++ b/UG-Miner.bat @@ -1,14 +1,13 @@ @echo off +where /q PWSH.exe -WHERE /q PWSH.exe - -IF ERRORLEVEL 1 ( +if ERRORLEVEL 1 ( echo Powershell 6 or later is required. Cannot continue. pause -) ELSE ( +) else ( if not "%GPU_FORCE_64BIT_PTR%"=="1" (setx GPU_FORCE_64BIT_PTR 1) > nul if not "%GPU_MAX_HEAP_SIZE%"=="100" (setx GPU_MAX_HEAP_SIZE 100) > nul @@ -17,5 +16,15 @@ IF ERRORLEVEL 1 ( if not "%GPU_SINGLE_ALLOC_PERCENT%"=="100" (setx GPU_SINGLE_ALLOC_PERCENT 100) > nul if not "%CUDA_DEVICE_ORDER%"=="PCI_BUS_ID" (setx CUDA_DEVICE_ORDER PCI_BUS_ID) > nul - PWSH -executionpolicy bypass -windowstyle maximized -command ".\UG-Miner.ps1 -ConfigFile '.\Config\config.json'" -) + where /q WT.exe + + if ERRORLEVEL 1 ( + + PWSH -executionpolicy bypass -windowstyle maximized -command "%~dp0UG-Miner.ps1" -ConfigFile "%~dp0Config\config.json" + + ) else ( + + WT --maximized --profile "PowerShell 7" PWSH "%~dp0UG-Miner.ps1" -ConfigFile "%~dp0Config\config.json" + + ) +) \ No newline at end of file diff --git a/UG-Miner.ps1 b/UG-Miner.ps1 index 11d80808..2d2213ac 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> using module .\Includes\Include.psm1 @@ -111,9 +111,9 @@ param( [Parameter(Mandatory = $false)] [Switch]$LogBalanceAPIResponse = $false, # If true will log the pool balance API data [Parameter(Mandatory = $false)] - [String[]]$LogToFile = @("Debug", "Info", "Warn", "Error", "Verbose"), # Log level detail to be written to log file, see Write-Message function; any of @("Debug", "Info", "Warn", "Error", "Verbose", "Debug") + [String[]]$LogToFile = @("Error", "Warn", "Info", "Verbose"), # Log level detail to be written to log file, see Write-Message function; any of @("Error", "Warn", "Info", "Verbose", "Debug") [Parameter(Mandatory = $false)] - [String[]]$LogToScreen = @("Debug", "Info", "Warn", "Error", "Verbose"), # Log level detail to be written to screen, see Write-Message function; any of @("Debug", "Info", "Warn", "Error", "Verbose", "Debug") + [String[]]$LogToScreen = @("Error", "Warn", "Info", "Verbose"), # Log level detail to be written to screen, see Write-Message function; any of @("Error", "Warn", "Info", "Verbose", "Debug") [Parameter(Mandatory = $false)] [String]$LogViewerConfig = ".\Utils\UG-Miner_LogReader.xml", # Path to external log viewer config file [Parameter(Mandatory = $false)] @@ -141,17 +141,17 @@ param( [Parameter(Mandatory = $false)] [String]$MiningDutchAPIKey = "", # MiningDutch API Key (required to retrieve balance information) [Parameter(Mandatory = $false)] - [String]$MiningDutchUserName = (Get-Random @("UselessGuru")), # MiningDutch username + [String]$MiningDutchUserName = "UselessGuru", # MiningDutch username [Parameter(Mandatory = $false)] [String]$MiningPoolHubAPIKey = "", # MiningPoolHub API Key (required to retrieve balance information) [Parameter(Mandatory = $false)] [String]$MiningPoolHubUserName = "UselessGuru", # MiningPoolHub username [Parameter(Mandatory = $false)] [Int]$MinWorker = 25, # Minimum workers mining the algorithm at the pool. If less miners are mining the algorithm then the pool will be disabled. This is also a per pool setting configurable in 'PoolsConfig.json' - [Parameter(Mandatory = $false)] - [String]$MonitoringServer = "https://UG-Miner.com", # Monitoring server hostname, default "https://UG-Miner.com" - [Parameter(Mandatory = $false)] - [String]$MonitoringUser = "", # Monitoring user ID as registered with monitoring server + # [Parameter(Mandatory = $false)] + # [String]$MonitoringServer = "https://UG-Miner.com", # Monitoring server hostname, default "https://UG-Miner.com" + # [Parameter(Mandatory = $false)] + # [String]$MonitoringUser = "", # Monitoring user ID as registered with monitoring server [Parameter(Mandatory = $false)] [String]$NiceHashAPIKey = "", # NiceHash API Key (required to retrieve balance information) [Parameter(Mandatory = $false)] @@ -159,7 +159,7 @@ param( [Parameter(Mandatory = $false)] [Switch]$NiceHashWalletIsInternal = $false, # Set to $true if NiceHashWallet is a NiceHash internal wallet (lower pool fees) [Parameter(Mandatory = $false)] - [String]$NiceHashWallet = "", # NiceHash wallet, if left empty $Wallet is used + [String]$NiceHashWallet = "", # NiceHash wallet, if left empty $Wallets[BTC] is used [Parameter(Mandatory = $false)] [String]$NiceHashOrganizationId = "", # NiceHash Organization Id (required to retrieve balance information) [Parameter(Mandatory = $false)] @@ -175,7 +175,7 @@ param( [Parameter(Mandatory = $false)] [String]$PoolsConfigFile = ".\Config\PoolsConfig.json", # PoolsConfig file name [Parameter(Mandatory = $false)] - [String[]]$PoolName = @("Hiveon", "MiningDutch", "MiningPoolHub", "NiceHash", "NLPool", "ProHashing", "ZergPoolCoins", "ZPool"), + [String[]]$PoolName = @("Hiveon", "MiningDutch", "NiceHash", "NLPool", "ProHashing", "ZergPoolCoins", "ZPool"), [Parameter(Mandatory = $false)] [Int]$PoolTimeout = 20, # Time (in seconds) until it aborts the pool request (useful if a pool's API is stuck). Note: do not set this value too small or NM will not be able to get any pool data [Parameter(Mandatory = $false)] @@ -241,9 +241,9 @@ param( [Parameter(Mandatory = $false)] [Switch]$SSLAllowSelfSignedCertificate = $false, # If true will allow SSL/TLS connections with self signed certificates (this is a security issue) [Parameter(Mandatory = $false)] - [String]$StartupMode = $false, # One of 'Idle', 'Paused' or 'Running'. This is the same as the buttons in the legacy & web GUI + [String]$StartupMode = "Running", # One of 'Idle', 'Paused' or 'Running'. This is the same as the buttons in the legacy & web GUI [Parameter(Mandatory = $false)] - [Boolean]$SubtractBadShares = $true, # If true will deduct rejected shares when calculating effective hashrates + [Boolean]$SubtractBadShares = $true, # If true will deduct bad shares when calculating effective hashrates [Parameter(Mandatory = $false)] [Int]$SyncWindow = 3, # Cycles. Pool prices must all be all have been collected within the last 'SyncWindow' cycles, otherwise the biased value of older poll price data will get reduced more the older the data is [Parameter(Mandatory = $false)] @@ -261,7 +261,7 @@ param( [Parameter(Mandatory = $false)] [Double]$UnrealMinerEarningFactor = 5, # Ignore miner if resulting profit is more than $Config.UnrealPoolPriceFactor higher than average price of all other miners with same algo [Parameter(Mandatory = $false)] - [Switch]$UseAllPoolAlgoCombos, + [Switch]$UseAllPoolAlgorithmCombinations, [Parameter(Mandatory = $false)] [Switch]$UseAnycast = $true, # If true pools (currently ZergPool only) will use anycast for best network performance and ping times [Parameter(Mandatory = $false)] @@ -296,21 +296,22 @@ $Variables.Branding = [PSCustomObject]@{ BrandName = "UG-Miner" BrandWebSite = "https://github.com/UselessGuru/UG-Miner" ProductLabel = "UG-Miner" - Version = [System.Version]"6.2.9" + Version = [System.Version]"6.2.10" } $WscriptShell = New-Object -ComObject Wscript.Shell +$host.UI.RawUI.WindowTitle = "$($Variables.Branding.ProductLabel) $($Variables.Branding.Version)" If ($PSVersiontable.PSVersion -lt [System.Version]"7.0.0") { - Write-Host "`nUnsupported PWSH version $($PSVersiontable.PSVersion.ToString()) detected.`n$($Variables.Branding.BrandName) requires at least PWSH version 7.0.0 (Recommended is 7.2.19) which can be downloaded from https://github.com/PowerShell/powershell/releases.`n`n" -ForegroundColor Red - $WscriptShell.Popup("Unsupported PWSH version $($PSVersiontable.PSVersion.ToString()) detected.`n`n$($Variables.Branding.BrandName) requires at least PWSH version (Recommended is 7.2.19) which can be downloaded from https://github.com/PowerShell/powershell/releases.", 0, "Terminating error - Cannot continue!", 4112) | Out-Null + Write-Host "`nUnsupported PWSH version $($PSVersiontable.PSVersion.ToString()) detected.`n$($Variables.Branding.BrandName) requires at least PWSH version 7.0.0 (Recommended is 7.2.21) which can be downloaded from https://github.com/PowerShell/powershell/releases.`n`n" -ForegroundColor Red + $WscriptShell.Popup("Unsupported PWSH version $($PSVersiontable.PSVersion.ToString()) detected.`n`n$($Variables.Branding.BrandName) requires at least PWSH version (Recommended is 7.2.21) which can be downloaded from https://github.com/PowerShell/powershell/releases.", 0, "Terminating error - Cannot continue!", 4112) | Out-Null Exit } -If ($PSVersiontable.PSVersion -lt [System.Version]"7.2.19") { - Write-Host "Outdated PWSH version $($PSVersiontable.PSVersion.ToString()) detected.`n$($Variables.Branding.BrandName) works best with PWSH version 7.2.19 which can be downloaded from https://github.com/PowerShell/powershell/releases.`n`n" -ForegroundColor Magenta +If ($PSVersiontable.PSVersion -lt [System.Version]"7.2.21") { + Write-Host "Outdated PWSH version $($PSVersiontable.PSVersion.ToString()) detected.`n$($Variables.Branding.BrandName) works best with PWSH version 7.2.21 which can be downloaded from https://github.com/PowerShell/powershell/releases.`n`n" -ForegroundColor Magenta } If ($PSVersiontable.PSVersion -ge [System.Version]"7.3.0") { - Write-Host "Suboptimal PWSH version $($PSVersiontable.PSVersion.ToString()) detected.`n$($Variables.Branding.BrandName) works best with PWSH version 7.2.19 which can be downloaded from https://github.com/PowerShell/powershell/releases.`nPWSH versions 7.3.x and later have a memory leak and are therefore not recommended.`n`n" -ForegroundColor Magenta + Write-Host "Suboptimal PWSH version $($PSVersiontable.PSVersion.ToString()) detected.`n$($Variables.Branding.BrandName) works best with PWSH version 7.2.21 which can be downloaded from https://github.com/PowerShell/powershell/releases.`nPWSH versions 7.3.x and later have a memory leak and are therefore not recommended.`n`n" -ForegroundColor Magenta } # Internet connection must be available @@ -463,8 +464,8 @@ $Variables.SuspendCycle = $false $Variables.WatchdogTimers = [PSCustomObject[]]@() $Variables.RegexAlgoIsEthash = "^Autolykos2|^Etc?hash|^UbqHash" -$Variables.RegexAlgoIsProgPow = "^EvrProgPow|^FiroPow|^KawPow|^MeowPow|^ProgPow" -$Variables.RegexAlgoHasDAG = "^Autolykos2|^Etc?hash|^EvrProgPow|^FiroPow|^KawPow|^MeowPow|^Octopus|^ProgPow|^UbqHash" +$Variables.RegexAlgoIsProgPow = "^EvrProgPow|^FiroPow.*|^KawPow|^MeowPow|^ProgPow" +$Variables.RegexAlgoHasDAG = "^Autolykos2|^Etc?hash|^EvrProgPow|^FiroPow*|^KawPow|^MeowPow|^Octopus|^ProgPow|^UbqHash" $Variables.Summary = "Loading miner device information.
This may take a while..." Write-Message -Level Verbose $Variables.Summary @@ -481,6 +482,18 @@ $Variables.Devices.Where({ $_.Type -eq "GPU" -and $_.Vendor -notin $Variables.Su $Variables.Devices.Where({ $_.Name -in $Config.ExcludeDeviceName -and $_.State -ne [DeviceState]::Unsupported }).ForEach({ $_.State = [DeviceState]::Disabled; $_.Status = "Idle"; $_.StatusInfo = "Disabled (ExcludeDeviceName: '$($_.Name)')" }) +$Variables.VerthashDatPath = ".\Cache\VertHash.dat" +If (Test-Path -LiteralPath $Variables.VerthashDatPath -PathType Leaf) { + Write-Message -Level Verbose "Verifying integrity of VertHash data file '$($Variables.VerthashDatPath)'..." +} +# Alwas run thread job to set throttle limit +$VertHashDatCheckJob = Start-ThreadJob -ScriptBlock { (Get-FileHash -Path ".\Cache\VertHash.dat").Hash -eq "A55531E843CD56B010114AAF6325B0D529ECF88F8AD47639B6EDEDAFD721AA48" } -StreamingHost $null -ThrottleLimit (2 * $Variables.Devices.Where({ $_.State -eq [DeviceState]::Enabled }).Count + 2) + +If ($Variables.FreshConfig) { + # MinerInstancePerDeviceModel: Default to $true if more than one device model per vendor + $Variables.MinerInstancePerDeviceModel = (($Variables.Devices.Where({ $_.State -eq [DeviceState]::Enabled }) | Group-Object Vendor).ForEach({ ($_.Group.Model | Sort-Object -Unique).Count }) | Measure-Object -Maximum | Select-Object -ExpandProperty Maximum) -gt 1 +} + # Build driver version table $Variables.DriverVersion = [PSCustomObject]@{ } $Variables.DriverVersion | Add-Member "CIM" ([PSCustomObject]@{ }) @@ -503,16 +516,6 @@ If ((Get-Content -Path ".\Cache\DriverVersion.json" | ConvertFrom-Json | Convert $Variables.DriverVersion | ConvertTo-Json | Out-File -LiteralPath ".\Cache\DriverVersion.json" -Force } -$Variables.VerthashDatPath = ".\Cache\VertHash.dat" -If (Test-Path -LiteralPath $Variables.VerthashDatPath -PathType Leaf) { - Write-Message -Level Verbose "Verifying integrity of VertHash data file '$($Variables.VerthashDatPath)'..." -} -# Alwas run thread job to set throttle limit -$VertHashDatCheckJob = Start-ThreadJob -ScriptBlock { (Get-FileHash -Path ".\Cache\VertHash.dat").Hash -eq "A55531E843CD56B010114AAF6325B0D529ECF88F8AD47639B6EDEDAFD721AA48" } -StreamingHost $null -ThrottleLimit (2 * $Variables.Devices.Count + 2) - -# Start API server -If ($Config.WebGUI) { Start-APIServer } - # Rename existing switching log If (Test-Path -LiteralPath ".\Logs\SwitchingLog.csv" -PathType Leaf) { Get-ChildItem -Path ".\Logs\SwitchingLog.csv" -File | Rename-Item -NewName { "SwitchingLog$($_.LastWriteTime.toString('_yyyy-MM-dd_HH-mm-ss')).csv" } } @@ -527,10 +530,8 @@ Else { } Remove-Variable VertHashDatCheckJob -If ($Variables.FreshConfig) { - $Variables.Summary = "Change your settings and apply the configuration.
Then Click the 'Start mining' button." - $WscriptShell.Popup("This is the first time you have started $($Variables.Branding.ProductLabel).`n`nUse the configuration editor to change your settings and apply the configuration.`n`n`Start making money by clicking 'Start mining'.`n`nHappy Mining!", 0, "Welcome to $($Variables.Branding.ProductLabel) v$($Variables.Branding.Version)", 64) | Out-Null -} +# Start API server +If ($Config.WebGUI) { Start-APIServer } Function MainLoop { @@ -606,28 +607,40 @@ Function MainLoop { Switch ($Variables.NewMiningStatus) { "Idle" { - $Variables.Summary = "'Stop Mining' button clicked." - Write-Host "`n" - Write-Message -Level Info $Variables.Summary + If ($Variables.MiningStatus) { + $Variables.Summary = "'Stop Mining' button clicked." + Write-Host "`n" + Write-Message -Level Info $Variables.Summary - Stop-Core - Stop-IdleDetection - Stop-Brain - Stop-BalancesTracker - # If ($Config.ReportToServer) { Write-MonitoringData } + Stop-Core + Stop-IdleDetection + Stop-Brain + Stop-BalancesTracker + # If ($Config.ReportToServer) { Write-MonitoringData } - # Load currency exchange rates - [Void](Get-Rate) + # Load currency exchange rates + [Void](Get-Rate) + } + + If (-not $Variables.FreshConfig) { + $Variables.Summary = "$($Variables.Branding.ProductLabel) is stopped.
Click the 'Start mining' button to make money." + Write-Host "`n" + Write-Message -Level Info ($Variables.Summary -replace '
', ' ') + } - $Variables.Summary = "$($Variables.Branding.ProductLabel) is stopped.
Click the 'Start mining' button to make money." - Write-Host "`n" - Write-Message -Level Info ($Variables.Summary -replace '
', ' ') Break } "Paused" { $Variables.Summary = "'Pause Mining' button clicked." Write-Host "`n" Write-Message -Level Info $Variables.Summary + # Allow up to 30 seconds for all miners to get stopped + $Counter = 30 + While ($Counter -gt 30 -and $Variables.Miners.Where({ $_.Status -in @([MinerStatus]::DryRun, [MinerStatus]::Running) })) { + Start-Sleep -Seconds 1 + $Counter -- + } + Remove-Variable Counter Stop-Core Stop-IdleDetection @@ -642,7 +655,7 @@ Function MainLoop { Break } "Running" { - If ($Variables.MiningStatus -ne $Variables.NewMiningStatus) { + If ($Variables.MiningStatus -and $Variables.NewMiningStatus) { $Variables.Summary = "'Start Mining' button clicked." Write-Host "`n" Write-Message -Level Info $Variables.Summary @@ -722,42 +735,42 @@ Function MainLoop { } "h" { Write-Host "`nHot key legend:" - Write-Host "a: Toggle " -NoNewline; Write-Host "A" -ForegroundColor Cyan -NoNewline; Write-Host "ccuracy column visibility (currently " -NoNewline; If ($Variables.ShowAccuracy) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" - Write-Host "b: Toggle Listing Pool " -NoNewline; Write-Host "B" -ForegroundColor Cyan -NoNewline; Write-Host "alances (currently " -NoNewline; If ($Variables.ShowPoolBalances) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" + Write-Host "a: Toggle '" -NoNewline; Write-Host "A" -ForegroundColor Cyan -NoNewline; Write-Host "ccuracy' column visibility (currently " -NoNewline; If ($Variables.ShowAccuracy) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" + Write-Host "b: Toggle Listing pool " -NoNewline; Write-Host "b" -ForegroundColor Cyan -NoNewline; Write-Host "alances (currently " -NoNewline; If ($Variables.ShowPoolBalances) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" If ($Variables.CalculatePowerCost) { - Write-Host "c: Toggle Power " -NoNewline; Write-Host "C" -ForegroundColor Cyan -NoNewline; Write-Host "ost column visibility (currently " -NoNewline; If ($Variables.ShowPowerCost) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" + Write-Host "c: Toggle Power" -NoNewline; Write-Host "C" -ForegroundColor Cyan -NoNewline; Write-Host "ost column visibility (currently " -NoNewline; If ($Variables.ShowPowerCost) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" } - Write-Host "e: Toggle " -NoNewline; Write-Host "E" -ForegroundColor Cyan -NoNewline; Write-Host "arnings column visibility (currently " -NoNewline; If ($Variables.ShowEarning) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" - Write-Host "f: Toggle Pool " -NoNewline; Write-Host "f" -ForegroundColor Cyan -NoNewline; Write-Host "ees column visibility (currently " -NoNewline; If ($Variables.ShowPoolFee) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" - Write-Host "i: Toggle Earning B" -NoNewline; Write-Host "i" -ForegroundColor Cyan -NoNewline; Write-Host "as column visibility (currently " -NoNewline; If ($Variables.ShowEarningBias) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" - Write-Host "m: Toggle " -NoNewline; Write-Host "M" -ForegroundColor Cyan -NoNewline; Write-Host "iner Fees column visibility (currently " -NoNewline; If ($Variables.ShowMinerFee) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" - Write-Host "n: Toggle Coin" -NoNewline; Write-Host "N" -ForegroundColor Cyan -NoNewline; Write-Host "ame column visibility (currently " -NoNewline; If ($Variables.ShowCoinName) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" + Write-Host "e: Toggle '" -NoNewline; Write-Host "E" -ForegroundColor Cyan -NoNewline; Write-Host "arnings' column visibility (currently " -NoNewline; If ($Variables.ShowEarning) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" + Write-Host "f: Toggle Pool '" -NoNewline; Write-Host "F" -ForegroundColor Cyan -NoNewline; Write-Host "ees' column visibility (currently " -NoNewline; If ($Variables.ShowPoolFee) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" + Write-Host "i: Toggle 'EarningB" -NoNewline; Write-Host "i" -ForegroundColor Cyan -NoNewline; Write-Host "as' column visibility (currently " -NoNewline; If ($Variables.ShowEarningBias) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" + Write-Host "m: Toggle " -NoNewline; Write-Host "M" -ForegroundColor Cyan -NoNewline; Write-Host "iner 'Fees' column visibility (currently " -NoNewline; If ($Variables.ShowMinerFee) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" + Write-Host "n: Toggle 'Coin" -NoNewline; Write-Host "N" -ForegroundColor Cyan -NoNewline; Write-Host "ame' column visibility (currently " -NoNewline; If ($Variables.ShowCoinName) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" Write-Host "o: Toggle Listing all " -NoNewline; Write-Host "o" -ForegroundColor Cyan -NoNewline; Write-Host "ptimal miners (currently " -NoNewline; If ($Variables.ShowAllMiners) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" - Write-Host "p: Toggle " -NoNewline; Write-Host "P" -ForegroundColor Cyan -NoNewline; Write-Host "ool column visibility (currently " -NoNewline; If ($Variables.ShowPool) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" + Write-Host "p: Toggle '" -NoNewline; Write-Host "P" -ForegroundColor Cyan -NoNewline; Write-Host "ool' column visibility (currently " -NoNewline; If ($Variables.ShowPool) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" If ($Variables.CalculatePowerCost) { - Write-Host "r: Toggle P" -NoNewline; Write-Host "r" -ForegroundColor Cyan -NoNewline; Write-Host "ofit Bias column visibility (currently " -NoNewline; If ($Variables.ShowProfitBias) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" + Write-Host "r: Toggle 'P" -NoNewline; Write-Host "r" -ForegroundColor Cyan -NoNewline; Write-Host "ofitBias' column visibility (currently " -NoNewline; If ($Variables.ShowProfitBias) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" } Write-Host "s: Toggle UI " -NoNewline; Write-Host "S" -ForegroundColor Cyan -NoNewline; Write-Host "tyle [full or light] (currently " -NoNewline; Write-Host "$($Variables.UIStyle)" -ForegroundColor Blue -NoNewline; Write-Host ")" If ($Variables.CalculatePowerCost) { - Write-Host "t: Toggle Profi" -NoNewline; Write-Host "t" -ForegroundColor Cyan -NoNewline; Write-Host " column visibility (currently " -NoNewline; If ($Variables.ShowProfit) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" + Write-Host "t: Toggle 'Profi" -NoNewline; Write-Host "t" -ForegroundColor Cyan -NoNewline; Write-Host "' column visibility (currently " -NoNewline; If ($Variables.ShowProfit) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" } Write-Host "u: Toggle " -NoNewline; Write-Host "U" -ForegroundColor Cyan -NoNewline; Write-Host "ser column visibility (currently " -NoNewline; If ($Variables.ShowUser) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" If ($Variables.CalculatePowerCost) { - Write-Host "w: Toggle Po" -NoNewline; Write-Host "w" -ForegroundColor Cyan -NoNewline; Write-Host "er consumption column visibility (currently " -NoNewline; If ($Config.CalculatePowerCost -and $Variables.ShowPowerConsumption) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" + Write-Host "w: Toggle 'Po" -NoNewline; Write-Host "w" -ForegroundColor Cyan -NoNewline; Write-Host "erConsumption' column visibility (currently " -NoNewline; If ($Config.CalculatePowerCost -and $Variables.ShowPowerConsumption) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" } - Write-Host "y: Toggle Currenc" -NoNewline; Write-Host "y" -ForegroundColor Cyan -NoNewline; Write-Host " column visibility (currently " -NoNewline; If ($Variables.ShowCurrency) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" + Write-Host "y: Toggle 'Currenc" -NoNewline; Write-Host "y" -ForegroundColor Cyan -NoNewline; Write-Host "' column visibility (currently " -NoNewline; If ($Variables.ShowCurrency) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")" Break } "i" { $Variables.ShowEarningBias = -not $Variables.ShowEarningBias - Write-Host "'Earning B" -NoNewline; Write-Host "i" -ForegroundColor Cyan -NoNewline; Write-Host "as' column visibility set to " -NoNewline; If ($Variables.ShowEarningBias) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host "." + Write-Host "'EarningB" -NoNewline; Write-Host "i" -ForegroundColor Cyan -NoNewline; Write-Host "as' column visibility set to " -NoNewline; If ($Variables.ShowEarningBias) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host "." Start-Sleep -Seconds 2 $Variables.RefreshNeeded = $true Break } "m" { $Variables.ShowMinerFee = -not $Variables.ShowMinerFee - Write-Host "'" -NoNewline; Write-Host "M" -ForegroundColor Cyan -NoNewline; Write-Host "iner Fees' column visibility set to " -NoNewline; If ($Variables.ShowMinerFee) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host "." + Write-Host "" -NoNewline; Write-Host "M" -ForegroundColor Cyan -NoNewline; Write-Host "iner 'Fees' column visibility set to " -NoNewline; If ($Variables.ShowMinerFee) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host "." Start-Sleep -Seconds 2 $Variables.RefreshNeeded = $true Break @@ -771,14 +784,14 @@ Function MainLoop { } "o" { $Variables.ShowAllMiners = -not $Variables.ShowAllMiners - Write-Host "'Listing All " -NoNewline; Write-Host "o" -ForegroundColor Cyan -NoNewline; Write-Host "ptimal miners' set to " -NoNewline; If ($Variables.ShowAllMiners) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host "." + Write-Host "'Listing all " -NoNewline; Write-Host "o" -ForegroundColor Cyan -NoNewline; Write-Host "ptimal miners' set to " -NoNewline; If ($Variables.ShowAllMiners) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host "." Start-Sleep -Seconds 2 $Variables.RefreshNeeded = $true Break } "p" { $Variables.ShowPool = -not $Variables.ShowPool - Write-Host "'" -NoNewline; Write-Host "P" -ForegroundColor Cyan -NoNewline; Write-Host "ool name' column visibility set to " -NoNewline; If ($Variables.ShowPool) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host "." + Write-Host "'" -NoNewline; Write-Host "P" -ForegroundColor Cyan -NoNewline; Write-Host "ool' column visibility set to " -NoNewline; If ($Variables.ShowPool) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host "." Start-Sleep -Seconds 2 $Variables.RefreshNeeded = $true Break @@ -786,7 +799,7 @@ Function MainLoop { "r" { If ($Variables.CalculatePowerCost) { $Variables.ShowProfitBias = -not $Variables.ShowProfitBias - Write-Host "'P" -NoNewline; Write-Host "r" -ForegroundColor Cyan -NoNewline; Write-Host "ofit Bias' column visibility set to " -NoNewline; If ($Variables.ShowProfitBias) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host "." + Write-Host "'P" -NoNewline; Write-Host "r" -ForegroundColor Cyan -NoNewline; Write-Host "ofitBias' column visibility set to " -NoNewline; If ($Variables.ShowProfitBias) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host "." Start-Sleep -Seconds 2 $Variables.RefreshNeeded = $true } @@ -818,7 +831,7 @@ Function MainLoop { "w" { If ($Variables.CalculatePowerCost) { $Variables.ShowPowerConsumption = -not $Variables.ShowPowerConsumption - Write-Host "'Po" -NoNewline; Write-Host "w" -ForegroundColor Cyan -NoNewline; Write-Host "er consumption' column visibility set to " -NoNewline; If ($Variables.ShowPowerConsumption) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host "." + Write-Host "'Po" -NoNewline; Write-Host "w" -ForegroundColor Cyan -NoNewline; Write-Host "erConsumption' column visibility set to " -NoNewline; If ($Variables.ShowPowerConsumption) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host "." Start-Sleep -Seconds 2 $Variables.RefreshNeeded = $true } @@ -840,6 +853,8 @@ Function MainLoop { If ($Variables.RefreshNeeded) { $Variables.RefreshNeeded = $false + If ($Config.WebGUI) { Start-APIServer } Else { Stop-APIServer } + $host.UI.RawUI.WindowTitle = "$($Variables.Branding.ProductLabel) $($Variables.Branding.Version) - Runtime: {0:dd} days {0:hh} hrs {0:mm} mins - Path: $($Variables.Mainpath)" -f [TimeSpan]([DateTime]::Now.ToUniversalTime() - $Variables.ScriptStartTime) If ($LegacyGUIForm) { $LegacyGUIForm.Text = $host.UI.RawUI.WindowTitle @@ -900,7 +915,7 @@ Function MainLoop { If ($Variables.ShowEarning) { @{ Label = "Earning"; Expression = { If ([Double]::IsNaN($_.Earning)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Earning * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) } }; Align = "right" } } If ($Variables.MiningPowerCost -and $Variables.ShowProfitBias) { @{ Label = "ProfitBias"; Expression = { If ([Double]::IsNaN($_.Profit_Bias)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Profit_Bias * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) } }; Align = "right" } } If ($Variables.MiningPowerCost -and $Variables.ShowProfit) { @{ Label = "Profit"; Expression = { If ([Double]::IsNaN($_.Profit)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Profit * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) } }; Align = "right" } } - If ($Variables.ShowPowerConsumption -and $Config.CalculatePowerCost) { @{ Label = "Power Consumption"; Expression = { If (-not $_.MeasurePowerConsumption) { If ([Double]::IsNaN($_.PowerConsumption)) { "n/a" } Else { "$($_.PowerConsumption.ToString("N2")) W" } } Else { If ($_.Status -eq "Running") { "Measuring..." } Else { "Unmeasured" } } }; Align = "right" } } + If ($Variables.ShowPowerConsumption -and $Config.CalculatePowerCost) { @{ Label = "PowerConsumption"; Expression = { If (-not $_.MeasurePowerConsumption) { If ([Double]::IsNaN($_.PowerConsumption)) { "n/a" } Else { "$($_.PowerConsumption.ToString("N2")) W" } } Else { If ($_.Status -eq "Running") { "Measuring..." } Else { "Unmeasured" } } }; Align = "right" } } If ($Variables.ShowPowerCost -and $Config.CalculatePowerCost -and $Variables.MiningPowerCost) { @{ Label = "PowerCost"; Expression = { If ([Double]::IsNaN($_.PowerConsumption)) { "n/a" } Else { "-{0:n$($Config.DecimalsMax)}" -f ($_.PowerCost * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) } }; Align = "right" } } If ($Variables.ShowAccuracy) { @{ Label = "Accuracy"; Expression = { $_.Workers.Pool.Accuracy.ForEach({ "{0:P0}" -f [Double]$_ }) }; Align = "right" } } @{ Label = "Algorithm"; Expression = { $_.Workers.Pool.Algorithm -join ' & ' } } @@ -914,7 +929,7 @@ Function MainLoop { ) # Display optimal miners list $Bias = If ($Variables.CalculatePowerCost -and -not $Config.IgnorePowerCost) { "Profit_Bias" } Else { "Earning_Bias" } - ($Variables.MinersOptimal | Group-Object -Property { $_.DeviceNames }).ForEach( + ($Variables.MinersOptimal | Group-Object { [String]$_.DeviceNames }).ForEach( { $MinersDeviceGroup = $_.Group | Sort-Object { $_.Name, [String]$_.Algorithms } -Unique $MinersDeviceGroupNeedingBenchmark = @($MinersDeviceGroup.Where({ $_.Benchmark })) @@ -942,11 +957,11 @@ Function MainLoop { Remove-Variable Bias, Miner_Table, MinersDeviceGroup, MinersDeviceGroupNeedingBenchmark, MinersDeviceGroupNeedingPowerConsumptionMeasurement -ErrorAction Ignore } - If ($Variables.MinersBestPerDeviceCombo) { - Write-Host "`nRunning $(If ($Variables.MinersBestPerDeviceCombo.Count -eq 1) { "miner:" } Else { "miners: $($Variables.MinersBestPerDeviceCombo.Count)" })" + If ($Variables.MinersBest) { + Write-Host "`nRunning $(If ($Variables.MinersBest.Count -eq 1) { "miner:" } Else { "miners: $($Variables.MinersBest.Count)" })" [System.Collections.ArrayList]$Miner_Table = @( @{ Label = "Name"; Expression = { $_.Name } } - If ($Config.CalculatePowerCost -and $Variables.ShowPowerConsumption) { @{ Label = "Power Consumption"; Expression = { If ([Double]::IsNaN($_.PowerConsumption_Live)) { "n/a" } Else { "$($_.PowerConsumption_Live.ToString("N2")) W" } }; Align = "right" } } + If ($Config.CalculatePowerCost -and $Variables.ShowPowerConsumption) { @{ Label = "PowerConsumption"; Expression = { If ([Double]::IsNaN($_.PowerConsumption_Live)) { "n/a" } Else { "$($_.PowerConsumption_Live.ToString("N2")) W" } }; Align = "right" } } @{ Label = "Hashrate"; Expression = { $_.Hashrates_Live.ForEach({ If ([Double]::IsNaN($_)) { "n/a" } Else { $_ | ConvertTo-Hash } }) -join ' & ' }; Align = "right" } @{ Label = "Active (this run)"; Expression = { "{0:dd}d {0:hh}h {0:mm}m {0:ss}s" -f ([DateTime]::Now.ToUniversalTime() - $_.BeginTime) } } @{ Label = "Active (total)"; Expression = { "{0:dd}d {0:hh}h {0:mm}m {0:ss}s" -f ($_.TotalMiningDuration) } } @@ -954,7 +969,7 @@ Function MainLoop { @{ Label = "Device(s)"; Expression = { $_.DeviceNames -join ',' } } @{ Label = "Command"; Expression = { $_.CommandLine } } ) - $Variables.MinersBestPerDeviceCombo | Sort-Object -Property { $_.DeviceNames } | Format-Table $Miner_Table -Wrap | Out-Host + $Variables.MinersBest | Sort-Object -Property { $_.DeviceNames } | Format-Table $Miner_Table -Wrap | Out-Host Remove-Variable Miner_Table } @@ -969,7 +984,7 @@ Function MainLoop { Write-Host "$($ProcessesIdle.Count) previously executed miner$(If ($ProcessesIdle.Count -ne 1) { "s" }) (past 24 hrs):" [System.Collections.ArrayList]$Miner_Table = @( @{ Label = "Name"; Expression = { $_.Name } } - If ($Config.CalculatePowerCost -and $Variables.ShowPowerConsumption) { @{ Label = "Power Consumption"; Expression = { If ([Double]::IsNaN($_.PowerConsumption)) { "n/a" } Else { "$($_.PowerConsumption.ToString("N2")) W" } }; Align = "right" } } + If ($Config.CalculatePowerCost -and $Variables.ShowPowerConsumption) { @{ Label = "PowerConsumption"; Expression = { If ([Double]::IsNaN($_.PowerConsumption)) { "n/a" } Else { "$($_.PowerConsumption.ToString("N2")) W" } }; Align = "right" } } @{ Label = "Hashrate"; Expression = { $_.Workers.Hashrate.ForEach({ $_ | ConvertTo-Hash }) -join ' & ' }; Align = "right" } @{ Label = "Time since last run"; Expression = { "{0:dd}d {0:hh}h {0:mm}m {0:ss}s" -f $([DateTime]::Now - $_.EndTime.ToLocalTime()) } } @{ Label = "Active (total)"; Expression = { "{0:dd}d {0:hh}h {0:mm}m {0:ss}s" -f $_.TotalMiningDuration } } @@ -986,7 +1001,7 @@ Function MainLoop { Write-Host -ForegroundColor Red "$($ProcessesFailed.Count) failed $(If ($ProcessesFailed.Count -eq 1) { "miner" } Else { "miners" }) (past 24 hrs):" [System.Collections.ArrayList]$Miner_Table = @( @{ Label = "Name"; Expression = { $_.Name } } - If ($Config.CalculatePowerCost -and $Variables.ShowPowerConsumption) { @{ Label = "Power Consumption"; Expression = { If ([Double]::IsNaN($_.PowerConsumption)) { "n/a" } Else { "$($_.PowerConsumption.ToString("N2")) W" } }; Align = "right" } } + If ($Config.CalculatePowerCost -and $Variables.ShowPowerConsumption) { @{ Label = "PowerConsumption"; Expression = { If ([Double]::IsNaN($_.PowerConsumption)) { "n/a" } Else { "$($_.PowerConsumption.ToString("N2")) W" } }; Align = "right" } } @{ Label = "Hashrate"; Expression = { $_.Workers.Hashrate.ForEach({ $_ | ConvertTo-Hash }) -join ' & ' }; Align = "right" } @{ Label = "Time since last fail"; Expression = { "{0:dd}d {0:hh}h {0:mm}m {0:ss}s" -f $([DateTime]::Now - $_.EndTime.ToLocalTime()) } } @{ Label = "Active (total)"; Expression = { "{0:dd}d {0:hh}h {0:mm}m {0:ss}s" -f $_.TotalMiningDuration } } @@ -1043,6 +1058,12 @@ Function MainLoop { } } +If ($Variables.FreshConfig) { + $Variables.NewMiningStatus = "Idle" # Must click 'Starrt mining' in GUI + Write-Message -Level Warn "No configuration file found. Edit and save your configuration using the configuration editor (http://localhost:$($Config.APIport)/configedit.html)" + $Variables.Summary = "Edit your settings and save the configuration.
Then click the 'Start mining' button." +} + While ($true) { If ($Config.LegacyGUI) { If (-not $LegacyGUIform.CanSelect) { @@ -1052,7 +1073,7 @@ While ($true) { # Show legacy GUI $LegacyGUIform.ShowDialog() | Out-Null } - Else { + ElseIf (-not $Variables.FreshConfig) { [Void](MainLoop) Start-Sleep -Milliseconds 50 } diff --git a/UG-Miner_AsAdmin.bat b/UG-Miner_AsAdmin.bat new file mode 100644 index 00000000..bf88715b --- /dev/null +++ b/UG-Miner_AsAdmin.bat @@ -0,0 +1,56 @@ +@echo off +:: BatchGotAdmin +::------------------------------------- +REM --> Check for permissions +>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" + +REM --> If error flag set, we do not have admin. +if '%errorlevel%' NEQ '0' ( + echo Requesting administrative privileges... + goto UACPrompt +) else ( goto gotAdmin ) + +:UACPrompt + echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" + set params = %*:"=" + echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" + + "%temp%\getadmin.vbs" + del "%temp%\getadmin.vbs" + exit /B + +:gotAdmin + pushd "%CD%" + CD /D "%~dp0" +::-------------------------------------- + +@echo off + +where /q PWSH.exe + +if ERRORLEVEL 1 ( + + echo Powershell 6 or later is required. Cannot continue. + pause + +) else ( + + if not "%GPU_FORCE_64BIT_PTR%"=="1" (setx GPU_FORCE_64BIT_PTR 1) > nul + if not "%GPU_MAX_HEAP_SIZE%"=="100" (setx GPU_MAX_HEAP_SIZE 100) > nul + if not "%GPU_USE_SYNC_OBJECTS%"=="1" (setx GPU_USE_SYNC_OBJECTS 1) > nul + if not "%GPU_MAX_ALLOC_PERCENT%"=="100" (setx GPU_MAX_ALLOC_PERCENT 100) > nul + if not "%GPU_SINGLE_ALLOC_PERCENT%"=="100" (setx GPU_SINGLE_ALLOC_PERCENT 100) > nul + if not "%CUDA_DEVICE_ORDER%"=="PCI_BUS_ID" (setx CUDA_DEVICE_ORDER PCI_BUS_ID) > nul + + where /q WT.exe + + if ERRORLEVEL 1 ( + + PWSH -executionpolicy bypass -windowstyle maximized -command "%~dp0UG-Miner.ps1" -ConfigFile "%~dp0Config\config.json" + + ) else ( + + WT --maximized --profile "PowerShell 7" PWSH "%~dp0UG-Miner.ps1" -ConfigFile "%~dp0Config\config.json" + + ) +) diff --git a/Utils/UG-Miner_LogReader.xml b/Utils/UG-Miner_LogReader.xml index f73a867c..b71e29e9 100644 --- a/Utils/UG-Miner_LogReader.xml +++ b/Utils/UG-Miner_LogReader.xml @@ -32,7 +32,7 @@ false - Benchmark.+for .+ in progress|Power consumption measurement for.+ in progress + (benchmark|power consumption).+for .+ in progress false true false @@ -42,7 +42,7 @@ Black - Benchmark done|Power consumption measurement done + Saved (power consumption|hashrate).+for .+ \[.+ done\] false true false diff --git a/Version.txt b/Version.txt index d2fd737d..5e8e0ef8 100644 --- a/Version.txt +++ b/Version.txt @@ -1,6 +1,6 @@ { "Product": "UG-Miner", - "Version": "6.2.9", + "Version": "6.2.10", "AutoUpdate": true, "RequireRestart": true, "Uri": "https://github.com/UselessGuru/UG-Miner/archive/refs/heads/master.zip", diff --git a/Web/APIdocs.html b/Web/APIdocs.html index d6a67f58..0d23f0b5 100644 --- a/Web/APIdocs.html +++ b/Web/APIdocs.html @@ -16,8 +16,8 @@ Product: UG-Miner File: API.psm1 -Version: 6.2.9 -version date: 2024/06/13 +Version: 6.2.10 +version date: 2024/06/18 --> @@ -61,9 +61,6 @@

Resources

/braindata

Returns the braindata information.


- /brainjobs -

Returns the brainjobs information.

-
/btc

Shows the BTC to main currency exchange rate.


@@ -130,12 +127,9 @@

Resources

/miners/bestperdevice

Shows the miners best per device data, use for debugging.


- /miners/bestcombo + /miners/best

Shows the miners best combo data, use for debugging.


- /miners/bestcombos -

Shows the miners best combos data, use for debugging.

-
/miners/disabled

Shows the disabled miners data, use for debugging.


@@ -340,7 +334,7 @@

Functions


/functions/stat/set
Set miner hashrate value, not useful for pool stats:
Parameters: (JSON, pool list as array, requires properties Name=StatName, Algorithm=Algorithm(s), Type=Hashrate, Value (0=failed; -1=disabled)) -
e.g.: /functions/stat/set?Miners%3D%5B{"Name"%3A"SRBMinerMulti-v2.5.6-1xRadeonRX5700XT8GB"%2C"Algorithms"%3A%5B"Argon2d16000"%5D}%5D%26Type%3DHashrate%26Value%3D-1 +
e.g.: /functions/stat/set?Miners%3D%5B{"Name"%3A"SRBMinerMulti-v2.5.7-1xRadeonRX5700XT8GB"%2C"Algorithms"%3A%5B"Argon2d16000"%5D}%5D%26Type%3DHashrate%26Value%3D-1

/functions/pool/enable
Enable disabled pool diff --git a/Web/configedit.html b/Web/configedit.html index 63036045..ca902966 100644 --- a/Web/configedit.html +++ b/Web/configedit.html @@ -52,7 +52,7 @@

Edit configuration

NiceHash -
+
@@ -395,13 +395,13 @@

Edit configuration

Show profit column
-
+
Show profit bias column
Show earning column
-
+
Show earning bias column
@@ -419,15 +419,15 @@

Edit configuration

Show pool column
-
+
Show pool fee column

-
- Show all miners +
+ Show all optimal miners
-
+
Show pool balances

@@ -786,7 +786,7 @@

Edit configuration

if (poolname == 'pool-miningpoolhub') { if (document.getElementById(poolname).checked) { $('.modal-title').text("Warning!"); - $('.modal-body').html("MiningPoolHub is no longer trustworthy. Outstanding balances will not get paid and support will not respond. Use at your own risk!"); + $('.modal-body').html("You have enabled mining to MiningPoolHub. The pool is no longer trustworthy. Outstanding balances will not get paid and support will not respond. Use at your own risk!"); $('#myModal').modal({ show: true }); @@ -811,7 +811,7 @@

Edit configuration

if (document.getElementById(('pool-' + value).toString().toLowerCase())) document.getElementById(('pool-' + value).toString().toLowerCase()).checked = true; if (value === "MiningPoolHub") { $('.modal-title').text("Warning!"); - $('.modal-body').html("MiningPoolHub is no longer trustworthy. Outstanding balances will not get paid and support will not respond. Use at your own risk!"); + $('.modal-body').html("You have enabled mining to MiningPoolHub. The pool is no longer trustworthy. Outstanding balances will not get paid and support will not respond. Use at your own risk!"); $('#myModal').modal({ show: true }); @@ -1044,6 +1044,20 @@

Edit configuration

document.body.style.cursor = 'default'; + $.ajax({ + async: false, + dataType: 'json', + timeout: 10, + url: '/functions/mining/getstatus', + success: function(result) { + if (result == 'FreshConfig') { + $('.modal-title').text('UG-Miner has no saved configuration'); + $(".modal-body").html("Edit your settings and save the configuration. Start making money by clicking 'Start mining'. Happy mining!"); + $('#myModal').modal({show:true}); + }; + } + }); + // Error reading configuration if (config && configfile && poolvariants && regions && devices) { document.getElementById('save-button').disabled = false; @@ -1480,7 +1494,7 @@

Edit configuration

config.BackupOnAutoUpdate = document.getElementById('BackupOnAutoUpdate').checked; // Write current config - if (config.MainCurrency && config.PoolName.length >= 1 && config.ExcludeDeviceName.length < enabledDevicesCount ) { + if (config.MainCurrency && config.PoolName.length >= 1 && config.ExcludeDeviceName.length < enabledDevicesCount && !(config.NiceHashWalletIsInternal && (!config.NiceHashWallet || config.NiceHashWallet == config.Wallets.BTC))) { var $command = '/functions/config/set?' + encodeURIComponent(JSON.stringify(config)); $('.modal-body').load($command, function () { $('.modal-title').text('Save configuration'); @@ -1500,6 +1514,12 @@

Edit configuration

$('.modal-body').html('Cannot save configuration - you must select at least one mining device.'); document.body.style.cursor = 'default'; $('#myModal').modal({ show: true }); + } else if (config.NiceHashWalletIsInternal && (!config.NiceHashWallet || config.NiceHashWallet == config.Wallets.BTC)) { + // Nicehash External but no wallet + $('.modal-title').html('Error: Invalid configuration'); + $('.modal-body').html('Cannot save configuration - Internal NiceHash address must be different from your normal BTC wallet.'); + document.body.style.cursor = 'default'; + $('#myModal').modal({ show: true }); } else { // No pool selected $('.modal-title').html('Error: Invalid configuration'); diff --git a/Web/index.html b/Web/index.html index b0bcf4d8..72dbaf27 100644 --- a/Web/index.html +++ b/Web/index.html @@ -34,7 +34,7 @@

Active miners

data-toggle="table" data-toolbar="#toolbar" data-undefined-text="" - data-url="/miners/bestcombo" + data-url="/miners/best" > @@ -42,6 +42,7 @@

Active miners

Devices Name + Info Miner Version Type diff --git a/Web/minersall.html b/Web/minersall.html index e8a49221..8a356378 100644 --- a/Web/minersall.html +++ b/Web/minersall.html @@ -51,6 +51,7 @@

All miners

Name + Info Miner Version Command line @@ -58,7 +59,7 @@

All miners

Type Status Status Info - Reasons + Reasons Earning (biased) Earning Power cost @@ -138,7 +139,7 @@

All miners

} }); - $('#miners').on('column-switch.bs.table column-switch-all.bs.table reorder-column.bs.table', function (e) { + $('#miners').on('column-switch.bs.table column-switch-all.bs.table reorder-column.bs.table', function () { $(".addlocalcurrency").each(function () { if (this.childNodes[0].innerText && !this.childNodes[0].innerText.endsWith(' / day')) this.childNodes[0].innerText = this.childNodes[0].innerText + '\n' + config.MainCurrency + ' / day'; }); diff --git a/Web/minersoptimal.html b/Web/minersoptimal.html index 93556301..054dd960 100644 --- a/Web/minersoptimal.html +++ b/Web/minersoptimal.html @@ -17,7 +17,7 @@

Optimal miners

data-cache="true" data-click-to-select="true" data-cookie="true" - data-cookie-id-table="minersoptimal" + data-cookie-id-table="minersoptimal1" data-cookies-enabled="['bs.table.hiddenColumns', 'bs.table.columns']" data-detail-formatter="detailFormatter" data-detail-view="true" @@ -34,26 +34,25 @@

Optimal miners

data-show-refresh="true" data-show-search-clear-button="true" data-show-toggle="true" - data-sort-select-options="true" + data-sort-select-options="false" data-toggle="table" data-toolbar="#toolbar" data-undefined-text="" - data-url="/miners/Optimal" + data-url="/miners/optimal" > - - Name + + Name + Name Miner Version Command line Devices Type Status - SubStatus Status Info - Reasons Earning (biased) Earning Power cost @@ -66,30 +65,30 @@

Optimal miners

Primary algorithm (variant) Primary currency Primary coin name - Primary pool - Primary pool (variant) - Primary user + Primary pool + Primary pool (variant) + Primary user Primary
hashrate - Primary pool fee - Primary miner fee + Primary pool fee + Primary miner fee Secondary algorithm Secondary algorithm (variant) Secondary currency Secondary coin name - Secondary pool - Secondary pool (variant) - Secondary user + Secondary pool + Secondary pool (variant) + Secondary user Secondary
hashrate - Secondary pool fee - Secondary miner fee + Secondary pool fee + Secondary miner fee Miner API - API port + API port Min. data samples - WarmupTime [0] - WarmupTime [1] + WarmupTime [0] + WarmupTime [1] Updated - Environment variables - Activated + Environment variables + Activated WindowStyle Benchmark Measure power consumption @@ -101,11 +100,11 @@

Optimal miners

Keep running Continous cycles Prioritize - MinerSet + MinerSet - + - + \ No newline at end of file diff --git a/Web/minersunavailable.html b/Web/minersunavailable.html index db3cda31..cca281c9 100644 --- a/Web/minersunavailable.html +++ b/Web/minersunavailable.html @@ -51,6 +51,7 @@

Unavailable miners

Name + Info Miner Version Command line @@ -58,7 +59,7 @@

Unavailable miners

Type Status Status Info - Reasons + Reasons Earning (biased) Earning Power cost @@ -71,8 +72,8 @@

Unavailable miners

Primary algorithm (variant) Primary currency Primary coin name - Primary pool - Primary pool (variant) + Primary pool + Primary pool (variant) Primary user Primary
hashrate Primary pool fee @@ -81,8 +82,8 @@

Unavailable miners

Secondary algorithm (variant) Secondary currency Secondary coin name - Secondary pool - Secondary pool (variant) + Secondary pool + Secondary pool (variant) Secondary user Secondary
hashrate Secondary pool fee diff --git a/Web/scripts/demo.ps1 b/Web/scripts/demo.ps1 index 25f68ae9..e51362fb 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.2.9 -Version date: 2024/06/13 +Version: 6.2.10 +Version date: 2024/06/20 #> # Try running this script as: http://localhost:3999/scripts/demo.ps1?message=Hello%20World!