diff --git a/Balances/HashCryptos.ps1 b/Balances/HashCryptos.ps1 index 30253e79..6cdc5663 100644 --- a/Balances/HashCryptos.ps1 +++ b/Balances/HashCryptos.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\HashCryptos.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/HiveON.ps1 b/Balances/HiveON.ps1 index 7c8a18b9..d22c67be 100644 --- a/Balances/HiveON.ps1 +++ b/Balances/HiveON.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\Hiveon.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/MiningDutch.ps1 b/Balances/MiningDutch.ps1 index 0b8fdbf0..1f0a0c66 100644 --- a/Balances/MiningDutch.ps1 +++ b/Balances/MiningDutch.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\MiningDutch.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/NiceHash External.ps1 b/Balances/NiceHash External.ps1 index 886d7188..634a5f45 100644 --- a/Balances/NiceHash External.ps1 +++ b/Balances/NiceHash External.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\NiceHash Internal.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/NiceHash Internal.ps1 b/Balances/NiceHash Internal.ps1 index f37a8282..3ffde3a6 100644 --- a/Balances/NiceHash Internal.ps1 +++ b/Balances/NiceHash Internal.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\NiceHash Internal.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/ProHashing.ps1 b/Balances/ProHashing.ps1 index e28b6378..1a56954b 100644 --- a/Balances/ProHashing.ps1 +++ b/Balances/ProHashing.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\ProHashing.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/ZergPool.ps1 b/Balances/ZergPool.ps1 index a7d3bfc7..5c7b336f 100644 --- a/Balances/ZergPool.ps1 +++ b/Balances/ZergPool.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\ZergPool.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/Zpool.ps1 b/Balances/Zpool.ps1 index 8ba4020e..5396d7a9 100644 --- a/Balances/Zpool.ps1 +++ b/Balances/Zpool.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\Zpool.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Brains/HashCryptos.ps1 b/Brains/HashCryptos.ps1 index 5e359b8c..da21f31c 100644 --- a/Brains/HashCryptos.ps1 +++ b/Brains/HashCryptos.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Brains\MiningDutch.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> using module ..\Includes\Include.psm1 diff --git a/Brains/MiningDutch.ps1 b/Brains/MiningDutch.ps1 index 5b287545..e49f8391 100644 --- a/Brains/MiningDutch.ps1 +++ b/Brains/MiningDutch.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Brains\MiningDutch.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> using module ..\Includes\Include.psm1 diff --git a/Brains/ProHashing.ps1 b/Brains/ProHashing.ps1 index 308b1690..332d3dcd 100644 --- a/Brains/ProHashing.ps1 +++ b/Brains/ProHashing.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Brains\ProHashing.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> using module ..\Includes\Include.psm1 diff --git a/Brains/ZPool.ps1 b/Brains/ZPool.ps1 index 0cee9147..87a2848e 100644 --- a/Brains/ZPool.ps1 +++ b/Brains/ZPool.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Brains\ZPool.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> using module ..\Includes\Include.psm1 diff --git a/Brains/ZergPool.ps1 b/Brains/ZergPool.ps1 index b5dea1ec..677eade0 100644 --- a/Brains/ZergPool.ps1 +++ b/Brains/ZergPool.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Brains\ZergPool.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> using module ..\Includes\Include.psm1 diff --git a/Changelog.txt b/Changelog.txt index 642ab197..1f55062a 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -3,6 +3,44 @@ Known issues: - UG-Miner has issues with new Windows Terminal when the default terminal application is set to 'Let windows decide' or 'Windows Terminal'. -> It is recommended to set it to 'Windows Console Host' + +Changelog UG-Miner 6.3.2 2024/09/09 +=================================== + +Changes: +- Keep miners when paused + +Enhancements: +- Core / Includes.psm1: Function 'Update-DAGdata' can now handle TLS (ProgPowTelestai) data + +Fixes: +- Legacy GUI: Miners table not getting cleared when no miners available + +Improvements: +- Minor code optimizations + +Miner changes: +- TeleMerakiMiner-v1.5.0.ps1 + + +Changelog UG-Miner 6.3.1 2024/09/06 +=================================== + +Enhancements +- Core / Includes.psm1: Function 'Update-DAGdata' can now handle BLOCX (SCCpow) data +- Legacy GUI / Miners: Do not update tables when data is selected +- Legacy GUI / Switching log: Do not reset check boxes on each data update + +Improvements: +- Minor code optimizations + +Miner fixes + updates: +- BzMiner API: Fix incomplete samples +- Rigel-v1.18.2 +- SRBMinerMulti-v2.6.3 +- XmRig-v6.22.0.3: Faster benchmarking for some CPU algorithms (no more benchmarking all algorithms before mining) + + Changelog UG-Miner 6.3.0 2024/09/01 =================================== @@ -56,13 +94,13 @@ Miner updates: Changelog UG-Miner 6.2.27 2024/08/18 ==================================== -Enhancements: -- Core: Remove obsolete code & minor code optimizations - Fixes: - Correct typo in UG-Miner.ps1 - APIserver.psm1: Do not print full path in log +Improvements: +- Core: Remove obsolete code & minor code optimizations + Changelog UG-Miner 6.2.26 2024/08/16 ==================================== @@ -72,22 +110,22 @@ Changes: - Renamed configuration item 'MainCurrency' to 'FIATcurrency'. Configuration file will get updated automatically during update. - Web GUI / Configuration editor: Change pool selection logic. Can only select pool when prerequisites are met -Enhancements: -- Core: Remove obsolete code & minor code optimizations - Fixes: - Core: 'Error in file 'Includes\Core.ps1' line 291' (Regression from 6.2.25) +Improvements: +- Core: Remove obsolete code & minor code optimizations + Changelog UG-Miner 6.2.25 2024/08/13 ==================================== -Enhancements: -- Core: Remove obsolete code & minor code optimizations - Fixed: - Pool 'Miningdutch': Payout threshold 1000x too low +Improvements: +- Core: Remove obsolete code & minor code optimizations + Changelog UG-Miner 6.2.24 2024/08/10 ==================================== @@ -97,6 +135,8 @@ Changes: Enhancements: - Core: Check if there is already another instance running and show error message + +Improvements: - Core: Remove obsolete code & minor code optimizations Miner changes: @@ -110,14 +150,14 @@ Changelog UG-Miner 6.2.23 2024/08/04 Changes: - Rework 'README.md' -Enhancements: -- Core: Remove obsolete code & minor code optimizations -- Miners: Minor code optimizations when reading miner objects - Fixes: - Core: Miners not getting stopped when idle detection stops mining - Web GUI: Watchdog timer table not getting cleared when no watchdog timers exist +Improvements: +- Core: Remove obsolete code & minor code optimizations +- Miners: Minor code optimizations when reading miner objects + Miner changes: - SRBMinerMulti-v2.6.0 @@ -125,7 +165,7 @@ Miner changes: Changelog UG-Miner 6.2.22 2024/08/01 ==================================== -Enhancements: +Improvements: - Core: Remove obsolete code & minor code optimizations Miner changes: @@ -141,11 +181,13 @@ Changes: Enhancements: - API: Added url for '/cpufeatures' -- Core: Minor code optimizations Fixes: - Core: Not starting benchmarking when triggered through GUI (regression from 6.2.20) +Improvements: +- Core: Minor code optimizations + Miner changes: - ClaymoreNeoscrypt-v1.2 (fix download link) - Kudaraidee-v1.2.0a (fix download link) @@ -162,6 +204,8 @@ Changes: Enhancements: - API: Added urls for '/miners/missingbinary', '/miners/missingfirewallrule' & '/miners/missingpprerequisite' - Core: Mark miner as 'unavailable' when firewall rule is missing + +Improvements: - Core: Minor code optimizations Miner updates: @@ -191,9 +235,6 @@ Miner updates: Changelog UG-Miner 6.2.18 2024/07/19 ==================================== -Enhancements: -- Core: Minor code optimizations - Fixes: - Web GUI / Configuration editor: Incorrect ProHashing registration link - Web GUI / Switching log: Incorrect background color for stopped miners @@ -201,6 +242,7 @@ Fixes: Improvements: - Core: No more unnecessary queries for DAG data when switching to donation run - Core: Optimize number of queries for rates update +- Core: Minor code optimizations Changelog UG-Miner 6.2.17 2024/07/13 @@ -212,17 +254,17 @@ Changes: Enhancements: - Core: Add support for algorithms with static DAG size - Core: Faster startup -- Core / Includes.psm1: Minor code optimizations Fixes: - Core: Error when request to pen firewall ports is declined ('Error in file 'Includes\Core.ps1' line 1001 detected. Restarting core...') - Core: Watchdog timeout message incorrect (regression from 6.2.5) - Core / Includes.psm1: Function 'Get-DAGdata' returning incorrect DAG size for IRON - CPU Miners broken (regression from 6.2.16) - -Fixes: - HiveOn balances querying for unsupported BTC balance +Improvements: +- Core / Includes.psm1: Minor code optimizations + Miner changes: - ClaymoreDualME-v2.7.ps1 (removed - would only work with Nvidia drivers older than 20.12.1) - OneZeroMiner-v1.3.6 @@ -248,7 +290,6 @@ Changelog UG-Miner 6.2.15 2024/07/07 ==================================== Enhancements: -- Core: Minor code optimizations - Legacy GUI: Always select full table rows - Miners: Remove miners that are incompatible with RTX306012GB @@ -257,6 +298,9 @@ Fixes: - Legacy GUI: Incorrect watchdog count message when no corresponding pool watchdog exists - Web GUI / 'Earnings and Balances': Zergpool balances wallet link incorrect +Improvements: +- Core: Minor code optimizations + Miner updatwes: - OneZeroMiner-v1.3.7 @@ -275,14 +319,14 @@ Miner changes: Changelog UG-Miner 6.2.13 2024/06/30 ==================================== -Enhancements: -- Core: Minor code optimizations - Fixes - Core / Includes.psm1: Functions 'Show-Console' & 'Hide-Console' broken (regression from 6.2.10) - Core / Includes.psm1: Function 'Write-Config' temporarily removed 'PoolsConfig' property - Legacy GUI: 'Miners' tab sort order incorrect +Improvements: +- Core: Minor code optimizations + Miner updates: - BzMiner-v21.3.0 - ZealotEnemy-v2.6.2 (removed - would only work with Nvidia drivers older than 445.*) @@ -291,20 +335,17 @@ Miner updates: Changelog UG-Miner 6.2.12 2024/06/26 ==================================== -Enhancements: -- Core: Minor code optimizations - Fixes: - TeamBlackMiner-v2.25: Invalid command line for dual mining with EvrProgPow - Various miners: Not creating all possible miner objects (no available devices enumerated) +Improvements: +- Core: Minor code optimizations Changelog UG-Miner 6.2.11 2024/06/23 ==================================== Enhancements: -- Core: Minor code optimizations -- Core: Faster watchdog processing, only one watchdog reason per pool or miner - Core / Includes.psm1: 'Get-Device' Ignore devices with negative PCIbus Fixes: @@ -312,6 +353,10 @@ Fixes: - Legacy GUI: Not saving windows size and position (regression from 6.2.9) - ZergPool balances tracker not working +Improvements: +- Core: Minor code optimizations +- Core: Faster watchdog processing, only one watchdog reason per pool or miner + Miner updates: - RplantCpu-v5.0.40 @@ -338,7 +383,6 @@ Changelog UG-Miner 6.2.9 2024/06/13 Enhancements: - API: Add '/pools/expired' data -- Core: Minor code optimizations when reading miner objects - Miners: Comment out obsolete code for better speed Fixes: @@ -346,6 +390,9 @@ Fixes: - TTMiner-v2024.2.0: Incorrect command line (double -p) - Web GUI: Right mouse button context actions for miners broken +Improvements: +- Core: Minor code optimizations when reading miner objects + Miner changes: - lolMiner-v1.88 - MeowPowMiner-v2.0.0 @@ -786,7 +833,6 @@ Changelog UG-Miner 6.0.1 2024/01/05 Changes: - Fix typos - Minimize memory leak -- Minor code optimizations Enhancements: - Includes.psm1 / Update-DAGdata: Do not query 'evr.cryptoscope.io' unless needed @@ -796,6 +842,9 @@ Fixes: - Brains: No pool data for 'ZergPoolCoins24hr' - Core: 'UnrealPoolPriceFactor' not excluding NiceHash & MiningPoolHub (their prices are always right) +Improvements: +- Minor code optimizations + Miner changes: - BzMiner-v19.2.1 @@ -807,4 +856,4 @@ Web GUI: Changelog UG-Miner 6.0.0 2024/01/01 =================================== -Initial release. \ No newline at end of file +Initial 6.x.x release. \ No newline at end of file diff --git a/Data/CoinNames.json b/Data/CoinNames.json index ba6196e7..a1e17b7a 100644 --- a/Data/CoinNames.json +++ b/Data/CoinNames.json @@ -190,6 +190,7 @@ "TAFT": "Cointaft", "TAJ": "Taj", "TDC": "Tide", + "TLS": "Telestai", "TRC": "Terra", "TZC": "Trezar", "UFO": "Ufo", diff --git a/Data/CurrencyAlgorithm.json b/Data/CurrencyAlgorithm.json index e402d043..5840105e 100644 --- a/Data/CurrencyAlgorithm.json +++ b/Data/CurrencyAlgorithm.json @@ -346,6 +346,7 @@ "TDC": "YespowerTide", "TIT": "SHA256", "TLR": "Lyra2Z", + "TLS": "ProgPowTelestai", "TMC": "Scrypt", "TNET": "Blake2b", "TRC": "SHA256", diff --git a/Data/DagData.json b/Data/DagData.json index 88590e84..2b13d35b 100644 --- a/Data/DagData.json +++ b/Data/DagData.json @@ -1,104 +1,154 @@ { "Algorithm": { "Autolykos2": { - "BlockHeight": 1346074, + "BlockHeight": 1348322, "CoinName": [ + "Ergo" + ], + "Currency": [ "ERG" ], "DAGsize": 4324915245, - "Epoch": 909 + "Epoch": 911 }, "EtcHash": { - "BlockHeight": 20632761, + "BlockHeight": 20653065, "CoinName": [ + "EthereumClassic" + ], + "Currency": [ "ETC" ], - "DAGsize": 3967809152, - "Epoch": 345 + "DAGsize": 3976200064, + "Epoch": 346 }, "Ethash": { - "BlockHeight": 20217801, + "BlockHeight": 20238354, "CoinName": [ + "EthereumPow" + ], + "Currency": [ "ETHW" ], - "DAGsize": 6736052096, - "Epoch": 675 + "DAGsize": 6744437632, + "Epoch": 676 }, "EthashB3": { - "BlockHeight": 4095782, + "BlockHeight": 4125975, "CoinName": [ + "Hypra" + ], + "Currency": [ "HYP" ], - "DAGsize": 2231367808, - "Epoch": 138 + "DAGsize": 2239758208, + "Epoch": 139 }, "EvrProgPow": { - "BlockHeight": 967536, + "BlockHeight": 972002, "CoinName": [ + "Evrmore" + ], + "Currency": [ "EVR" ], - "DAGsize": 3909087872, - "Epoch": 82 + "DAGsize": 3917478784, + "Epoch": 83 }, "FiroPow": { - "BlockHeight": 952867, + "BlockHeight": 954716, "CoinName": [ + "Firo" + ], + "Currency": [ "FIRO" ], - "DAGsize": 7230975104, - "Epoch": 734 + "DAGsize": 7247755904, + "Epoch": 736 }, "FishHash": { - "BlockHeight": 729443, + "BlockHeight": 733975, "CoinName": [ + "Ironfish" + ], + "Currency": [ "IRON" ], "DAGsize": 4831838208, "Epoch": 448 }, "KawPow": { - "BlockHeight": 3485984, + "BlockHeight": 3490471, "CoinName": [ + "Raven" + ], + "Currency": [ "RVN" ], - "DAGsize": 4982831488, - "Epoch": 466 + "DAGsize": 4991221376, + "Epoch": 467 }, "MeowPow": { "BlockHeight": 971453, "CoinName": [ + "Meow" + ], + "Currency": [ "MEWC" ], "DAGsize": 5469367936, "Epoch": 131 }, "Octopus": { - "BlockHeight": 104054088, + "BlockHeight": 104295348, "CoinName": [ + "Conflux" + ], + "Currency": [ "CFX" ], "DAGsize": 7650409216, "Epoch": 200 }, "ProgPowSero": { - "BlockHeight": 13380737, + "BlockHeight": 13401508, "CoinName": [ + "Sero" + ], + "Currency": [ "SERO" ], "DAGsize": 4831835776, "Epoch": 448 }, + "ProgPowTelestai": { + "BlockHeight": 53124, + "CoinName": [ + "Telestai" + ], + "Currency": [ + "TLS" + ], + "DAGsize": 1124070016, + "Epoch": 6 + }, "ProgPowZ": { - "BlockHeight": 2797873, + "BlockHeight": 2802349, "CoinName": [ + "Zano" + ], + "Currency": [ "ZANO" ], "DAGsize": 1870656896, "Epoch": 95 }, "SCCpow": { - "BlockHeight": 981993, + "BlockHeight": 984284, "CoinName": [ + "StakeCubeCoin" + ], + "Currency": [ "SCC" ], "DAGsize": 3632265856, @@ -106,7 +156,8 @@ }, "UbqHash": { "BlockHeight": 5517628, - "CoinName": [ + "CoinName": [], + "Currency": [ "UBQ" ], "DAGsize": 2625631616, @@ -123,36 +174,36 @@ }, "Currency": { "*": { - "BlockHeight": 104054088, - "CoinName": "*", + "BlockHeight": 104295348, + "Currency": "*", "DAGsize": 7650409216, - "Epoch": 909 + "Epoch": 911 }, "AIDP": { "Algorithm": "KawPow", - "BlockHeight": 190027, + "BlockHeight": 194511, "CoinName": "AiDepin", "DAGsize": 1300234112, - "Date": "2024-09-06T05:41:48.6973504Z", + "Date": "2024-09-09T09:08:37.174842Z", "Epoch": 27, "Url": "https://whattomine.com/coins.json" }, "AIPG": { "Algorithm": "KawPow", - "BlockHeight": 388924, + "BlockHeight": 393431, "CoinName": "Aipowergrid", - "DAGsize": 1518337664, - "Date": "2024-09-06T05:41:48.7293277Z", - "Epoch": 53, + "DAGsize": 1526726528, + "Date": "2024-09-09T09:08:37.2038471Z", + "Epoch": 54, "Url": "https://whattomine.com/coins.json" }, "AITT": { "Algorithm": "KawPow", - "BlockHeight": 1073187, + "BlockHeight": 1091170, "CoinName": "AittCoin", - "DAGsize": 2290086272, - "Date": "2024-09-06T05:41:48.7376425Z", - "Epoch": 145, + "DAGsize": 2306867072, + "Date": "2024-09-09T09:08:37.2106Z", + "Epoch": 147, "Url": "https://whattomine.com/coins.json" }, "AKA": { @@ -160,7 +211,7 @@ "BlockHeight": 11735607, "CoinName": "", "DAGsize": 4370458496, - "Date": "2024-09-06T05:41:48.8787668Z", + "Date": "2024-09-09T09:08:37.4429227Z", "Epoch": 393, "Url": "https://minerstat.com/dag-size-calculator" }, @@ -175,11 +226,11 @@ }, "ANOK": { "Algorithm": "KawPow", - "BlockHeight": 221397, + "BlockHeight": 225390, "CoinName": "Anokas", - "DAGsize": 1333787776, - "Date": "2024-09-06T05:41:48.575364Z", - "Epoch": 31, + "DAGsize": 1342176128, + "Date": "2024-09-09T09:08:37.1676929Z", + "Epoch": 32, "Url": "https://whattomine.com/coins.json" }, "AVS": { @@ -193,37 +244,37 @@ }, "BLOCX": { "Algorithm": "Autolykos2", - "BlockHeight": 287999, + "BlockHeight": 292313, "CoinName": "Blocx", "DAGsize": 2147483648, - "Date": "2024-09-06T05:41:50.4716956Z", + "Date": "2024-09-09T09:08:39.1224946Z", "Epoch": 0, "Url": "https://api-explorer.blocxscan.com/api/getblockcount" }, "BTN": { "Algorithm": "Ethash", - "BlockHeight": 2819364, + "BlockHeight": 2840378, "CoinName": "BitnetBtn", - "DAGsize": 1870656896, - "Date": "2024-09-06T05:41:48.7640476Z", - "Epoch": 95, + "DAGsize": 1879048064, + "Date": "2024-09-09T09:08:37.2346526Z", + "Epoch": 96, "Url": "https://whattomine.com/coins.json" }, "CAU": { "Algorithm": "Ethash", - "BlockHeight": 5169884, + "BlockHeight": 5212995, "CoinName": "", - "DAGsize": 2533359232, - "Date": "2024-09-06T05:41:48.8969138Z", - "Epoch": 174, + "DAGsize": 2541743488, + "Date": "2024-09-09T09:08:37.4576536Z", + "Epoch": 175, "Url": "https://minerstat.com/dag-size-calculator" }, "CFX": { "Algorithm": "Octopus", - "BlockHeight": 104054088, + "BlockHeight": 104295348, "CoinName": "Conflux", "DAGsize": 7650409216, - "Date": "2024-09-06T05:41:50.1318861Z", + "Date": "2024-09-09T09:08:38.6549038Z", "Epoch": 200, "Url": "https://prohashing.com/api/v1/currencies" }, @@ -238,11 +289,11 @@ }, "CLORE": { "Algorithm": "KawPow", - "BlockHeight": 910842, + "BlockHeight": 915333, "CoinName": "Clore", - "DAGsize": 2105539712, - "Date": "2024-09-06T05:41:48.708442Z", - "Epoch": 123, + "DAGsize": 2113928576, + "Date": "2024-09-09T09:08:37.1773401Z", + "Epoch": 124, "Url": "https://whattomine.com/coins.json" }, "CMS": { @@ -256,37 +307,37 @@ }, "DINT": { "Algorithm": "KawPow", - "BlockHeight": 391389, + "BlockHeight": 395702, "CoinName": "Dinartether", "DAGsize": 1526726528, - "Date": "2024-09-06T05:41:48.9458965Z", + "Date": "2024-09-09T09:08:37.469751Z", "Epoch": 54, "Url": "https://minerstat.com/dag-size-calculator" }, "DOGETHER": { "Algorithm": "Ethash", - "BlockHeight": 1289335, + "BlockHeight": 1304421, "CoinName": "Dogether", - "DAGsize": 1442839168, - "Date": "2024-09-06T05:41:48.7552807Z", - "Epoch": 44, + "DAGsize": 1451229056, + "Date": "2024-09-09T09:08:37.2361612Z", + "Epoch": 45, "Url": "https://whattomine.com/coins.json" }, "EGAZ": { "Algorithm": "EtcHash", - "BlockHeight": 5845905, + "BlockHeight": 5867154, "CoinName": "Etica", - "DAGsize": 2717907328, - "Date": "2024-09-06T05:41:48.7508232Z", - "Epoch": 196, + "DAGsize": 2726293376, + "Date": "2024-09-09T09:08:37.2297158Z", + "Epoch": 197, "Url": "https://whattomine.com/coins.json" }, "EGEM": { "Algorithm": "Ethash", - "BlockHeight": 16352389, + "BlockHeight": 16374676, "CoinName": "EtherGem", "DAGsize": 5662310272, - "Date": "2024-09-06T05:41:48.7325244Z", + "Date": "2024-09-09T09:08:37.2378386Z", "Epoch": 547, "Url": "https://whattomine.com/coins.json" }, @@ -301,11 +352,11 @@ }, "ERG": { "Algorithm": "Autolykos2", - "BlockHeight": 1346074, + "BlockHeight": 1348322, "CoinName": "Ergo", "DAGsize": 4324915245, - "Date": "2024-09-06T05:41:50.1244493Z", - "Epoch": 909, + "Date": "2024-09-09T09:08:38.6505666Z", + "Epoch": 911, "Url": "https://prohashing.com/api/v1/currencies" }, "ESN": { @@ -313,17 +364,17 @@ "BlockHeight": 6408009, "CoinName": "EtherSocial", "DAGsize": 2877286784, - "Date": "2024-09-06T05:41:48.891901Z", + "Date": "2024-09-09T09:08:37.4494186Z", "Epoch": 215, "Url": "https://minerstat.com/dag-size-calculator" }, "ETC": { "Algorithm": "EtcHash", - "BlockHeight": 20632761, + "BlockHeight": 20653065, "CoinName": "EthereumClassic", - "DAGsize": 3967809152, - "Date": "2024-09-06T05:41:50.1336161Z", - "Epoch": 345, + "DAGsize": 3976200064, + "Date": "2024-09-09T09:08:38.6581056Z", + "Epoch": 346, "Url": "https://prohashing.com/api/v1/currencies" }, "ETHF": { @@ -346,11 +397,11 @@ }, "ETHW": { "Algorithm": "Ethash", - "BlockHeight": 20217801, + "BlockHeight": 20238354, "CoinName": "EthereumPow", - "DAGsize": 6736052096, - "Date": "2024-09-06T05:41:50.1253363Z", - "Epoch": 675, + "DAGsize": 6744437632, + "Date": "2024-09-09T09:08:38.652185Z", + "Epoch": 676, "Url": "https://prohashing.com/api/v1/currencies" }, "ETNT": { @@ -364,20 +415,20 @@ }, "ETP": { "Algorithm": "Ethash", - "BlockHeight": 9934729, + "BlockHeight": 9947323, "CoinName": "", "DAGsize": 3867147904, - "Date": "2024-09-06T05:41:48.8807106Z", + "Date": "2024-09-09T09:08:37.4446214Z", "Epoch": 333, "Url": "https://minerstat.com/dag-size-calculator" }, "EVR": { "Algorithm": "EvrProgPow", - "BlockHeight": 967536, + "BlockHeight": 972002, "CoinName": "Evrmore", - "DAGsize": 3909087872, - "Date": "2024-09-06T05:41:50.6317224Z", - "Epoch": 82, + "DAGsize": 3917478784, + "Date": "2024-09-09T09:08:39.3608337Z", + "Epoch": 83, "Url": "https://evr.cryptoscope.io/api/getblockcount" }, "EXP": { @@ -391,11 +442,11 @@ }, "FIRO": { "Algorithm": "FiroPow", - "BlockHeight": 952867, + "BlockHeight": 954716, "CoinName": "Firo", - "DAGsize": 7230975104, - "Date": "2024-09-06T05:41:48.7059181Z", - "Epoch": 734, + "DAGsize": 7247755904, + "Date": "2024-09-09T09:08:37.1973912Z", + "Epoch": 736, "Url": "https://whattomine.com/coins.json" }, "FLORA": { @@ -403,17 +454,17 @@ "BlockHeight": 789635, "CoinName": "", "DAGsize": 1308619904, - "Date": "2024-09-06T05:41:48.9587404Z", + "Date": "2024-09-09T09:08:37.4853757Z", "Epoch": 28, "Url": "https://minerstat.com/dag-size-calculator" }, "FREN": { "Algorithm": "KawPow", - "BlockHeight": 1392500, + "BlockHeight": 1401499, "CoinName": "Fren", - "DAGsize": 2642407552, - "Date": "2024-09-06T05:41:48.735113Z", - "Epoch": 187, + "DAGsize": 2650796416, + "Date": "2024-09-09T09:08:37.2057543Z", + "Epoch": 188, "Url": "https://whattomine.com/coins.json" }, "GPN": { @@ -436,38 +487,38 @@ }, "HYP": { "Algorithm": "EthashB3", - "BlockHeight": 4095782, + "BlockHeight": 4125975, "CoinName": "Hypra", - "DAGsize": 2231367808, - "Date": "2024-09-06T05:41:48.7466296Z", - "Epoch": 138, + "DAGsize": 2239758208, + "Date": "2024-09-09T09:08:37.2089725Z", + "Epoch": 139, "Url": "https://whattomine.com/coins.json" }, "IRON": { "Algorithm": "FishHash", - "BlockHeight": 729443, + "BlockHeight": 733975, "CoinName": "Ironfish", "DAGsize": 4831838208, - "Date": "2024-09-06T05:41:48.7219078Z", + "Date": "2024-09-09T09:08:37.1814826Z", "Epoch": 448, "Url": "https://whattomine.com/coins.json" }, "KIIRO": { "Algorithm": "FiroPow", - "BlockHeight": 237735, + "BlockHeight": 239617, "CoinName": "KiiroCoin", - "DAGsize": 2617240448, - "Date": "2024-09-06T05:41:48.7174617Z", - "Epoch": 184, + "DAGsize": 2634022016, + "Date": "2024-09-09T09:08:37.2012747Z", + "Epoch": 186, "Url": "https://whattomine.com/coins.json" }, "LRS": { "Algorithm": "Ethash", - "BlockHeight": 1589545, + "BlockHeight": 1610406, "CoinName": "Larissa", - "DAGsize": 1526726528, - "Date": "2024-09-06T05:41:48.7614247Z", - "Epoch": 54, + "DAGsize": 1535114624, + "Date": "2024-09-09T09:08:37.2331199Z", + "Epoch": 55, "Url": "https://whattomine.com/coins.json" }, "META": { @@ -490,37 +541,37 @@ }, "MOAC": { "Algorithm": "Ethash", - "BlockHeight": 14215352, + "BlockHeight": 14231090, "CoinName": "", - "DAGsize": 5058329728, - "Date": "2024-09-06T05:41:48.876046Z", - "Epoch": 475, + "DAGsize": 5066717056, + "Date": "2024-09-09T09:08:37.4403104Z", + "Epoch": 476, "Url": "https://minerstat.com/dag-size-calculator" }, "NEOX": { "Algorithm": "KawPow", - "BlockHeight": 1204049, + "BlockHeight": 1208531, "CoinName": "Neoxa", - "DAGsize": 2432695424, - "Date": "2024-09-06T05:41:48.699174Z", - "Epoch": 162, + "DAGsize": 2441084288, + "Date": "2024-09-09T09:08:37.1791087Z", + "Epoch": 163, "Url": "https://whattomine.com/coins.json" }, "NILU": { "Algorithm": "Ethash", - "BlockHeight": 6244789, + "BlockHeight": 6244798, "CoinName": "", "DAGsize": 2835349376, - "Date": "2024-09-06T05:41:48.8932539Z", + "Date": "2024-09-09T09:08:37.4507895Z", "Epoch": 210, "Url": "https://minerstat.com/dag-size-calculator" }, "NIR": { "Algorithm": "ProgPowZ", - "BlockHeight": 670299, + "BlockHeight": 679379, "CoinName": "Nirmata", "DAGsize": 1275067264, - "Date": "2024-09-06T05:41:48.7031151Z", + "Date": "2024-09-09T09:08:37.1937781Z", "Epoch": 24, "Url": "https://whattomine.com/coins.json" }, @@ -529,26 +580,26 @@ "BlockHeight": 8848535, "CoinName": "", "DAGsize": 3556763264, - "Date": "2024-09-06T05:41:48.8893735Z", + "Date": "2024-09-09T09:08:37.4471028Z", "Epoch": 296, "Url": "https://minerstat.com/dag-size-calculator" }, "OCTA": { "Algorithm": "Ethash", - "BlockHeight": 5407821, + "BlockHeight": 5428710, "CoinName": "Octaspace", "DAGsize": 2600467328, - "Date": "2024-09-06T05:41:48.7598708Z", + "Date": "2024-09-09T09:08:37.2315443Z", "Epoch": 182, "Url": "https://whattomine.com/coins.json" }, "PAPRY": { "Algorithm": "KawPow", - "BlockHeight": 808117, + "BlockHeight": 812613, "CoinName": "Paprika", - "DAGsize": 1988093056, - "Date": "2024-09-06T05:41:48.930494Z", - "Epoch": 109, + "DAGsize": 1996487552, + "Date": "2024-09-09T09:08:37.4670885Z", + "Epoch": 110, "Url": "https://minerstat.com/dag-size-calculator" }, "PGC": { @@ -571,11 +622,11 @@ }, "QKC": { "Algorithm": "Ethash", - "BlockHeight": 17233855, + "BlockHeight": 17261639, "CoinName": "Quarkchain", - "DAGsize": 5905576832, - "Date": "2024-09-06T05:41:48.7535424Z", - "Epoch": 576, + "DAGsize": 5913966976, + "Date": "2024-09-09T09:08:37.2399882Z", + "Epoch": 577, "Url": "https://whattomine.com/coins.json" }, "REDEV2": { @@ -598,37 +649,37 @@ }, "RVN": { "Algorithm": "KawPow", - "BlockHeight": 3485984, + "BlockHeight": 3490471, "CoinName": "Raven", - "DAGsize": 4982831488, - "Date": "2024-09-06T05:41:50.1304314Z", - "Epoch": 466, + "DAGsize": 4991221376, + "Date": "2024-09-09T09:08:38.6533983Z", + "Epoch": 467, "Url": "https://prohashing.com/api/v1/currencies" }, "SATOX": { "Algorithm": "KawPow", - "BlockHeight": 859331, + "BlockHeight": 863804, "CoinName": "Sato", - "DAGsize": 2046819968, - "Date": "2024-09-06T05:41:48.7272844Z", - "Epoch": 116, + "DAGsize": 2055208576, + "Date": "2024-09-09T09:08:37.1955167Z", + "Epoch": 117, "Url": "https://whattomine.com/coins.json" }, "SCC": { "Algorithm": "SCCpow", - "BlockHeight": 981993, + "BlockHeight": 984284, "CoinName": "StakeCubeCoin", "DAGsize": 3632265856, - "Date": "2024-09-06T05:41:50.3191608Z", + "Date": "2024-09-09T09:08:38.9725083Z", "Epoch": 305, "Url": "https://scc.ccore.online/api/getblockcount" }, "SERO": { "Algorithm": "ProgPowSero", - "BlockHeight": 13380737, + "BlockHeight": 13401508, "CoinName": "Sero", "DAGsize": 4831835776, - "Date": "2024-09-06T05:41:48.5667143Z", + "Date": "2024-09-09T09:08:37.171033Z", "Epoch": 448, "Url": "https://whattomine.com/coins.json" }, @@ -641,12 +692,21 @@ "Epoch": 3, "Url": "https://zergpool.com/api/currencies" }, + "TLS": { + "Algorithm": "ProgPowTelestai", + "BlockHeight": 53124, + "CoinName": "Telestai", + "DAGsize": 1124070016, + "Date": "2024-09-09T09:08:38.8138288Z", + "Epoch": 6, + "Url": "https://telestai.cryptoscope.io/api/getblockcount/" + }, "UBQ": { "Algorithm": "UbqHash", "BlockHeight": 5517628, "CoinName": "", "DAGsize": 2625631616, - "Date": "2024-09-06T05:41:48.8954425Z", + "Date": "2024-09-09T09:08:37.4528073Z", "Epoch": 185, "Url": "https://minerstat.com/dag-size-calculator" }, @@ -661,11 +721,11 @@ }, "XNA": { "Algorithm": "KawPow", - "BlockHeight": 725121, + "BlockHeight": 729619, "CoinName": "Neurai", - "DAGsize": 1895825024, - "Date": "2024-09-06T05:41:48.7011591Z", - "Epoch": 98, + "DAGsize": 1904212096, + "Date": "2024-09-09T09:08:37.173071Z", + "Epoch": 99, "Url": "https://whattomine.com/coins.json" }, "XPB": { @@ -679,22 +739,23 @@ }, "ZANO": { "Algorithm": "ProgPowZ", - "BlockHeight": 2797873, + "BlockHeight": 2802349, "CoinName": "Zano", "DAGsize": 1870656896, - "Date": "2024-09-06T05:41:48.5639623Z", + "Date": "2024-09-09T09:08:37.1599061Z", "Epoch": 95, "Url": "https://whattomine.com/coins.json" } }, "Updated": { - "https://api-explorer.blocxscan.com/api/getblockcount": "2024-09-06T05:41:50.4720868Z", - "https://evr.cryptoscope.io/api/getblockcount": "2024-09-06T05:41:50.6320007Z", + "https://api-explorer.blocxscan.com/api/getblockcount": "2024-09-09T09:08:39.1236641Z", + "https://evr.cryptoscope.io/api/getblockcount": "2024-09-09T09:08:39.3611264Z", "https://mewc.cryptoscope.io/api/getblockcount": "2024-07-14T13:29:49.1181315Z", - "https://minerstat.com/dag-size-calculator": "2024-09-06T05:41:48.9868367Z", - "https://prohashing.com/api/v1/currencies": "2024-09-06T05:41:50.1338811Z", - "https://scc.ccore.online/api/getblockcount": "2024-09-06T05:41:50.3194646Z", - "https://whattomine.com/coins.json": "2024-09-06T05:41:48.7674009Z", + "https://minerstat.com/dag-size-calculator": "2024-09-09T09:08:37.4995196Z", + "https://prohashing.com/api/v1/currencies": "2024-09-09T09:08:38.658358Z", + "https://scc.ccore.online/api/getblockcount": "2024-09-09T09:08:38.9729165Z", + "https://telestai.cryptoscope.io/api/getblockcount/": "2024-09-09T09:08:38.8140898Z", + "https://whattomine.com/coins.json": "2024-09-09T09:08:37.243245Z", "https://www.coinexplorer.net/api/v1/SCC/getblockcount": "2024-09-02T06:05:35.3039058Z", "https://zergpool.com/api/currencies": "2024-08-26T19:03:15.0996499Z" } diff --git a/Includes/APIServer.psm1 b/Includes/APIServer.psm1 index 205a0af0..7fcb5348 100644 --- a/Includes/APIServer.psm1 +++ b/Includes/APIServer.psm1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\APIServer.psm1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Function Start-APIServer { diff --git a/Includes/BalancesTracker.ps1 b/Includes/BalancesTracker.ps1 index a3afc2ad..20949672 100644 --- a/Includes/BalancesTracker.ps1 +++ b/Includes/BalancesTracker.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\BalancesTracker.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> using module .\Include.psm1 diff --git a/Includes/Core.ps1 b/Includes/Core.ps1 index 2824dcd0..f3752548 100644 --- a/Includes/Core.ps1 +++ b/Includes/Core.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: Core.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> using module .\Include.psm1 @@ -52,7 +52,7 @@ Try { $Variables.RestartCycle = $true #Stop all miners - ForEach ($Miner in $Variables.Miners.Where({ $_.Status -ne [MinerStatus]::Idle })) { + ForEach ($Miner in $Variables.Miners.Where({ [MinerStatus]::Running, [MinerStatus]::DryRun -contains $_.Status })) { $Miner.SetStatus([MinerStatus]::Idle) $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) } @@ -210,11 +210,11 @@ Try { # Core suspended with P in MainLoop While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 } - If ($Variables.ConfigReadTimestamp -lt $Variables.Timer -and $Variables.Miners -and $Variables.Pools -and ($Variables.PoolDataCollectedTimeStamp.AddSeconds([Math]::Floor($Config.Interval)) -ge [DateTime]::Now.ToUniversalTime() -and (Compare-Object @($Config.ExtraCurrencies | Select-Object) @($Variables.AllCurrencies | Select-Object)).Where({ $_.SideIndicator -ne "<=" }))) { + If ($Variables.ConfigReadTimestamp -lt $Variables.Timer -and $Variables.Miners -and $Variables.Pools -and ($Variables.PoolDataCollectedTimeStamp.AddSeconds($Config.Interval) -ge [DateTime]::Now.ToUniversalTime() -and (Compare-Object @($Config.ExtraCurrencies | Select-Object) @($Variables.AllCurrencies | Select-Object)).Where({ $_.SideIndicator -ne "<=" }))) { # Skip some stuff when previous cycle was shorter than one cycle duration Write-Message -Level Info "Using $($Variables.Pools.Count) pool$(If ($Variables.Pools.Count -ne 1) { "s" }) from previous cycle$(If ($Variables.Pools.Where({ -not $_.Available })) { ", filtered out $(@($Variables.Pools.Where({ -not $_.Available })).Count) pool$(If (@($Variables.Pools.Where({ -not $_.Available })).Count -ne 1) { "s" })" }). $(@($Variables.Pools.Where({ $_.Available })).Count) available pool$(If (@($Variables.Pools.Where({ $_.Available })).Count -ne 1) { "s" }) remain$(If (@($Variables.Pools.Where({ $_.Available })).Count -eq 1) { "s" })." ($Variables.Pools.Reasons.Where({ $_ -match "Pool suspended by watchdog .+" }) | Sort-Object -Unique).ForEach({ Write-Message -Level Warn $_ }) - $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime().AddSeconds([Math]::Floor($Config.Interval)) + $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime().AddSeconds($Config.Interval) } Else { $Variables.BeginCycleTime = $Variables.Timer @@ -322,9 +322,6 @@ Try { Catch {} Remove-Variable Keys, StatFiles -ErrorAction Ignore - # Load currency exchange rates - If ($Config.BalancesTrackerPollInterval -le 0 -and ($Variables.RatesUpdated -lt [DateTime]::Now.ToUniversalTime().AddMinutes( - (3, ($Config.BalancesTrackerPollInterval, 15 | Measure-Object -Minimum).Minimum | Measure-Object -Maximum).Maximum))) { [Void](Get-Rate) } - # Get DAG data [Void](Update-DAGdata) @@ -941,7 +938,7 @@ Try { If ($MissingFirewallRules = (Compare-Object @(Get-NetFirewallApplicationFilter | Select-Object -ExpandProperty Program -Unique) @(($Miners | Select-Object -ExpandProperty Path -Unique).ForEach({ "$PWD\$($_)" })) -PassThru).Where({ $_.SideIndicator -eq "=>" })) { Try { If (-not $Variables.IsLocalAdmin) { Write-Message -Level Info "Initiating request to add $($MissingFirewallRules.Count) inbound firewall rule$(If ($MissingFirewallRules.Count -ne 1) { "s" })..." } - Start-Process "pwsh" ("-Command Import-Module NetSecurity; ('$($MissingFirewallRules | ConvertTo-Json -Compress)' | ConvertFrom-Json) | ForEach-Object { New-NetFirewallRule -DisplayName (Split-Path `$_ | Split-Path -leaf) -Program `$_ -Description 'Inbound rule added by $($Variables.Branding.ProductLabel) $($Variables.Branding.Version) on $([DateTime]::Now.ToString())' -Group '$($Variables.Branding.ProductLabel)' }" -replace '"', '\"') -Verb runAs + Start-Process "pwsh" ("-Command Write-Host 'Adding $($MissingFirewallRules.Count) inbound firewall rule$(If ($MissingFirewallRules.Count -ne 1) { "s" })...'; Start-Sleep -Seconds 3; Import-Module NetSecurity; ('$($MissingFirewallRules | ConvertTo-Json -Compress)' | ConvertFrom-Json) | ForEach-Object { New-NetFirewallRule -DisplayName (Split-Path `$_ | Split-Path -leaf) -Program `$_ -Description 'Inbound rule added by $($Variables.Branding.ProductLabel) $($Variables.Branding.Version) on $([DateTime]::Now.ToString())' -Group '$($Variables.Branding.ProductLabel)' }" -replace '"', '\"') -Verb runAs Write-Message -Level Info "Added $($MissingFirewallRules.Count) inbound firewall rule$(If ($MissingFirewallRules.Count -ne 1) { "s" }) to Windows Defender Inbound Rules Group '$($Variables.Branding.ProductLabel)'." } Catch { diff --git a/Includes/Dev/CoinNames.ps1 b/Includes/Dev/CoinNames.ps1 new file mode 100644 index 00000000..caaec1fe --- /dev/null +++ b/Includes/Dev/CoinNames.ps1 @@ -0,0 +1,35 @@ +using module c:\Users\Stephan\Desktop\UG-Miner\Includes\Include.psm1 + +Set-Location c:\Users\Stephan\Desktop\UG-Miner\ + +$DB = c:\Users\Stephan\Desktop\UG-Miner\Includes\Dev\CoinsDB.json | ConvertFrom-Json + +$AlgorithmCurrencies = [Ordered]@{ } +$CoinList = [Ordered]@{ } +$CoinDB = [PSCustomObject]@{ } +$CoinDB2 = @{ } +(($Db | Get-Member -MemberType NoteProperty).Name | Sort-Object -Unique).ForEach( + { + $Algorithm = Get-Algorithm $DB.$_.Algo + $Currency = $_ -replace '-.+$' + $CoinName = $DB.$_.Name -replace 'cash$', 'Cash' -replace 'gold$', "Gold" -replace 'coin$', 'Coin' -replace 'token$', 'Token' + $CoinList.$Currency = $CoinName + $Data = [PSCustomObject]@{ + "Algorithm" = $Algorithm + "CoinName" = $CoinName + "Currency" = $Currency + } + $CoinDB | Add-Member $_ $Data + } +) + +ForEach ($Algorithm in (($CoinDB | Get-Member -MemberType NoteProperty).Name).ForEach({ $CoinDB.$_.Algorithms }) | Sort-Object -Unique) { + + $Currencies = ($CoinDB | Get-Member -MemberType NoteProperty).Name.Where({ $CoinDB.$_.Algorithms -match $Algorithm }) + If ($Currencies.Count -eq 1) { + $AlgorithmCurrencies.$Algorithm = $Currencies + } +} + +$CoinList | ConvertTo-Json > c:\Users\Stephan\Desktop\UG-Miner\Includes\CoinNames.json +$AlgorithmCurrencies | ConvertTo-Json > c:\Users\Stephan\Desktop\UG-Miner\Includes\AlgorithmCurrency.json diff --git a/Includes/Dev/DataReader.ps1 b/Includes/Dev/DataReader.ps1 new file mode 100644 index 00000000..b7cf9166 --- /dev/null +++ b/Includes/Dev/DataReader.ps1 @@ -0,0 +1,146 @@ +Add-Type -TypeDefinition @' +using System; +using System.Collections.Generic; +using System.Text; +using System.Management.Automation; +using System.Management.Automation.Runspaces; +namespace InProcess +{ + public class InMemoryJob : System.Management.Automation.Job + { + public InMemoryJob(PowerShell PowerShell, string name) + { + _PowerShell = PowerShell; + SetUpStreams(name); + } + private void SetUpStreams(string name) + { + _PowerShell.Streams.Verbose = this.Verbose; + _PowerShell.Streams.Error = this.Error; + _PowerShell.Streams.Debug = this.Debug; + _PowerShell.Streams.Warning = this.Warning; + _PowerShell.Streams.Information = this.Information; + _PowerShell.Runspace.AvailabilityChanged += new EventHandler(Runspace_AvailabilityChanged); + int id = System.Threading.Interlocked.Add(ref InMemoryJobNumber, 1); + if (!string.IsNullOrEmpty(name)) + { + this.Name = name; + } + else + { + this.Name = "InProcessJob" + id; + } + } + void Runspace_AvailabilityChanged(object sender, RunspaceAvailabilityEventArgs e) + { + if (e.RunspaceAvailability == RunspaceAvailability.Available) + { + this.SetJobState(JobState.Completed); + } + } + PowerShell _PowerShell; + static int InMemoryJobNumber = 0; + public override bool HasMoreData + { + get { + return (Output.Count > 0); + } + } + public override string Location + { + get { return "In Process"; } + } + public override string StatusMessage + { + get { return "A new status message"; } + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (!isDisposed) + { + isDisposed = true; + try + { + if (!IsFinishedState(JobStateInfo.State)) + { + StopJob(); + } + foreach (Job job in ChildJobs) + { + job.Dispose(); + } + } + finally + { + base.Dispose(disposing); + } + } + } + } + private bool isDisposed = false; + internal bool IsFinishedState(JobState state) + { + return (state == JobState.Completed || state == JobState.Failed || state == JobState.Stopped); + } + public override void StopJob() + { + _PowerShell.Stop(); + _PowerShell.EndInvoke(_asyncResult); + SetJobState(JobState.Stopped); + } + public void Start() + { + _asyncResult = _PowerShell.BeginInvoke(null, Output); + SetJobState(JobState.Running); + } + IAsyncResult _asyncResult; + public void WaitJob() + { + _asyncResult.AsyncWaitHandle.WaitOne(); + } + public void WaitJob(TimeSpan timeout) + { + _asyncResult.AsyncWaitHandle.WaitOne(timeout); + } + } +} +'@ + +function Start-JobInProcess { + [CmdletBinding()] + Param + ( + [ScriptBlock] $ScriptBlock, + $ArgumentList, + [String] $Name + ) + + Function Get-JobRepository { + [CmdletBinding()] + Param () + $PScmdlet.JobRepository + } + + Function Add-Job { + [CmdletBinding()] + Param + ( + $Job + ) + $PScmdlet.JobRepository.Add($Job) + } + + $PowerShell = [PowerShell]::Create().AddScript($ScriptBlock) + + if ($ArgumentList) { + $ArgumentList.ForEach({ $PowerShell.AddArgument($_) }) + } + + $MemoryJob = New-Object InProcess.InMemoryJob $PowerShell, $Name + + $MemoryJob.Start() + Add-Job $MemoryJob + $MemoryJob +} diff --git a/Includes/Dev/DevAPI.ps1 b/Includes/Dev/DevAPI.ps1 new file mode 100644 index 00000000..41eb9967 --- /dev/null +++ b/Includes/Dev/DevAPI.ps1 @@ -0,0 +1,964 @@ +$Request = '2022-12-13 22:33:07: http://127.0.0.1:3999/functions/config/set?{"Algorithm"%3A%5B%5D%2C"APILogfile"%3A"Debug%5C%5CAPILog.txt"%2C"APIPort"%3A3999%2C"AutoReboot"%3Atrue%2C"AutoUpdate"%3Atrue%2C"AutoUpdateCheckInterval"%3A1%2C"BackupOnAutoUpdate"%3Atrue%2C"BadShareRatioThreshold"%3A0.05%2C"BalancesKeepAlive"%3Atrue%2C"BalancesShowAverages"%3Afalse%2C"BalancesShowInAllCurrencies"%3Afalse%2C"BalancesShowInFIATcurrency"%3Atrue%2C"BalancesShowSums"%3Afalse%2C"BalancesTrackerExcludePool"%3A%5B"_BlockMasters"%5D%2C"BalancesTrackerLog"%3Afalse%2C"BalancesTrackerPollInterval"%3A10%2C"CalculatePowerCost"%3Atrue%2C"ConfigFileVersion"%3A"4.3.4.6"%2C"CPUMinerProcessPriority"%3A-2%2C"Currency"%3A"CHF"%2C"DecimalsMax"%3A6%2C"Delay"%3A0%2C"DisableDualAlgoMining"%3Afalse%2C"DisableMinerFee"%3Afalse%2C"DisableMinersWithFee"%3Afalse%2C"DisableSingleAlgoMining"%3Afalse%2C"Donation"%3A2%2C"EarningsAdjustmentFactor"%3A0.8%2C"ExcludeDeviceName"%3A%5B"CPU%2300"%5D%2C"ExcludeMinerName"%3A%5B%5D%2C"ExtraCurrencies"%3A%5B"ETH"%2C"USD"%2C"EUR"%2C"NZD"%2C"AUD"%2C"THB"%5D%2C"GPUMinerProcessPriority"%3A-1%2C"IdleDetection"%3Afalse%2C"IdleSec"%3A5%2C"IgnoreMinerFee"%3Afalse%2C"IgnorePoolFee"%3Afalse%2C"IgnorePowerCost"%3Atrue%2C"Interval"%3A30%2C"LogBalanceAPIResponse"%3Afalse%2C"LogToFile"%3A%5B"Info"%2C"Warn"%2C"Error"%2C"Verbose"%2C"Debug"%5D%2C"LogToScreen"%3A%5B"Info"%2C"Warn"%2C"Error"%2C"Verbose"%2C"Debug"%5D%2C"MinAccuracy"%3A0.5%2C"MinDataSample"%3A20%2C"MinDataSampleAlgoMultiplier"%3A{"X16r"%3A3}%2C"MinerSet"%3A2%2C"MinerSwitchingThreshold"%3A2.5%2C"MinerWindowStyle"%3A"minimized"%2C"MinerWindowStyleNormalWhenBenchmarking"%3Atrue%2C"MiningDutchAPIKey"%3A"7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714"%2C"MiningDutchUserName"%3A"UselessGuru"%2C"MiningPoolHubAPIKey"%3A"28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98"%2C"MiningPoolHubUserName"%3A"UselessGuru"%2C"MinInterval"%3A3%2C"MinWorker"%3A0%2C"MonitoringServer"%3A"https%3A%2F%2FUG-Miner.com"%2C"MonitoringUser"%3A"8e92d491-a5e6-42d7-8928-5be72d743b0c"%2C"NiceHashAPIKey"%3A"0dfa9c5b-12f9-4f62-9152-41d6a517de00"%2C"NiceHashAPISecret"%3A"15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5"%2C"NiceHashOrganizationId"%3A"f48afaf4-fc54-4645-af2d-56334a48aebb"%2C"NiceHashWallet"%3A"33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R"%2C"NiceHashWalletIsInternal"%3Atrue%2C"OpenFirewallPorts"%3Atrue%2C"PayoutCurrency"%3A"BTC"%2C"PoolAPIAllowedFailureCount"%3A3%2C"PoolAPIretryInterval"%3A3%2C"PoolAPItimeout"%3A3%2C"PoolName"%3A%5B"Hiveon"%2C"MiningDutchPlus"%2C"MiningPoolHubCoins"%2C"NiceHash"%2C"ProHashingPlus"%2C"ZergPoolCoinsPlus"%2C"ZPoolPlus"%5D%2C"PoolsConfigFile"%3A".%5C%5CConfig%5C%5CPoolsConfig.json"%2C"PoolTimeout"%3A30%2C"PowerPricekWh"%3A{"00%3A00"%3A0.26}%2C"PowerUsage"%3A{"_GPU%2302"%3A35}%2C"PowerUsageIdleSystemW"%3A160%2C"ProfitabilityThreshold"%3A-12.6%2C"ProHashingAPIKey"%3A"8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a"%2C"ProHashingMiningMode"%3A"PPLNS"%2C"ProHashingUserName"%3A"UselessGuru"%2C"Proxy"%3A""%2C"Region"%3A"Europe"%2C"ReportToServer"%3Atrue%2C"ShowAccuracy"%3Atrue%2C"ShowAllMiners"%3Afalse%2C"ShowChangeLog"%3Atrue%2C"ShowCoinName"%3Atrue%2C"ShowCurrency"%3Atrue%2C"ShowEarning"%3Atrue%2C"ShowEarningBias"%3Atrue%2C"ShowMinerFee"%3Atrue%2C"ShowPool"%3Atrue%2C"ShowPoolBalances"%3Afalse%2C"ShowPoolFee"%3Atrue%2C"ShowPowerCost"%3Atrue%2C"ShowPowerUsage"%3Atrue%2C"ShowProfit"%3Atrue%2C"ShowProfitBias"%3Atrue%2C"ShowUser"%3Afalse%2C"ShowWorkerStatus"%3Atrue%2C"LogViewerConfig"%3A".%5C%5CUtils%5C%5CUG-Miner_LogReader.xml"%2C"SnakeTailExe"%3A".%5C%5CUtils%5C%5CSnakeTail.exe"%2C"SSL"%3A"Prefer"%2C"StartGUI"%3Afalse%2C"StartGUIMinimized"%3Afalse%2C"StartupMode"%3A"Running"%2C"SubtractBadShares"%3Atrue%2C"SyncWindow"%3A3%2C"Transcript"%3Afalse%2C"UIStyle"%3A"light"%2C"UnrealMinerEarningFactor"%3A1%2C"UnrealPoolPriceFactor"%3A2%2C"UseAnycast"%3Atrue%2C"UseColorForMinerStatus"%3Atrue%2C"UsemBTC"%3Atrue%2C"UseMinerTweaks"%3Atrue%2C"Wallets"%3A{"BTC"%3A"1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF"%2C"ETC"%3A"0x7CF99ec9029A98AFd385f106A93977D8105Fec0f"%2C"ETH"%3A"0x92e6F22C1493289e6AD2768E1F502Fc5b414a287"}%2C"Watchdog"%3Atrue%2C"WatchdogCount"%3A3%2C"WebGUI"%3Atrue%2C"WorkerName"%3A"Blackbox"}' + + +Set-Location("c:\Users\Stephan\Desktop\UG-Miner\") +$ScriptBody = "using module .\Includes\Include.psm1"; $Script = [ScriptBlock]::Create($ScriptBody); . $Script + +$Parameters = @{ } +$Variables = [Ordered]@{ } +# $Variables.Miners = Get-Content .\Debug\Miners.json | ConvertFrom-Json +$Variables.Pools = Get-Content .\Debug\Pools.json | ConvertFrom-Json +$Variables.ConfigFile = ".\Config\config.json" +$Variables.PoolsConfigFile = ".\Config\PoolsConfig.json" +$Variables.Earnings = Get-Content .\Debug\Earnings.json | ConvertFrom-Json +$Variables.AvailableCommandLineParameters = @("Algorithm") +$Variables.WatchdogTimers = Get-Content .\Debug\WatchdogTimers.json | ConvertFrom-Json +$Variables.BalancesData = Get-Content "C:\Users\Stephan\Desktop\UG-Miner\Logs\BalancesTrackerData.json" | ConvertFrom-Json + +# Load stats, required for stat management +Get-Stat | Out-Null + +Read-Config -ConfigFile $Variables.ConfigFile + +$Request = $Request.Substring(42) +$Path = $Request -replace '\?.+' + +$Request -replace '.+\?' -split '&' | Foreach-Object { + $Key, $Value = $_ -split '=' + # Decode any url escaped characters in the key and value + $Key = [URI]::UnescapeDataString($Key) + $Value = [URI]::UnescapeDataString($Value) + If ($Key -and $Value) { $Parameters.$Key = $Value } +} + +# Create a new response and the defaults for associated settings +$Response = $Context.Response +$ContentType = "application/json" +$StatusCode = 200 +$Data = "" + +# Set the proper content type, status code and data for each resource +Switch ($Path) { + "/functions/algorithm/disable" { + # Disable algorithm@pool in poolsconfig.json + $PoolNames = @($Parameters.Pools | ConvertFrom-Json -ErrorAction Ignore).Name + $Algorithms = @($Parameters.Pools | ConvertFrom-Json -ErrorAction Ignore).Algorithm + If ($Pools = @($Variables.Pools.Where({ $_.Name -in $PoolNames -and $_.Algorithm -in $Algorithms }))) { + $PoolsConfig = Get-Content -Path $Config.PoolsConfigFile | ConvertFrom-Json + ForEach ($Pool in $Pools) { + If ($PoolsConfig.($Pool.Name).Algorithm -like "-*") { + $PoolsConfig.($Pool.Name).Algorithm = @($PoolsConfig.($Pool.Name).Algorithm += "-$($Pool.Algorithm)" | Sort-Object -Unique) + $Pool.Reasons = [System.Collections.Generic.List[String]]@($Pool.Reasons.Add("Algorithm disabled (`-$($Pool.Algorithm)` in $($Pool.Name) pool config)") | Sort-Object -Unique) + } + Else { + $PoolsConfig.($Pool.Name).Algorithm = @($PoolsConfig.($Pool.Name).Algorithm.Where({ $_ -ne "+$($Pool.Algorithm)" }) | Sort-Object -Unique) + $Pool.Reasons = [System.Collections.Generic.List[String]]@($Pool.Reasons.Add("Algorithm not enabled in $($Pool.Name) pool config") | Sort-Object -Unique) + } + $Pool.Available = $false + $Data += "$($Pool.Algorithm)@$($Pool.Name)" + } + Remove-Variable Pool + $Message = "$($Pools.Count) $(If ($Pools.Count -eq 1) { "pool" } Else { "pools" }) disabled." + Write-Message -Level Verbose "Web GUI: $Message" + $Data = "$($Data -join "`n")`n`n$Message" + $PoolsConfig | Get-SortedObject | ConvertTo-Json -Depth 10 | Out-File -LiteralPath $Variables.PoolsConfigFile -Force + } + Else { + $Data = "No matching stats found." + } + Break + } + "/functions/algorithm/enable" { + # Enable algorithm@pool in poolsconfig.json + $PoolNames = @($Parameters.Pools | ConvertFrom-Json -ErrorAction Ignore).Name + $Algorithms = @($Parameters.Pools | ConvertFrom-Json -ErrorAction Ignore).Algorithm + If ($Pools = @($Variables.Pools.Where({ $_.Name -in $PoolNames -and $_.Algorithm -in $Algorithms }))) { + $PoolsConfig = Get-Content -Path $Config.PoolsConfigFile | ConvertFrom-Json + ForEach ($Pool in $Pools) { + If ($PoolsConfig.($Pool.Name).Algorithm -like "+*") { + $PoolsConfig.($Pool.Name).Algorithm = @($PoolsConfig.($Pool.Name).Algorithm += "+$($Pool.Algorithm)" | Sort-Object -Unique) + $Pool.Reasons = [System.Collections.Generic.List[String]]@($Pool.Reasons.Where({ $_ -ne "Algorithm not enabled in $($Pool.Name) pool config" }) | Sort-Object -Unique) + } + Else { + $PoolsConfig.($Pool.Name).Algorithm = @($PoolsConfig.($Pool.Name).Algorithm.Where({ $_ -ne "-$($Pool.Algorithm)" }) | Sort-Object -Unique) + $Pool.Reasons = [System.Collections.Generic.List[String]]@($Pool.Reasons.Where({ $_ -ne "Algorithm disabled (`-$($Pool.Algorithm)` in $($Pool.Name) pool config)" }) | Sort-Object -Unique) + } + If (-not $Pool.Reasons) { $Pool.Available = $true } + $Data += "$($Pool.Algorithm)@$($Pool.Name)" + } + Remove-Variable Pool + $Message = "$($Pools.Count) $(If ($Pools.Count -eq 1) { "pool" } Else { "pools" }) enabled." + Write-Message -Level Verbose "Web GUI: $Message" + $Data = "$($Data -join "`n")`n`n$Message" + $PoolsConfig | Get-SortedObject | ConvertTo-Json -Depth 10 | Out-File -LiteralPath $Variables.PoolsConfigFile -Force + } + Else { + $Data = "No matching stats found." + } + Break + } + "/functions/api/stop" { + Write-Message -Level Verbose "API: API stopped!" + Return + } + "/functions/balancedata/remove" { + If ($Parameters.Data) { + $BalanceDataEntries = $Variables.BalancesData + $Variables.BalancesData = @((Compare-Object $Variables.BalancesData @($Parameters.Data | ConvertFrom-Json -ErrorAction Ignore) -PassThru -Property DateTime, Pool, Currency, Wallet).Where({ $_.SideIndicator -eq "<=" }) | Select-Object -ExcludeProperty SideIndicator) + $Variables.BalancesData | ConvertTo-Json | Out-File ".\Data\BalancesTrackerData.json" + $RemovedEntriesCount = $BalanceDataEntries.Count - $Variables.BalancesData.Count + If ($RemovedEntriesCount-gt 0) { + $Message = "$RemovedEntriesCount $(If ($RemovedEntriesCount -eq 1) { "balance data entry" } Else { "balance data entries" }) removed." + Write-Message -Level Verbose "Web GUI: $Message" + $Data = $Message + } + Else { + $Data = "No matching entries found." + } + Break + } + } + "/functions/config/device/disable" { + ForEach ($Key in $Parameters.Keys) { + If ($Values = @(($Parameters.$Key -split ',').Where({ $_ -notin $Config.ExcludeDeviceName }))) { + Try { + $ExcludeDeviceName = $Config.ExcludeDeviceName + $Config.ExcludeDeviceName = @((@($Config.ExcludeDeviceName) + $Values) | Sort-Object -Unique) + Write-Config -ConfigFile $Variables.ConfigFile -Config $Config + $Data = "Device configuration changed`n`nOld values:" + $Data += "`nExcludeDeviceName: '[$($ExcludeDeviceName -join ', ')]'" + $Data += "`n`nNew values:" + $Data += "`nExcludeDeviceName: '[$($Config."ExcludeDeviceName" -join ', ')]'" + $Data += "`n`nConfiguration saved to '$($Variables.ConfigFile.Replace("$(Convert-Path ".\")\", ".\"))'.`nIt will become active in next cycle." + ForEach ($DeviceName in $Values) { + $Variables.Devices.Where({ $_.Name -eq $DeviceName }).ForEach( + { + $_.State = [DeviceState]::Disabled + If ($_.SubStatus -in ("Benchmarking", "Running", "WarmingUp")) { $_.StatusInfo = "$($_.StatusInfo); will get disabled at end of cycle" } + Else { + $_.StatusInfo = "Disabled (ExcludeDeviceName: '$($_.Name)')" + $_.Status = "Idle" + } + } + ) + } + Remove-Variable DeviceName + Write-Message -Level Verbose "Web GUI: Device$(If ($Values.Count -ne 1) { "s" }) '$($Values -join ', ')' disabled. Configuration file '$($Variables.ConfigFile)' updated." + } + Catch { + $Data = "Error saving configuration file '$($Variables.ConfigFile.Replace("$(Convert-Path ".\")\", ".\"))'.`n`n[ $($_) ]" + } + } + Else { + $Data = "No configuration change." + } + } + Remove-Variable Key + Break + } + "/functions/config/device/enable" { + ForEach ($Key in $Parameters.Keys) { + If ($Values = @(($Parameters.$Key -split ',').Where({ $_ -in $Config.ExcludeDeviceName }))) { + Try { + $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:" + $Data += "`nExcludeDeviceName: '[$($Config."ExcludeDeviceName" -join ', ')]'" + $Data += "`n`nConfiguration saved to '$($Variables.ConfigFile.Replace("$(Convert-Path ".\")\", ".\"))'.`nIt will become active in next cycle." + $Variables.Devices.Where({ $_.Name -in $Values }).ForEach( + { + $_.State = [DeviceState]::Enabled + If ($_.StatusInfo -like "* {*@*}; will get disabled at end of cycle") { $_.StatusInfo = $_.StatusInfo -replace '; will get enabled at end of cycle' } + Else { $_.Status = $_.StatusInfo = $_.SubStatus = "Idle" } + } + ) + Write-Message -Level Verbose "Web GUI: Device$(If ($Values.Count -ne 1) { "s" }) '$($Values -join ', ')' enabled. Configuration file '$($Variables.ConfigFile)' updated." + } + Catch { + $Data = "Error saving configuration file '$($Variables.ConfigFile.Replace("$(Convert-Path ".\")\", ".\"))'.`n`n[ $($_) ]." + } + } + Else { + $Data = "No configuration change." + } + } + Remove-Variable Key + Break + } + "/functions/config/set" { + Try { + $TempConfig = ($Key | ConvertFrom-Json -AsHashtable) + Write-Config -ConfigFile $Variables.ConfigFile -Config $TempConfig + $TempConfig.Keys.ForEach({ $Config.$_ = $TempConfig.$_ }) + Remove-Variable TempConfig + + $Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported }).ForEach( + { + If ($_.Name -in $Config.ExcludeDeviceName) { + $_.State = [DeviceState]::Disabled + If ($_.Status -like "Mining *}") { $_.Status = "$($_.Status); will get disabled at end of cycle" } + } + Else { + $_.State = [DeviceState]::Enabled + If ($_.Status -like "*; will get disabled at end of cycle") { $_.Status = $_.Status -replace '; will get disabled at end of cycle' If ($_.Status -like "Disabled *") { $_.Status = "Idle" } + } + } + ) + $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.Replace("$(Convert-Path ".\")\", ".\"))'.`nIt will become fully active in the next cycle." + } + Catch { + $Data = "Error saving configuration file '$($Variables.ConfigFile.Replace("$(Convert-Path ".\")\", ".\"))'.`n`n[ $($_) ]." + } + Break + } + "/functions/file/edit" { + $Data = Edit-File $Parameters.FileName + Break + } + "/functions/file/showcontent" { + $Data = (Get-Content -Path $Parameters.FileName -Raw) + $ContentType = "text/html" + Break + } + "/functions/log/get" { + $Lines = If ([Int]$Parameters.Lines) { [Int]$Parameters.Lines } Else { 100 } + $Data = "$((Get-Content -Path $Variables.LogFile -Tail $Lines).ForEach({ "$($_)`n" }))" + Break + } + "/functions/mining/getstatus" { + If ($Variables.FreshConfig) { + $Data = "FreshConfig" | ConvertTo-Json + } + Else { + $Data = $Variables.NewMiningStatus | ConvertTo-Json + } + Break + } + "/functions/mining/pause" { + If ($Variables.MiningStatus -ne "Paused") { + $Variables.NewMiningStatus = "Paused" + $Data = "Mining is being paused...`n$(If ($Variables.BalancesTrackerPollInterval -gt 0) { If ($Variables.BalancesTrackerRunning) { "Balances tracker running." } Else { "Balances tracker starting..." } })" + $Variables.RestartCycle = $true + } + Break + } + "/functions/mining/start" { + If ($Variables.MiningStatus -ne "Running") { + $Variables.NewMiningStatus = "Running" + $Data = "Mining processes starting...`n$(If ($Variables.BalancesTrackerPollInterval -gt 0) { If ($Variables.BalancesTrackerRunning) { "Balances tracker running." } Else { "Balances tracker starting..." } })" + $Variables.RestartCycle = $true + } + Break + } + "/functions/mining/stop" { + If ($Variables.MiningStatus -ne "Idle") { + $Variables.NewMiningStatus = "Idle" + $Data = "$($Variables.Branding.ProductLabel) is stopping...`n" + $Variables.RestartCycle = $true + } + Break + } + "/functions/querypoolapi" { + If (-not $Config.PoolsConfig.$($Parameters.Pool).BrainConfig.$($Parameters.Type)) { + $Data = "No pool configuration data for '/functions/querypoolapi?Pool=$($Parameters.Pool)&Type=$($Parameters.Type)'." + } + ElseIf (-not ($Data = (Invoke-RestMethod -Uri $Config.PoolsConfig.$($Parameters.Pool).BrainConfig.$($Parameters.Type) -Headers @{ "Cache-Control" = "no-cache" } -SkipCertificateCheck -TimeoutSec 5) | ConvertTo-Json)) { + $Data = "No data for '/functions/querypoolapi?Pool=$($Parameters.Pool)&Type=$($Parameters.Type)'." + } + break + } + "/functions/removeorphanedminerstats" { + If ($StatNames = Remove-ObsoleteMinerStats) { + $Data = $StatNames | ConvertTo-Json + } + Else { + $Data = "No matching stats found." + } + Break + } + "/functions/getminerdetail" { + $Miner = $Variables.Miners.Where({ $_.Info -eq $Key }) + If ($Miner) { + $Data = $Miner | ConvertTo-Json -Depth 10 + } + Else { + $Data = "Miner with key '$Key' not found." + } + Break + } + "/functions/stat/disable" { + If ($Parameters.Miners) { + If ($Miners = @(Compare-Object -PassThru -IncludeEqual -ExcludeDifferent @($Variables.Miners | Select-Object) @($Parameters.Miners | ConvertFrom-Json -ErrorAction Ignore | Select-Object) -Property Info)) { + $Data = @() + $Miners.Where({ -not $_.Disabled }).ForEach( + { + $Data += $_.Name + ForEach ($Worker in $_.Workers) { + Disable-Stat -Name "$($_.Name)_$($Worker.Pool.Algorithm)_Hashrate" + $Worker.Hashrate = [Double]::NaN + } + Remove-Variable Worker + $_.Disabled = $true + $_.Reasons += "Disabled by user" + $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -ne "Disabled by user" }) | Sort-Object -Unique) + } + ) + $Data = $Data | Sort-Object -Unique + $Message = "$($Data.Count) $(If ($Data.Count -eq 1) { "miner" } Else { "miners" }) disabled." + Write-Message -Level Verbose "Web GUI: $Message" + $Data = "$($Data -join "`n")`n`n$Message" + } + Else { + $Data = "No matching miner stats found." + } + Break + } + } + "/functions/stat/enable" { + If ($Parameters.Miners) { + If ($Miners = @(Compare-Object -PassThru -IncludeEqual -ExcludeDifferent @($Variables.Miners | Select-Object) @($Parameters.Miners | ConvertFrom-Json -ErrorAction Ignore | Select-Object) -Property Info)) { + $Data = @() + $Miners.Where({ $_.Disabled }).ForEach( + { + $Data += $_.Name + ForEach ($Worker in $_.Workers) { + Enable-Stat -Name "$($_.Name)_$($Worker.Pool.Algorithm)_Hashrate" + } + Remove-Variable Worker + $_.Disabled = $false + $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -ne "Disabled by user" }) | Sort-Object -Unique) + If (-not $_.Reasons) { $_.Available = $true } + } + ) + $Data = $Data | Sort-Object -Unique + $Message = "$($Data.Count) $(If ($Data.Count -eq 1) { "miner" } Else { "miners" }) enabled." + Write-Message -Level Verbose "Web GUI: $Message" + $Data = "$($Data -join "`n")`n`n$Message" + } + Else { + $Data = "No matching miner stats found." + } + Break + } + } + "/functions/stat/get" { + $TempStats = @(If ($null -ne $Parameters.Value) { @($Stats.psBase.Keys.Where({ $_ -like "*_$($Parameters.Type)" -and $Stats[$_].Live -eq $Parameters.Value }).ForEach({ $Stats[$_] })) } Else { @($Stats) }) + If ($TempStats) { + If ($null -ne $Parameters.Value) { + ($TempStats.Name | Sort-Object).ForEach({ $Data += "$($_ -replace '(_Hashrate|_PowerConsumption)$')`n" }) + If ($Parameters.Type -eq "Hashrate") { $Data += "`n$($TempStats.Count) stat file$(If ($TempStats.Count -ne 1) { "s" }) with $($Parameters.Value)H/s hashrate." } + ElseIf ($Parameters.Type -eq "PowerConsumption") { $Data += "`n$($TempStats.Count) stat file$(If ($TempStats.Count -ne 1) { "s" }) with $($Parameters.Value)W power consumption." } + } + Else { + $Data = $TempStats | ConvertTo-Json + } + } + Else { + $Data = "No matching stats found." + } + Break + } + "/functions/stat/remove" { + If ($Parameters.Pools) { + If ($Pools = @(Compare-Object -PassThru -IncludeEqual -ExcludeDifferent @($Variables.Pools | Select-Object) @($Parameters.Pools | ConvertFrom-Json -ErrorAction Ignore | Select-Object) -Property Algorithm, Currency, Name)) { + $Data = @() + ($Pools | Sort-Object -Property Name, Algorithm, Currency).ForEach( + { + $StatName = "$($_.Name)_$($_.Algorithm)$(If ($_.Currency) { "-$($_.Currency)" })" + $Data += $StatName + Remove-Stat -Name "$($StatName)_Profit" + $_.Reasons = [System.Collections.Generic.List[String]]@() + $_.Price = $_.Price_Bias = $_.StablePrice = $_.Accuracy = [Double]::Nan + $_.Available = $true + $_.Disabled = $false + } + ) + $Data = $Data | Sort-Object -Unique + $Message = "Reset pool stats for $($Pools.Count) $(If ($Pools.Count -eq 1) { "pool" } Else { "pools" })." + Write-Message -Level Verbose "Web GUI: $Message" + $Data = "$($Data -join "`n")`n`n$Message" + } + Else { + $Data = "No matching pool stats found." + } + Break + } + ElseIf ($Parameters.Miners -and $Parameters.Type -eq "Hashrate") { + If ($Miners = @(Compare-Object -PassThru -IncludeEqual -ExcludeDifferent @($Variables.Miners | Select-Object) @($Parameters.Miners | ConvertFrom-Json -ErrorAction Ignore | Select-Object) -Property Info)) { + $Data = @() + $Miners.ForEach( + { + $_.Activated = 0 # To allow 3 attempts + $_.Available = $true + $_.Benchmark = $true + $_.Earning_Accuracy = [Double]::NaN + $_.Disabled = $false + $Data += $_.Name + ForEach ($Worker in $_.Workers) { + Remove-Stat -Name "$($_.Name)_$($Worker.Pool.Algorithm)_Hashrate" + $Worker.Hashrate = [Double]::NaN + } + Remove-Variable Worker + + # Clear power consumption + Remove-Stat -Name "$($_.Name)_PowerConsumption" + $_.PowerConsumption = $_.PowerCost = $_.Profit = $_.Profit_Bias = $_.Earning = $_.Earning_Bias = [Double]::NaN + + # Remove watchdog + $Variables.WatchdogTimers = @($Variables.WatchdogTimers | Where-Object MinerName -ne $_.Name) + + $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -ne "Disabled by user" })) + $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -ne "0 H/s Stat file" })) + $_.Reasons = [System.Collections.Generic.List[String]] @($_.Reasons.Where({ $_ -notlike "Unreal profit data *" }) | Sort-Object -Unique) + If (-not $_.Reasons) { $_.Available = $true } + If ($_.Status -eq "Disabled") { $_.Status = "Idle" } + } + ) + $Data = $Data | Sort-Object -Unique + $Message = "Re-benchmark triggered for $($Data.Count) $(If ($Data.Count -eq 1) { "miner" } Else { "miners" })." + Write-Message -Level Verbose "Web GUI: $Message" + $Data = "$($Data -join "`n")`n`n$Message" + } + Else { + $Data = "No matching hashrate stats found." + } + Break + } + ElseIf ($Parameters.Miners -and $Parameters.Type -eq "PowerConsumption") { + If ($Miners = @(Compare-Object -PassThru -IncludeEqual -ExcludeDifferent @($Variables.Miners | Select-Object) @($Parameters.Miners | ConvertFrom-Json -ErrorAction Ignore | Select-Object) -Property Info)) { + $Data = @() + $Miners.ForEach( + { + If ($_.Earning -eq 0) { $_.Available = $true } + If ($Variables.CalculatePowerCost) { + $_.MeasurePowerConsumption = $true + $_.Activated = 0 # To allow 3 attempts + } + $_.PowerConsumption = [Double]::NaN + $StatName = $_.Name + $Data += $StatName + Remove-Stat -Name "$($StatName)_PowerConsumption" + $_.PowerConsumption = $_.PowerCost = $_.Profit = $_.Profit_Bias = $_.Earning = $_.Earning_Bias = [Double]::NaN + If ($_.Status -eq "Disabled") { $_.Status = "Idle" } + } + ) + $Data = $Data | Sort-Object -Unique + $Message = "Re-measure power consumption triggered for $($Data.Count) $(If ($Data.Count -eq 1) { "miner" } Else { "miners" })." + Write-Message -Level Verbose "Web GUI: $Message" + $Data = "$($Data -join "`n")`n`n$Message" + } + Else { + $Data = "No matching power consumption stats found." + } + Break + } + If ($Parameters.Value) { $TempStats = @($Stats.psBase.Keys.Where({ $_ -like "*_$($Parameters.Type)" -and $Stats[$_].Live -eq $Parameters.Value }).ForEach({ $Stats[$_] })) } + Else { $TempStats = @( (Get-ChildItem -Path ".\Stats\*_$($Parameters.Type).txt").BaseName.ForEach({ $Stats[$_] })) } + If ($TempStats) { + $Data = @() + ($TempStats | Sort-Object -Property Name).ForEach( + { + Remove-Stat -Name $_.Name + $Data += $_.Name -replace '(_Hashrate|_PowerConsumption)$' + } + ) + $Data = $Data | Sort-Object -Unique + If ($Parameters.Type -eq "Hashrate") { $Message = "Reset $($TempStats.Count) stat file$(If ($TempStats.Count -ne 1) { "s" })$(If ($null -ne $Parameters.Value) { " with $($Parameters.Value)H/s hashrate" })." } + ElseIf ($Parameters.Type -eq "PowerConsumption") { $Message = "Reset $($TempStats.Count) stat file$(If ($TempStats.Count -ne 1) { "s" })$(If ($null -ne $Parameters.Value) { " with $($Parameters.Value)W power consumption" })." } + ElseIf ($Parameters.Type -eq "Profit") { $Message = "Reset $($TempStats.Count) pool stat file$(If ($TempStats.Count -ne 1) { "s" })." } + Write-Message -Level Info "Web GUI: $Message" + $Data = "$($Data -join "`n")`n`n$Message" + } + Else { + $Data = "No matching stats found." + } + Break + } + "/functions/stat/set" { + If ($Parameters.Miners -and $Parameters.Type -eq "Hashrate" -and $null -ne $Parameters.Value) { + $Data = @() + If ($Miners = @(Compare-Object -PassThru -IncludeEqual -ExcludeDifferent @($Variables.Miners | Select-Object) @($Parameters.Miners | ConvertFrom-Json -ErrorAction Ignore | Select-Object) -Property Info)) { + $Miners.ForEach( + { + If ($Parameters.Value -le 0 -and $Parameters.Type -eq "Hashrate") { $_.Available = $false; $_.Disabled = $true } + $Data += $_.Name + ForEach ($Algorithm in $_.Algorithms) { + $StatName = "$($_.Name)_$($Algorithm)_$($Parameters.Type)" + If ($Parameters.Value -eq 0) { # Miner failed + Remove-Stat -Name $StatName + Set-Stat -Name $StatName -Value $Parameters.Value -FaultDetection $false | Out-Null + $_.Profit = $_.Profit_Bias = $_.Earning = $_.Earning_Bias = $_.Earning_Accuracy = [Double]::NaN + $_.Available = $false + $_.Disabled = $false + If ($_.Reasons -notcontains "0 H/s Stat file") { $_.Reasons.Add("0 H/s Stat file") } + $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -notlike "Disabled by user" }) | Sort-Object -Unique) + $_.Status = [MinerStatus]::Failed + } + } + Remove-Variable Algorithm + } + ) + $Data = $Data | Sort-Object -Unique + $Message = "$(If ($Data.Count -eq 1) { "The miner is" } Else { "$($Data.Count) miners are" }) $(If ($Parameters.Value -eq 0) { "marked as failed" } ElseIf ($Parameters.Value -eq -1) { "disabled" } Else { "set to value $($Parameters.Value)" })." + Write-Message -Level Verbose "Web GUI: $Message" + $Data = "$($Data -join "`n")`n`n$Message" + } + Else { + $Data = "No matching miners found." + } + Break + } + } + "/functions/switchinglog/clear" { + Get-ChildItem -Path ".\Logs\switchinglog.csv" -File | Remove-Item -Force + $Data = "Switching log '.\Logs\switchinglog.csv' cleared." + Write-Message -Level Verbose "Web GUI: $Data" + Break + } + "/functions/variables/get" { + If ($Key) { + $Data = $Variables.($Key -replace '\\|/', '.' -split '\.'[-1]) | Get-SortedObject | ConvertTo-Json -Depth 10 + } + Else { + $Data = $Variables.psBase.Keys | Sort-Object | ConvertTo-Json -Depth 1 + } + Break + } + "/functions/watchdogtimers/remove" { + $Data = @() + ForEach ($Miner in @($Parameters.Miners | ConvertFrom-Json -ErrorAction Ignore)) { + # Update miner + $Variables.Miners.Where({ $_.Name -eq $Miner.Name -and $_.Reasons -like "Miner suspended by watchdog *" }).ForEach( + { + $Data += "$($_.Name)" + $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -notlike "Miner suspended by watchdog *" }) | Sort-Object -Unique) + If (-not $_.Reasons) { $_.Available = $true } + } + ) + + # Remove Watchdog timers + $Variables.WatchdogTimers = @($Variables.WatchdogTimers.Where({ $_.MinerName -ne $Miner.Name })) + } + Remove-Variable Miner + + ForEach ($Pool in @($Parameters.Pools | ConvertFrom-Json -ErrorAction Ignore)) { + # Update pool + $Variables.Pools.Where({ $_.Name -eq $Pool.Name -and $_.Algorithm -eq $Pool.Algorithm -and $_.Reasons -like "Pool suspended by watchdog *" }).ForEach( + { + $Data += "$($_.Key) ($($_.Region))" + $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -notlike "Pool suspended by watchdog *" }) | Sort-Object -Unique) + If (-not $_.Reasons) { $_.Available = $true } + } + ) + + # Remove Watchdog timers + $Variables.WatchdogTimers = @($Variables.WatchdogTimers.Where({ $_.PoolName -ne $Pool.Name -or $_.Algorithm -ne $Pool.Algorithm })) + } + Remove-Variable Pool + If ($Data) { + $Data = $Data | Sort-Object -Unique + $Message = "$($Data.Count) watchdog $(If ($Data.Count -eq 1) { "timer" } Else { "timers" }) removed." + Write-Message -Level Verbose "Web GUI: $Message" + $Data = "$($Data -join "`n")`n`n$Message" + } + Else { + $Data = "No matching watchdog timers found." + } + Break + } + "/functions/watchdogtimers/reset" { + $Variables.WatchDogTimers = @() + $Variables.Miners.ForEach( + { + $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -notlike "Miner suspended by watchdog *" }) | Sort-Object -Unique) + $_.Where({ -not $_.Reasons }).ForEach({ $_.Available = $true }) + } + ) + $Variables.Pools.ForEach( + { + $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -notlike "*Pool suspended by watchdog" }) | Sort-Object -Unique) + $_.Where({ -not $_.Reasons }).ForEach({ $_.Available = $true }) + } + ) + Write-Message -Level Verbose "Web GUI: All watchdog timers reset." + $Data = "Watchdog timers will be recreated in next cycle." + Break + } + "/algorithms" { + $Data = ConvertTo-Json -Depth 10 @($Variables.Algorithms | Select-Object) + Break + } + "/algorithms/lastused" { + $Data = ConvertTo-Json -Depth 10 $Variables.AlgorithmsLastUsed + Break + } + "/allcurrencies" { + $Data = ConvertTo-Json -Depth 10 @($Variables.AllCurrencies) + break + } + "/apiversion" { + $Data = $APIVersion + Break + } + "/balances" { + $Data = ConvertTo-Json -Depth 10 ($Variables.Balances | Sort-Object -Property DateTime -Bottom 10000 | Select-Object) + Break + } + "/balancedata" { + $Data = ConvertTo-Json -Depth 10 @($Variables.BalancesData | Sort-Object -Property DateTime -Descending) + Break + } + "/btc" { + $Data = $Variables.Rates.BTC.($Config.FIATcurrency) + Break + } + "/balancescurrencies" { + $Data = ConvertTo-Json -Depth 10 @($Variables.BalancesCurrencies) + break + } + "/braindata" { + $Data = ConvertTo-Json -Depth 2 ($Variables.BrainData | Get-SortedObject) + Break + } + "/coinnames" { + $Data = Get-Content -Path ".\Data\CoinNames.json" + Break + } + "/config" { + $Data = ConvertTo-Json -Depth 10 (Get-Content -Path $Variables.ConfigFile | ConvertFrom-Json -Depth 10 | Get-SortedObject) + If (-not ($Data | ConvertFrom-Json).ConfigFileVersion) { + $Data = ConvertTo-Json -Depth 10 ($Config | Select-Object -ExcludeProperty PoolsConfig) + } + Break + } + "/configfile" { + $Data = $Variables.ConfigFile + break + } + "/configrunning" { + $Data = ConvertTo-Json -Depth 10 ($Config | Get-SortedObject) + Break + } + "/currency" { + $Data = $Config.FIATcurrency + Break + } + "/currencyalgorithm" { + $Data = Get-Content -Path ".\Data\CurrencyAlgorithm.json" + Break + } + "/dagdata" { + $Data = ConvertTo-Json -Depth 10 ($Variables.DAGdata | Select-Object) + Break + } + "/devices" { + $Data = ConvertTo-Json -Depth 10 @($Variables.Devices | Select-Object | Sort-Object -Property Name) + Break + } + "/devices/enabled" { + $Data = ConvertTo-Json -Depth 10 @($Variables.Devices.Where({ $_.State -eq "Enabled" }) | Sort-Object -Property Name) + Break + } + "/devices/disabled" { + $Data = ConvertTo-Json -Depth 10 @($Variables.Devices.Where({ $_.State -eq "Disabled" }) | Sort-Object -Property Name) + Break + } + "/devices/unsupported" { + $Data = ConvertTo-Json -Depth 10 @($Variables.Devices.Where({ $_.State -eq "Unsupported" }) | Sort-Object -Property Name) + Break + } + "/donationdata" { + $Data = ConvertTo-Json $Variables.DonationData + Break + } + "/donationlog" { + $Data = ConvertTo-Json $Variables.DonationLog + Break + } + "/driverversion" { + $Data = ConvertTo-Json -Depth 10 ($Variables.DriverVersion | Select-Object) + Break + } + "/earningschartdata" { + $Data = ConvertTo-Json $Variables.EarningsChartData + Break + } + "/equihashcoinpers" { + $Data = Get-Content -Path ".\Data\EquihashCoinPers.json" + Break + } + "/extracurrencies" { + $Data = ConvertTo-Json -Depth 10 $Config.ExtraCurrencies + break + } + "/fiatcurrencies" { + $Data = ConvertTo-Json -Depth 10 ($Variables.FIATcurrencies | Select-Object) + Break + } + "/miners" { + $Data = ConvertTo-Json -Depth 4 -Compress @(($Variables.Miners | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp).ForEach({ If ($_.WorkersRunning) { $_.Workers = $_.WorkersRunning }; $_ }) | Select-Object -ExcludeProperty WorkersRunning | Sort-Object @{ Expression = { $_.Best }; Descending = $true }, DeviceNames, Name) + Break + } + "/miners/available" { + $Bias = If ($Variables.CalculatePowerCost -and -not $Config.IgnorePowerCost) { "Profit_Bias" } Else { "Earning_Bias" } + $Data = ConvertTo-Json -Depth 4 @($Variables.Miners.Where({ $_.Available }) | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp | Sort-Object DeviceNames, @{ Expression = $Bias; Descending = $true }) + Remove-Variable Bias + Break + } + "/miners/bestperdevice" { + $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/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" { + $Data = ConvertTo-Json -Depth 4 @($Variables.Miners.Where({ $_.Status -eq [MinerStatus]::Disabled }) | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp | Sort-Object -Property { $_.DeviceNames }, EndTime) + Break + } + "/miners/failed" { + $Data = ConvertTo-Json -Depth 4 @($Variables.Miners.Where({ $_.Status -eq [MinerStatus]::Failed }) | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp | Sort-Object -Property { $_.DeviceNames }, EndTime) + Break + } + "/miners/launched" { + $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" { + $Bias = If ($Variables.CalculatePowerCost -and -not $Config.IgnorePowerCost) { "Profit_Bias" } Else { "Earning_Bias" } + $Data = ConvertTo-Json -Depth 4 @($Variables.MinersOptimal | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp | Sort-Object @{ Expression = { $_.Best }; Descending = $true }, DeviceNames, @{ Expression = $Bias; Descending = $true }) + Remove-Variable Bias + Break + } + "/miners/running" { + $Data = ConvertTo-Json -Depth 4 @(($Variables.Miners.Where({ $_.Status -eq [MinerStatus]::Running }) | 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/unavailable" { + $Data = ConvertTo-Json -Depth 4 @($Variables.Miners.Where({ $_.Available -ne $true }) | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp | Sort-Object -Property { $_.DeviceNames }, Name, Algorithm) + Break + } + "/miningpowercost" { + $Data = $Variables.MiningPowerCost + Break + } + "/miningearning" { + $Data = $Variables.MiningEarning + Break + } + "/miningprofit" { + $Data = $Variables.MiningProfit + Break + } + "/poolname" { + $Data = ConvertTo-Json -Depth 10 $Config.PoolName + break + } + "/pooldata" { + $Data = ConvertTo-Json -Depth 10 $Variables.PoolData + break + } + "/poolsconfig" { + $Data = ConvertTo-Json -Depth 10 ($Config.PoolsConfig | Select-Object) + Break + } + "/poolsconfigfile" { + $Data = $Config.PoolsConfigFile + Break + } + "/pools" { + $Data = ConvertTo-Json -Depth 10 @($Variables.Pools | Select-Object | Sort-Object -Property Algorithm, Name, Region) + Break + } + "/pools/added" { + $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsAdded | Select-Object | Sort-Object -Property Algorithm, Name, Region) + Break + } + "/pools/available" { + $Data = ConvertTo-Json -Depth 10 @($Variables.Pools.Where({ $_.Available }) | Select-Object | Sort-Object -Property Algorithm, Name, Region) + Break + } + "/pools/best" { + $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsBest | Select-Object | Sort-Object -Property Algorithm, Name, Region) + Break + } + "/pools/expired" { + $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsExpired | Select-Object | Sort-Object -Property Algorithm, Name, Region) + Break + } + "/pools/new" { + $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsNew | Select-Object | Sort-Object -Property Algorithm, Name, Region) + Break + } + "/pools/minersprimaryalgorithm" { + $Data = ConvertTo-Json -Depth 10 @($Variables.MinerPools[0] | Select-Object) + Break + } + "/pools/minerssecondaryalgorithm" { + $Data = ConvertTo-Json -Depth 10 @($Variables.MinerPools[1] | Select-Object) + Break + } + "/pools/lastearnings" { + $Data = ConvertTo-Json -Depth 10 $Variables.PoolsLastEarnings + Break + } + "/pools/lastused" { + $Data = ConvertTo-Json -Depth 10 $Variables.PoolsLastUsed + Break + } + "/pools/unavailable" { + $Data = ConvertTo-Json -Depth 10 @($Variables.Pools.Where({ -not $_.Available }) | Sort-Object -Property Algorithm, Name, Region) + Break + } + "/pools/updated" { + $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsUpdated | Select-Object | Sort-Object -Property Algorithm, Name, Region) + Break + } + "/poolreasons" { + $Data = ConvertTo-Json -Depth 10 ($Variables.Pools.Where({ -not $_.Available }).Reasons | Sort-Object -Unique) + Break + } + "/poolvariants" { + $Data = ConvertTo-Json -Depth 10 $Variables.PoolVariants + break + } + "/rates" { + $Data = ConvertTo-Json -Depth 10 ($Variables.Rates | Select-Object) + Break + } + "/refreshtimestamp" { + $Data = $Variables.RefreshTimestamp | ConvertTo-Json + break + } + "/regions" { + $Data = ConvertTo-Json -Depth 10 @($Variables.Regions[0] | Sort-Object) + Break + } + "/regionsdata" { + $Data = ConvertTo-Json -Depth 10 $Variables.Regions + Break + } + "/stats" { + $Data = ConvertTo-Json -Depth 10 ($Stats | Select-Object) + Break + } + "/summarytext" { + $Data = ConvertTo-Json -Depth 10 @((($Variables.Summary -replace ' / ', '/' -replace ' ', ' ' -replace ' ', ' ') -split '
').trim()) + Break + } + "/summary" { + $Data = ConvertTo-Json -Depth 10 @($Variables.Summary | Select-Object) + Break + } + "/switchinglog" { + $Data = ConvertTo-Json -Depth 10 @(Get-Content ".\Logs\switchinglog.csv" | ConvertFrom-Csv | Select-Object -Last 1000 | Sort-Object -Property DateTime -Descending) + Break + } + "/unprofitablealgorithms" { + $Data = ConvertTo-Json -Depth 10 @($Variables.UnprofitableAlgorithms | Select-Object) + Break + } + "/version" { + $Data = ConvertTo-Json @("$($Variables.Branding.ProductLabel) Version: $($Variables.Branding.Version)", "API Version: $($Variables.APIVersion)", "PWSH Version: $($PSVersionTable.PSVersion.ToString())") + Break + } + "/watchdogtimers" { + $Data = ConvertTo-Json -Depth 10 @($Variables.WatchdogTimers | Select-Object) + Break + } + "/wallets" { + $Data = ConvertTo-Json -Depth 10 ($Config.Wallets | Select-Object) + Break + } + "/watchdogexpiration" { + $Data = $Variables.WatchdogReset + Break + } + "/workers" { + If ($Config.ShowWorkerStatus -and $Config.MonitoringUser -and $Config.MonitoringServer -and $Variables.WorkersLastUpdated -lt [DateTime]::Now.AddSeconds(-30)) { + Read-MonitoringData + } + $Workers = [System.Collections.ArrayList]@( + $Variables.Workers | Select-Object @( + @{ Name = "Algorithm"; Expression = { ($_.data.ForEach({ $_.Algorithm -split ',' -join " & " })) -join '
' } }, + @{ Name = "Benchmark Hashrate"; Expression = { ($_.data.ForEach({ ($_.EstimatedSpeed.ForEach({ If ([Double]$_ -gt 0) { "$($_ | ConvertTo-Hash)/s" -replace '\s+', ' ' } Else { "-" } })) -join " & " })) -join '
' } }, + @{ Name = "Currency"; Expression = { $_.Data.Currency | Select-Object -Unique } }, + @{ Name = "EstimatedEarning"; Expression = { [Decimal](($_.Data.Earning | Measure-Object -Sum | Select-Object -ExpandProperty Sum) * $Variables.Rates.BTC.($_.Data.Currency | Select-Object -Unique)) } }, + @{ Name = "EstimatedProfit"; Expression = { [Decimal]($_.Profit * $Variables.Rates.BTC.($_.Data.Currency | Select-Object -Unique)) } }, + @{ Name = "LastSeen"; Expression = { "$($_.date)" } }, + @{ Name = "Live Hashrate"; Expression = { ($_.data.ForEach({ ($_.CurrentSpeed.ForEach({ If ([Double]$_ -gt 0) { "$($_ | ConvertTo-Hash)/s" -replace '\s+', ' ' } Else { '-' } })) -join " & " })) -join '
' } }, + @{ Name = "Miner"; Expression = { $_.data.name -join '
'} }, + @{ Name = "Pool"; Expression = { ($_.data.ForEach({ (($_.Pool -split ",").ForEach({ $_ -replace 'Internal$', ' (Internal)' -replace 'External', ' (External)' })) -join " & "})) -join '
' } }, + @{ Name = "Status"; Expression = { $_.status } }, + @{ Name = "Version"; Expression = { $_.version } }, + @{ Name = "Worker"; Expression = { $_.worker } } + ) | Sort-Object -Property "Worker" + ) + $Data = ConvertTo-Json @($Workers | Select-Object) -Depth 4 + Break + } + Default { + # Set index page + If ($Path -eq "/") { $Path = "/index.html" } + + # Check if there is a file with the requested path + $Filename = "$BasePath$Path" + If (Test-Path -LiteralPath $Filename -PathType Leaf) { + # If the file is a PowerShell script, execute it and return the output. A $Parameters parameter is sent built from the query string + # Otherwise, just return the contents of the file + $File = Get-ChildItem $Filename -File + + If ($File.Extension -eq ".ps1") { + $Data = & $File.FullName -Parameters $Parameters + } + Else { + $Data = Get-Content $Filename -Raw + + # Process server side includes for html files + # Includes are in the traditional '' format used by many web servers + If ($File.Extension -eq ".html") { + $IncludeRegex = [regex]'' + $IncludeRegex.Matches($Data).Foreach( + { + $IncludeFile = $BasePath + '/' + $_.Groups[1].Value + If (Test-Path -LiteralPath $IncludeFile -PathType Leaf) { + $IncludeData = Get-Content $IncludeFile -Raw + $Data = $Data -replace $_.Value, $IncludeData + } + } + ) + } + } + + # Set content type based on file extension + If ($MIMETypes.ContainsKey($File.Extension)) { + $ContentType = $MIMETypes[$File.Extension] + } + Else { + # If it's an unrecognized file type, prompt for download + $ContentType = "application/octet-stream" + } + } + Else { + $StatusCode = 404 + $ContentType = "text/html" + $Data = "URI '$Path' is not a valid resource." + } + } +} + +# If $Data is null, the API will just return whatever data was in the previous request. Instead, show an error +# This happens if the script just started and hasn't filled all the properties in yet. +If ($null -eq $Data) { + $Data = @{ "Error" = "API data not available" } | ConvertTo-Json +} + +$Data \ No newline at end of file diff --git a/Includes/Dev/GetMinerData2.ps1 b/Includes/Dev/GetMinerData2.ps1 new file mode 100644 index 00000000..7ca46625 --- /dev/null +++ b/Includes/Dev/GetMinerData2.ps1 @@ -0,0 +1,53 @@ +<# +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: GetMinerData.ps1 +Version: 4.2.1.0 +Version date: 02 September 2022 +#> + +using module ".\Include.psm1" + +[CmdletBinding()] +Param( + [Parameter(Mandatory = $true)] + [Miner]$Miner +) + +Try { + + + "$($Miner.name) Start" > "$($Miner.Name)_Debug.txt" + + $Miner. + While ($true) { + "$($Miner.name) '$($Miner.DataCollectInterval)'" >> "$($Miner.Name)_Debug.txt" + $NextLoop = [DateTime]::Now.AddSeconds($Miner.DataCollectInterval) + If ($Data = $Miner.GetMinerData()) { + $Miner.LastSample = $Data + $Miner.Data.Add($Data) + $Data | ConvertTo-Json >> "$($Miner.name)_Data.txt" + } + + While ([DateTime]::Now -lt $NextLoop) { Start-Sleep -Milliseconds 200 } + } +} +Catch { + Return $Error[0] +} diff --git a/Includes/Dev/GetMinerDataRunspace.ps1 b/Includes/Dev/GetMinerDataRunspace.ps1 new file mode 100644 index 00000000..6ec550d6 --- /dev/null +++ b/Includes/Dev/GetMinerDataRunspace.ps1 @@ -0,0 +1,47 @@ +# Setup runspace to collect miner data in a separate thread +$Runspace = [RunspaceFactory]::CreateRunspace() +$Runspace.Name = "$($this.Name)_GetMinerData" +$Runspace.Open() + +[Void]$Runspace.SessionStateProxy.Path.SetLocation($Variables.MainPath) + +# $Runspace.SessionStateProxy.SetVariable('Miner', $this) +$Runspace.SessionStateProxy.SetVariable('Miner', $Miner) +# $Runspace.SessionStateProxy.SetVariable('Config', $Config) +# $Runspace.SessionStateProxy.SetVariable('Variables', $Variables) + +$PowerShell = [PowerShell]::Create() +$PowerShell.Runspace = $Runspace +$PowerShell.AddScript( + { + $ScriptBody = "using module .\Includes\Include.psm1"; $Script = [ScriptBlock]::Create($ScriptBody); . $Script + + $Data = [PSCustomObject]@{ } + + While ($true) { + $NextLoop = [DateTime]::Now.AddSeconds($Miner.DataCollectInterval) + Try { + "$($Miner.name) '$($Miner.DataCollectInterval)' 1" >> "$($Miner.Name)_Debug.txt" + If ($Data = $Miner.GetMinerData()) { + "$($Miner.name) '$($Miner.DataCollectInterval)' 2" >> "$($Miner.Name)_Debug.txt" + $Miner.LastSample = $Data + $Miner.Data += $Data + $Data | ConvertTo-Json >> "$($Miner.name)_Data.txt" + } + } + Catch { + "$($Miner.name) '$($Miner.DataCollectInterval)' 3" >> "$($Miner.Name)_Debug.txt" + $Error[0] >> "$($Miner.Name)_Debug.txt" + } + While (([DateTime]::Now -lt $NextLoop) { Start-Sleep -Milliseconds 200 } + } + } +) + +$AsyncObject = $PowerShell.BeginInvoke() +# $Miner.GetMinerDataRunspace = $Runspace +# $Miner.GetMinerDataPowerShell = $PowerShell + +# $Miner.GetMinerDataRunspace | Add-Member -Force @{ +# AsyncObject = $AsyncObject +# } diff --git a/Includes/Dev/SSE.ps1 b/Includes/Dev/SSE.ps1 new file mode 100644 index 00000000..612779f5 --- /dev/null +++ b/Includes/Dev/SSE.ps1 @@ -0,0 +1,23 @@ + +$Body = @{ + title = "foo" + body = "bar" + userId = 1 +} + +# The ContentType will automatically be set to application/x-www-form-urlencoded for +# all POST requests, unless specified otherwise. +$Params = @{ + Method = "Put" + Uri = "http://localhost:3999/" + Body = $JsonBody + ContentType = "text/event-stream" + Headers = @{ + "Connection" = "keep-alive" + "Cache-Control" = "no-cache" + } +} + +$Result = Invoke-RestMethod @Params + +Start-Sleep -Seconds 0 \ No newline at end of file diff --git a/Includes/Downloader.ps1 b/Includes/Downloader.ps1 index 8ff8d9f1..b1054911 100644 --- a/Includes/Downloader.ps1 +++ b/Includes/Downloader.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\Downloader.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> using module .\Includes\Include.psm1 @@ -48,6 +48,7 @@ $ProgressPreference = "SilentlyContinue" Expand-WebRequest $URI $Path -ErrorAction Stop } Write-Message -Level Info "Downloader:
Installed downloaded miner binary '$($Path.Replace("$($Variables.MainPath)\", ''))'." + If (Get-Command "Unblock-File" -ErrorAction Ignore) { $Path | Unblock-File } } Catch { $Path_Old = $null diff --git a/Includes/Include.psm1 b/Includes/Include.psm1 index 7b6bbaeb..e266df17 100644 --- a/Includes/Include.psm1 +++ b/Includes/Include.psm1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\include.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> $Global:DebugPreference = "SilentlyContinue" @@ -795,7 +795,7 @@ Function Stop-Core { } If ($Variables.Miners) { - ForEach ($Miner in $Variables.Miners.Where({ [MinerStatus]::DryRun, [MinerStatus]::Running -contains $_.Status })) { + ForEach ($Miner in $Variables.Miners.Where({ [MinerStatus]::Running, [MinerStatus]::DryRun -contains $_.Status })) { 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 @@ -3058,7 +3058,7 @@ Function Update-DAGdata { If ($AlgorithmNorm -match $Variables.RegexAlgoHasDAG) { If ($DAGdataResponse.coins.$_.last_block -ge $Variables.DAGdata.Currency.$Currency.BlockHeight) { $DAGdata = Get-DAGdata -BlockHeight $DAGdataResponse.coins.$_.last_block -Currency $Currency -EpochReserve 2 - If ($DAGdata.Epoch -and $DAGdata.Algorithm -match $Variables.RegexAlgoHasDAG) { + If ($DAGdata.BlockHeight -and $DAGdata.Algorithm -match $Variables.RegexAlgoHasDAG) { $DAGdata | Add-Member Date ([DateTime]::Now.ToUniversalTime()) -Force $DAGdata | Add-Member Url $Url -Force $Variables.DAGdata.Currency | Add-Member $Currency $DAGdata -Force @@ -3183,6 +3183,32 @@ Function Update-DAGdata { # } # } + # Update on script start, once every 24hrs or if unable to get data from source + $Currency = "TLS" + $Url = "https://telestai.cryptoscope.io/api/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 { + Write-Message -Level Info "Loading DAG data from '$Url'..." + $DAGdataResponse = Invoke-RestMethod -Uri $Url -TimeoutSec 15 + If ((Get-AlgorithmFromCurrency -Currency $Currency) -and $DAGdataResponse.blockcount -gt $Variables.DAGdata.Currency.$Currency.BlockHeight) { + $DAGdata = Get-DAGdata -BlockHeight $DAGdataResponse.blockcount -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 + } + 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'." + } + } + # Update on script start, once every 24hrs or if unable to get data from source $Currency = "SCC" $Url = "https://scc.ccore.online/api/getblockcount" @@ -3302,7 +3328,8 @@ Function Update-DAGdata { Epoch = [Int]($DAGdataKeys.Where({ $Variables.DAGdata.Currency.$_.Algorithm -eq $Algorithm }).ForEach({ $Variables.DAGdata.Currency.$_.Epoch }) | Measure-Object -Maximum).Maximum } ) -Force - $Variables.DAGdata.Algorithm.$Algorithm | Add-Member CoinName ($DAGdataKeys.Where({ $Variables.DAGdata.Currency.$_.DAGsize -eq $Variables.DAGdata.Algorithm.$Algorithm.DAGsize -and $Variables.DAGdata.Currency.$_.Algorithm -eq $Algorithm })) -Force + $Variables.DAGdata.Algorithm.$Algorithm | Add-Member Currency ($DAGdataKeys.Where({ $Variables.DAGdata.Currency.$_.DAGsize -eq $Variables.DAGdata.Algorithm.$Algorithm.DAGsize -and $Variables.DAGdata.Currency.$_.Algorithm -eq $Algorithm })) -Force + $Variables.DAGdata.Algorithm.$Algorithm | Add-Member CoinName ($Variables.CoinNames[$Variables.DAGdata.Algorithm.$Algorithm.Currency]) -Force } Catch { Start-Sleep 0 @@ -3313,7 +3340,7 @@ Function Update-DAGdata { $Variables.DAGdata.Currency | Add-Member "*" ( [PSCustomObject]@{ BlockHeight = [Int]($DAGdataKeys.ForEach({ $Variables.DAGdata.Currency.$_.BlockHeight }) | Measure-Object -Maximum).Maximum - CoinName = "*" + Currency = "*" DAGsize = [Int64]($DAGdataKeys.ForEach({ $Variables.DAGdata.Currency.$_.DAGsize }) | Measure-Object -Maximum).Maximum Epoch = [Int]($DAGdataKeys.ForEach({ $Variables.DAGdata.Currency.$_.Epoch }) | Measure-Object -Maximum).Maximum } @@ -3459,16 +3486,17 @@ Function Get-DAGepochLength { ) Switch ($Algorithm) { - "Autolykos2" { Return 1024 } - "EtcHash" { If ($BlockHeight -ge 11700000) { Return 60000 } Else { Return 30000 } } - "EthashSHA256" { Return 4000 } - "EvrProgPow" { Return 12000 } - "FiroPow" { Return 1300 } - "KawPow" { Return 7500 } - "MeowPow" { Return 7500 } # https://github.com/Meowcoin-Foundation/meowpowminer/blob/6e1f38c1550ab23567960699ba1c05aad3513bcd/libcrypto/ethash.hpp#L32 - "Octopus" { Return 524288 } - "SCCpow" { Return 3240 } # https://github.com/stakecube/sccminer/commit/16bdfcaccf9cba555f87c05f6b351e1318bd53aa#diff-200991710fe4ce846f543388b9b276e959e53b9bf5c7b7a8154b439ae8c066aeR32 - Default { Return 30000 } + "Autolykos2" { Return 1024 } + "EtcHash" { If ($BlockHeight -ge 11700000) { Return 60000 } Else { Return 30000 } } + "EthashSHA256" { Return 4000 } + "EvrProgPow" { Return 12000 } + "FiroPow" { Return 1300 } + "KawPow" { Return 7500 } + "MeowPow" { Return 7500 } # https://github.com/Meowcoin-Foundation/meowpowminer/blob/6e1f38c1550ab23567960699ba1c05aad3513bcd/libcrypto/ethash.hpp#L32 + "Octopus" { Return 524288 } + "SCCpow" { Return 3240 } # https://github.com/stakecube/sccminer/commit/16bdfcaccf9cba555f87c05f6b351e1318bd53aa#diff-200991710fe4ce846f543388b9b276e959e53b9bf5c7b7a8154b439ae8c066aeR32 + "ProgPowTelestai" { Return 12000 } + Default { Return 30000 } } } diff --git a/Includes/LegacyGUI.ps1 b/Includes/LegacyGUI.ps1 index 63788fb8..49cbec8d 100644 --- a/Includes/LegacyGUI.ps1 +++ b/Includes/LegacyGUI.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\LegacyGUI.psm1 -Version: 6.3.0 -Version date: 2024/09/01 +Version: 6.3.2 +Version date: 2024/09/09 #> [Void][System.Reflection.Assembly]::Load("System.Windows.Forms") @@ -81,28 +81,32 @@ Function CheckBoxSwitching_Click { $LegacyGUIswitchingPageControls.ForEach({ If ($_.Checked) { $SwitchingDisplayTypes += $_.Tag } }) If (Test-Path -LiteralPath ".\Logs\SwitchingLog.csv" -PathType Leaf) { $LegacyGUIswitchingLogLabel.Text = "Switching log updated $((Get-ChildItem -Path ".\Logs\SwitchingLog.csv").LastWriteTime.ToString())" - $LegacyGUIswitchingDGV.DataSource = (([System.IO.File]::ReadAllLines("$PWD\Logs\SwitchingLog.csv") | ConvertFrom-Csv).Where({ $SwitchingDisplayTypes -contains $_.Type }) | Select-Object -Last 1000).ForEach({ $_.Datetime = (Get-Date $_.DateTime); $_ }) | Sort-Object DateTime -Descending | Select-Object @("DateTime", "Action", "Name", "Pools", "Algorithms", "Accounts", "Cycle", "Duration", "DeviceNames", "Type") | Out-DataTable - If ($LegacyGUIswitchingDGV.Columns) { - $LegacyGUIswitchingDGV.Columns[0].FillWeight = 50 - $LegacyGUIswitchingDGV.Columns[1].FillWeight = 50 - $LegacyGUIswitchingDGV.Columns[2].FillWeight = 90; $LegacyGUIswitchingDGV.Columns[2].HeaderText = "Miner" - $LegacyGUIswitchingDGV.Columns[3].FillWeight = 60 + ($LegacyGUIswitchingDGV.MinersBest_Combo.ForEach({ $_.Pools.Count }) | Measure-Object -Maximum).Maximum * 40; $LegacyGUIswitchingDGV.Columns[3].HeaderText = "Pool" - $LegacyGUIswitchingDGV.Columns[4].FillWeight = 50 + ($LegacyGUIswitchingDGV.MinersBest_Combo.ForEach({ $_.Algorithms.Count }) | Measure-Object -Maximum).Maximum * 25; $LegacyGUIswitchingDGV.Columns[4].HeaderText = "Algorithm (variant)" - $LegacyGUIswitchingDGV.Columns[5].FillWeight = 90 + ($LegacyGUIswitchingDGV.MinersBest_Combo.ForEach({ $_.Accounts.Count }) | Measure-Object -Maximum).Maximum * 50; $LegacyGUIswitchingDGV.Columns[5].HeaderText = "Account" - $LegacyGUIswitchingDGV.Columns[6].FillWeight = 30; $LegacyGUIswitchingDGV.Columns[6].HeaderText = "Cycles"; $LegacyGUIswitchingDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIswitchingDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight" - $LegacyGUIswitchingDGV.Columns[7].FillWeight = 35; $LegacyGUIswitchingDGV.Columns[7].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIswitchingDGV.Columns[7].HeaderCell.Style.Alignment = "MiddleRight" - $LegacyGUIswitchingDGV.Columns[8].FillWeight = 30 + ($LegacyGUIswitchingDGV.MinersBest_Combo.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 15; $LegacyGUIswitchingDGV.Columns[8].HeaderText = "Device" - $LegacyGUIswitchingDGV.Columns[9].FillWeight = 30 - } - If ($Config.UseColorForMinerStatus) { - ForEach ($Row in $LegacyGUIswitchingDGV.Rows) { $Row.DefaultCellStyle.Backcolor = $LegacyGUIcolors[$Row.DataBoundItem.Action] } + If (-not $LegacyGUIswitchingDGV.SelectedRows) { + $LegacyGUIswitchingDGV.DataSource = (([System.IO.File]::ReadAllLines("$PWD\Logs\SwitchingLog.csv") | ConvertFrom-Csv).Where({ $SwitchingDisplayTypes -contains $_.Type }) | Select-Object -Last 1000).ForEach({ $_.Datetime = (Get-Date $_.DateTime); $_ }) | Sort-Object DateTime -Descending | Select-Object @("DateTime", "Action", "Name", "Pools", "Algorithms", "Accounts", "Cycle", "Duration", "DeviceNames", "Type") | Out-DataTable + If ($LegacyGUIswitchingDGV.Columns) { + $LegacyGUIswitchingDGV.Columns[0].FillWeight = 50 + $LegacyGUIswitchingDGV.Columns[1].FillWeight = 50 + $LegacyGUIswitchingDGV.Columns[2].FillWeight = 90; $LegacyGUIswitchingDGV.Columns[2].HeaderText = "Miner" + $LegacyGUIswitchingDGV.Columns[3].FillWeight = 60 + ($LegacyGUIswitchingDGV.MinersBest_Combo.ForEach({ $_.Pools.Count }) | Measure-Object -Maximum).Maximum * 40; $LegacyGUIswitchingDGV.Columns[3].HeaderText = "Pool" + $LegacyGUIswitchingDGV.Columns[4].FillWeight = 50 + ($LegacyGUIswitchingDGV.MinersBest_Combo.ForEach({ $_.Algorithms.Count }) | Measure-Object -Maximum).Maximum * 25; $LegacyGUIswitchingDGV.Columns[4].HeaderText = "Algorithm (variant)" + $LegacyGUIswitchingDGV.Columns[5].FillWeight = 90 + ($LegacyGUIswitchingDGV.MinersBest_Combo.ForEach({ $_.Accounts.Count }) | Measure-Object -Maximum).Maximum * 50; $LegacyGUIswitchingDGV.Columns[5].HeaderText = "Account" + $LegacyGUIswitchingDGV.Columns[6].FillWeight = 30; $LegacyGUIswitchingDGV.Columns[6].HeaderText = "Cycles"; $LegacyGUIswitchingDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIswitchingDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIswitchingDGV.Columns[7].FillWeight = 35; $LegacyGUIswitchingDGV.Columns[7].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIswitchingDGV.Columns[7].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIswitchingDGV.Columns[8].FillWeight = 30 + ($LegacyGUIswitchingDGV.MinersBest_Combo.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 15; $LegacyGUIswitchingDGV.Columns[8].HeaderText = "Device" + $LegacyGUIswitchingDGV.Columns[9].FillWeight = 30 + $LegacyGUIswitchingLogClearButton.Enabled = $true + } + $LegacyGUIswitchingDGV.ClearSelection() + $LegacyGUIswitchingDGV.EndInit() } - $LegacyGUIswitchingDGV.ClearSelection() - $LegacyGUIswitchingDGV.EndInit() } - Else { $LegacyGUIswitchingLogLabel.Text = "Switching log - no data" } - - $LegacyGUIswitchingLogClearButton.Enabled = [Boolean]$LegacyGUIswitchingDGV.Columns + Else { + $LegacyGUIswitchingLogLabel.Text = "Switching log - no data" + $LegacyGUIswitchingLogClearButton.Enabled = $false + } + If ($Config.UseColorForMinerStatus) { + ForEach ($Row in $LegacyGUIswitchingDGV.Rows) { $Row.DefaultCellStyle.Backcolor = $LegacyGUIcolors[$Row.DataBoundItem.Action] } + } } Function Set-DataGridViewDoubleBuffer { @@ -123,6 +127,8 @@ Function Update-TabControl { Switch ($LegacyGUItabControl.SelectedTab.Text) { "System status" { + $LegacyGUIactiveMinersLabel.Text = If ($Variables.MinersBest) { "Active miners updated $([DateTime]::Now.ToString())" } Else { "No miners running." } + $LegacyGUIcontextMenuStripItem1.Text = "Re-benchmark" $LegacyGUIcontextMenuStripItem1.Visible = $true $LegacyGUIcontextMenuStripItem2.Text = "Re-measure power consumption" @@ -137,9 +143,7 @@ Function Update-TabControl { $LegacyGUIcontextMenuStripItem6.Enabled = $false $LegacyGUIcontextMenuStripItem6.Visible = $false - $LegacyGUIactiveMinersLabel.Text = If ($Variables.MinersBest) { "Active miners updated $([DateTime]::Now.ToString())" } Else { "No miners running." } - - If (-not ($LegacyGUIcontextMenuStrip.Visible -and $LegacyGUIcontextMenuStrip.Enabled)) { + If (-not $LegacyGUIactiveMinersDGV.SelectedRows) { $LegacyGUIactiveMinersDGV.BeginInit() $LegacyGUIactiveMinersDGV.ClearSelection() $LegacyGUIactiveMinersDGV.DataSource = $Variables.MinersBest | Select-Object @( @@ -159,8 +163,9 @@ Function Update-TabControl { @{ Name = "Total active (hhh:mm:ss)"; Expression = { "{0}:{1:mm}:{1:ss}" -f [Math]::floor($_.TotalMiningDuration.TotalDays * 24), $_.TotalMiningDuration } } If ($LegacyGUIradioButtonPoolsUnavailable.checked) { @{ Name = "Reason"; Expression = { $_.Reasons -join ", " } } } ) | Sort-Object -Property "Device(s)" | Out-DataTable + $LegacyGUIactiveMinersDGV.ClearSelection() - If ($LegacyGUIactiveMinersDGV.Columns) { + If (-not $LegacyGUIactiveMinersDGV.ColumnWidthChanged -and $LegacyGUIactiveMinersDGV.Columns) { $LegacyGUIactiveMinersDGV.Columns[0].Visible = $false $LegacyGUIactiveMinersDGV.Columns[1].Visible = $false $LegacyGUIactiveMinersDGV.Columns[2].FillWeight = 30 + ($Variables.MinersBest.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 20 @@ -175,11 +180,13 @@ Function Update-TabControl { $LegacyGUIactiveMinersDGV.Columns[11].FillWeight = 50 + ($Variables.MinersBest.({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 25; $LegacyGUIactiveMinersDGV.Columns[11].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[11].HeaderCell.Style.Alignment = "MiddleRight" $LegacyGUIactiveMinersDGV.Columns[12].FillWeight = 65; $LegacyGUIactiveMinersDGV.Columns[12].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[12].HeaderCell.Style.Alignment = "MiddleRight" $LegacyGUIactiveMinersDGV.Columns[13].FillWeight = 65; $LegacyGUIactiveMinersDGV.Columns[13].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[13].HeaderCell.Style.Alignment = "MiddleRight" + + $LegacyGUIactiveMinersDGV | Add-Member ColumnWidthChanged $true } - Set-TableColor -DataGridView $LegacyGUIactiveMinersDGV Resize-Form # To fully show lauched miners gridview $LegacyGUIactiveMinersDGV.EndInit() } + Set-TableColor -DataGridView $LegacyGUIactiveMinersDGV Break } "Earnings" { @@ -279,49 +286,51 @@ Function Update-TabControl { Catch {} } If ($Config.BalancesTrackerPollInterval -gt 0) { + $LegacyGUIbalancesLabel.Text = "Balances data updated $(($Variables.Balances.Values.LastUpdated | Sort-Object -Bottom 1).ToLocalTime().ToString())" If ($Variables.Balances) { - $LegacyGUIbalancesLabel.Text = "Balances data updated $(($Variables.Balances.Values.LastUpdated | Sort-Object -Bottom 1).ToLocalTime().ToString())" + If (-not $LegacyGUIbalancesDGV.SelectedRows) { + $LegacyGUIbalancesDGV.BeginInit() + $LegacyGUIbalancesDGV.DataSource = $Variables.Balances.Values | Select-Object @( + @{ Name = "Currency"; Expression = { $_.Currency } }, + @{ Name = "Pool [Currency]"; Expression = { "$($_.Pool) [$($_.Currency)]" } }, + @{ Name = "Balance ($($Config.FIATcurrency))"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Balance * $Variables.Rates.($_.Currency).($Config.FIATcurrency)) } }, + @{ Name = "Avg. $($Config.FIATcurrency)/day"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.AvgDailyGrowth * $Variables.Rates.($_.Currency).($Config.FIATcurrency)) } }, + @{ Name = "$($Config.FIATcurrency) in 1h"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Growth1 * $Variables.Rates.($_.Currency).($Config.FIATcurrency)) } }, + @{ Name = "$($Config.FIATcurrency) in 6h"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Growth6 * $Variables.Rates.($_.Currency).($Config.FIATcurrency)) } }, + @{ Name = "$($Config.FIATcurrency) in 24h"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Growth24 * $Variables.Rates.($_.Currency).($Config.FIATcurrency)) } }, + @{ Name = "Projected pay date"; Expression = { If ($_.ProjectedPayDate -is [DateTime]) { $_.ProjectedPayDate.ToShortDateString() } Else { $_.ProjectedPayDate } } }, + @{ Name = "Payout threshold"; Expression = { If ($_.PayoutThresholdCurrency -eq "BTC" -and $Config.UsemBTC) { $PayoutThresholdCurrency = "mBTC"; $mBTCfactor = 1000 } Else { $PayoutThresholdCurrency = $_.PayoutThresholdCurrency; $mBTCfactor = 1 }; "{0:P2} of {1} {2} " -f ($_.Balance / $_.PayoutThreshold * $Variables.Rates.($_.Currency).($_.PayoutThresholdCurrency)), ($_.PayoutThreshold * $mBTCfactor), $PayoutThresholdCurrency } } + ) | Sort-Object -Property Pool | Out-DataTable + $LegacyGUIbalancesDGV.ClearSelection() + + If ($LegacyGUIbalancesDGV.Columns) { + $LegacyGUIbalancesDGV.Columns[0].Visible = $false + $LegacyGUIbalancesDGV.Columns[1].FillWeight = 140 + $LegacyGUIbalancesDGV.Columns[2].FillWeight = 90; $LegacyGUIbalancesDGV.Columns[2].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[2].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIbalancesDGV.Columns[3].FillWeight = 90; $LegacyGUIbalancesDGV.Columns[3].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[3].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIbalancesDGV.Columns[4].FillWeight = 75; $LegacyGUIbalancesDGV.Columns[4].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[4].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIbalancesDGV.Columns[5].FillWeight = 75; $LegacyGUIbalancesDGV.Columns[5].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[5].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIbalancesDGV.Columns[6].FillWeight = 75; $LegacyGUIbalancesDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIbalancesDGV.Columns[7].FillWeight = 80 + $LegacyGUIbalancesDGV.Columns[8].FillWeight = 100 + } + $LegacyGUIbalancesDGV.Rows.ForEach( + { + $_.Cells[2].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[2].Value * $Variables.Rates.($Config.FIATcurrency).($_.Cells[0].Value)) + $_.Cells[3].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[3].Value * $Variables.Rates.($Config.FIATcurrency).($_.Cells[0].Value)) + $_.Cells[4].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[4].Value * $Variables.Rates.($Config.FIATcurrency).($_.Cells[0].Value)) + $_.Cells[5].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[5].Value * $Variables.Rates.($Config.FIATcurrency).($_.Cells[0].Value)) + $_.Cells[6].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[6].Value * $Variables.Rates.($Config.FIATcurrency).($_.Cells[0].Value)) + } + ) + Resize-Form # To fully show lauched miners gridview + $LegacyGUIbalancesDGV.EndInit() + } } Else { $LegacyGUIbalancesLabel.Text = "Waiting for balances data..." + $LegacyGUIbalancesDGV.DataSource = $null } - - $LegacyGUIbalancesDGV.BeginInit() - $LegacyGUIbalancesDGV.ClearSelection() - $LegacyGUIbalancesDGV.DataSource = $Variables.Balances.Values | Select-Object @( - @{ Name = "Currency"; Expression = { $_.Currency } }, - @{ Name = "Pool [Currency]"; Expression = { "$($_.Pool) [$($_.Currency)]" } }, - @{ Name = "Balance ($($Config.FIATcurrency))"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Balance * $Variables.Rates.($_.Currency).($Config.FIATcurrency)) } }, - @{ Name = "Avg. $($Config.FIATcurrency)/day"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.AvgDailyGrowth * $Variables.Rates.($_.Currency).($Config.FIATcurrency)) } }, - @{ Name = "$($Config.FIATcurrency) in 1h"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Growth1 * $Variables.Rates.($_.Currency).($Config.FIATcurrency)) } }, - @{ Name = "$($Config.FIATcurrency) in 6h"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Growth6 * $Variables.Rates.($_.Currency).($Config.FIATcurrency)) } }, - @{ Name = "$($Config.FIATcurrency) in 24h"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Growth24 * $Variables.Rates.($_.Currency).($Config.FIATcurrency)) } }, - @{ Name = "Projected pay date"; Expression = { If ($_.ProjectedPayDate -is [DateTime]) { $_.ProjectedPayDate.ToShortDateString() } Else { $_.ProjectedPayDate } } }, - @{ Name = "Payout threshold"; Expression = { If ($_.PayoutThresholdCurrency -eq "BTC" -and $Config.UsemBTC) { $PayoutThresholdCurrency = "mBTC"; $mBTCfactor = 1000 } Else { $PayoutThresholdCurrency = $_.PayoutThresholdCurrency; $mBTCfactor = 1 }; "{0:P2} of {1} {2} " -f ($_.Balance / $_.PayoutThreshold * $Variables.Rates.($_.Currency).($_.PayoutThresholdCurrency)), ($_.PayoutThreshold * $mBTCfactor), $PayoutThresholdCurrency } } - ) | Sort-Object -Property Pool | Out-DataTable - - If ($LegacyGUIbalancesDGV.Columns) { - $LegacyGUIbalancesDGV.Columns[0].Visible = $false - $LegacyGUIbalancesDGV.Columns[1].FillWeight = 140 - $LegacyGUIbalancesDGV.Columns[2].FillWeight = 90; $LegacyGUIbalancesDGV.Columns[2].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[2].HeaderCell.Style.Alignment = "MiddleRight" - $LegacyGUIbalancesDGV.Columns[3].FillWeight = 90; $LegacyGUIbalancesDGV.Columns[3].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[3].HeaderCell.Style.Alignment = "MiddleRight" - $LegacyGUIbalancesDGV.Columns[4].FillWeight = 75; $LegacyGUIbalancesDGV.Columns[4].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[4].HeaderCell.Style.Alignment = "MiddleRight" - $LegacyGUIbalancesDGV.Columns[5].FillWeight = 75; $LegacyGUIbalancesDGV.Columns[5].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[5].HeaderCell.Style.Alignment = "MiddleRight" - $LegacyGUIbalancesDGV.Columns[6].FillWeight = 75; $LegacyGUIbalancesDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight" - $LegacyGUIbalancesDGV.Columns[7].FillWeight = 80 - $LegacyGUIbalancesDGV.Columns[8].FillWeight = 100 - } - $LegacyGUIbalancesDGV.Rows.ForEach( - { - $_.Cells[2].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[2].Value * $Variables.Rates.($Config.FIATcurrency).($_.Cells[0].Value)) - $_.Cells[3].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[3].Value * $Variables.Rates.($Config.FIATcurrency).($_.Cells[0].Value)) - $_.Cells[4].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[4].Value * $Variables.Rates.($Config.FIATcurrency).($_.Cells[0].Value)) - $_.Cells[5].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[5].Value * $Variables.Rates.($Config.FIATcurrency).($_.Cells[0].Value)) - $_.Cells[6].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[6].Value * $Variables.Rates.($Config.FIATcurrency).($_.Cells[0].Value)) - } - ) - Resize-Form # To fully show lauched miners gridview - $LegacyGUIbalancesDGV.EndInit() } Else { $LegacyGUIbalancesLabel.Text = "BalanceTracker is disabled (Configuration item 'BalancesTrackerPollInterval' -eq 0)" @@ -344,55 +353,61 @@ Function Update-TabControl { $LegacyGUIcontextMenuStripItem6.Text = "Remove watchdog timer" $LegacyGUIcontextMenuStripItem6.Visible = $true - If (-not ($LegacyGUIcontextMenuStrip.Visible -and $LegacyGUIcontextMenuStrip.Enabled)) { - - If ($LegacyGUIradioButtonMinersOptimal.checked) { $DataSource = $Variables.MinersOptimal } - ElseIf ($LegacyGUIradioButtonMinersUnavailable.checked) { $DataSource = $Variables.Miners.Where({ -not $_.Available }) } - Else { $DataSource = $Variables.Miners } - - $LegacyGUIminersDGV.BeginInit() - $LegacyGUIminersDGV.ClearSelection() - $LegacyGUIminersDGV.DataSource = $DataSource | Select-Object @( - @{ Name = "Info"; Expression = { $_.Info } }, - @{ Name = "SubStatus"; Expression = { $_.SubStatus } }, - @{ Name = "Best"; Expression = { $_.Best } }, - @{ Name = "Miner"; Expression = { $_.Name } }, - @{ Name = "Device(s)"; Expression = { $_.DeviceNames -join ", " } }, - @{ Name = "Status"; Expression = { $_.Status } }, - @{ Name = "Earning (biased) $($Config.FIATcurrency)/day"; Expression = { If ([Double]::IsNaN($_.Earning_Bias)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Earning * $Variables.Rates.BTC.($Config.FIATcurrency)) } } }, - @{ Name = "Power cost $($Config.FIATcurrency)/day"; Expression = { If ( [Double]::IsNaN($_.PowerCost)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Powercost * $Variables.Rates.BTC.($Config.FIATcurrency)) } } }, - @{ Name = "Profit (biased) $($Config.FIATcurrency)/day"; Expression = { If ([Double]::IsNaN($_.Profit_Bias) -or -not $Variables.CalculatePowerCost) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Profit * $Variables.Rates.BTC.($Config.FIATcurrency)) } } }, - @{ Name = "Power consumption"; Expression = { If ($_.MeasurePowerConsumption) { If ($_.Status -eq "Running") { "Measuring..." } Else { "Unmeasured" } } Else { If ([Double]::IsNaN($_.PowerConsumption)) { "n/a" } Else { "$($_.PowerConsumption.ToString("N2")) W" } } } } - @{ Name = "Algorithm (variant)"; Expression = { $_.Workers.Pool.AlgorithmVariant -join " & "} }, - @{ Name = "Pool"; Expression = { $_.Workers.Pool.Name -join " & " } }, - @{ Name = "Hashrate"; Expression = { If ($_.Benchmark) { If ($_.Status -eq "Running") { "Benchmarking..." } Else { "Benchmark pending" } } Else { $_.Workers.ForEach({ $_.Hashrate | ConvertTo-Hash }) -join " & " } } } - If ($LegacyGUIradioButtonMinersUnavailable.checked -or $LegacyGUIradioButtonMiners.checked) { @{ Name = "Reason(s)"; Expression = { $_.Reasons -join ", "} } } - ) | Sort-Object @{ Expression = { $_.Best }; Descending = $true }, "Device(s)", Info | Out-DataTable - - If ($LegacyGUIminersDGV.Columns) { - $LegacyGUIminersDGV.Columns[0].Visible = $false - $LegacyGUIminersDGV.Columns[1].Visible = $false - $LegacyGUIminersDGV.Columns[2].Visible = $false - $LegacyGUIminersDGV.Columns[3].FillWeight = 160 - $LegacyGUIminersDGV.Columns[4].FillWeight = 25 + ($DataSource.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 25 - $LegacyGUIminersDGV.Columns[5].Visible = -not $LegacyGUIradioButtonMinersUnavailable.checked; $LegacyGUIminersDGV.Columns[5].FillWeight = 50 - $LegacyGUIminersDGV.Columns[6].FillWeight = 55; $LegacyGUIminersDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight" - $LegacyGUIminersDGV.Columns[7].FillWeight = 60; $LegacyGUIminersDGV.Columns[7].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[7].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[7].Visible = $Variables.CalculatePowerCost - $LegacyGUIminersDGV.Columns[8].FillWeight = 55; $LegacyGUIminersDGV.Columns[8].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[8].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[8].Visible = $Variables.CalculatePowerCost - $LegacyGUIminersDGV.Columns[9].FillWeight = 55; $LegacyGUIminersDGV.Columns[9].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[9].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[9].Visible = $Variables.CalculatePowerCost - $LegacyGUIminersDGV.Columns[10].FillWeight = 60 + ($DataSource.ForEach({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 30 - $LegacyGUIminersDGV.Columns[11].FillWeight = 60 + ($DataSource.ForEach({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 30 - $LegacyGUIminersDGV.Columns[12].FillWeight = 50 + ($DataSource.ForEach({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 25; $LegacyGUIminersDGV.Columns[12].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[12].HeaderCell.Style.Alignment = "MiddleRight" - } - Set-TableColor -DataGridView $LegacyGUIminersDGV - $LegacyGUIminersDGV.EndInit() - } + If ($LegacyGUIradioButtonMinersOptimal.checked) { $DataSource = $Variables.MinersOptimal } + ElseIf ($LegacyGUIradioButtonMinersUnavailable.checked) { $DataSource = $Variables.Miners.Where({ -not $_.Available }) } + Else { $DataSource = $Variables.Miners } - If ($LegacyGUIminersDGV.Columns) { $LegacyGUIminersLabel.Text = "Miner data updated $([DateTime]::Now.ToString())" } - ElseIf ($Variables.MiningStatus -eq "Idle") { $LegacyGUIminersLabel.Text = "No data - mining is stopped" } + If ($Variables.MiningStatus -eq "Idle") { $LegacyGUIminersLabel.Text = "No data - mining is stopped" } ElseIf ($Variables.MiningStatus -eq "Paused") { $LegacyGUIminersLabel.Text = "No data - mining is paused" } ElseIf ($Variables.MiningStatus -eq "Running" -and -not $Global:CoreRunspace) { $LegacyGUIminersLabel.Text = "No data - mining is suspended" } - Else { $LegacyGUIminersLabel.Text = "Waiting for data..." } + ElseIf ($DataSource) { + If (-not $LegacyGUIminersDGV.SelectedRows) { + $LegacyGUIminersLabel.Text = "Miner data updated $([DateTime]::Now.ToString())" + $LegacyGUIminersDGV.BeginInit() + $LegacyGUIminersDGV.ClearSelection() + $LegacyGUIminersDGV.DataSource = $DataSource | Select-Object @( + @{ Name = "Info"; Expression = { $_.Info } }, + @{ Name = "SubStatus"; Expression = { $_.SubStatus } }, + @{ Name = "Best"; Expression = { $_.Best } }, + @{ Name = "Miner"; Expression = { $_.Name } }, + @{ Name = "Device(s)"; Expression = { $_.DeviceNames -join ", " } }, + @{ Name = "Status"; Expression = { $_.Status } }, + @{ Name = "Earning (biased) $($Config.FIATcurrency)/day"; Expression = { If ([Double]::IsNaN($_.Earning_Bias)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Earning * $Variables.Rates.BTC.($Config.FIATcurrency)) } } }, + @{ Name = "Power cost $($Config.FIATcurrency)/day"; Expression = { If ( [Double]::IsNaN($_.PowerCost)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Powercost * $Variables.Rates.BTC.($Config.FIATcurrency)) } } }, + @{ Name = "Profit (biased) $($Config.FIATcurrency)/day"; Expression = { If ([Double]::IsNaN($_.Profit_Bias) -or -not $Variables.CalculatePowerCost) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Profit * $Variables.Rates.BTC.($Config.FIATcurrency)) } } }, + @{ Name = "Power consumption"; Expression = { If ($_.MeasurePowerConsumption) { If ($_.Status -eq "Running") { "Measuring..." } Else { "Unmeasured" } } Else { If ([Double]::IsNaN($_.PowerConsumption)) { "n/a" } Else { "$($_.PowerConsumption.ToString("N2")) W" } } } } + @{ Name = "Algorithm (variant)"; Expression = { $_.Workers.Pool.AlgorithmVariant -join " & "} }, + @{ Name = "Pool"; Expression = { $_.Workers.Pool.Name -join " & " } }, + @{ Name = "Hashrate"; Expression = { If ($_.Benchmark) { If ($_.Status -eq "Running") { "Benchmarking..." } Else { "Benchmark pending" } } Else { $_.Workers.ForEach({ $_.Hashrate | ConvertTo-Hash }) -join " & " } } } + If ($LegacyGUIradioButtonMinersUnavailable.checked -or $LegacyGUIradioButtonMiners.checked) { @{ Name = "Reason(s)"; Expression = { $_.Reasons -join ", "} } } + ) | Sort-Object @{ Expression = { $_.Best }; Descending = $true }, "Device(s)", Info | Out-DataTable + $LegacyGUIminersDGV.ClearSelection() + + If (-not $LegacyGUIminersDGV.ColumnWidthChanged -and $LegacyGUIminersDGV.Columns) { + $LegacyGUIminersDGV.Columns[0].Visible = $false + $LegacyGUIminersDGV.Columns[1].Visible = $false + $LegacyGUIminersDGV.Columns[2].Visible = $false + $LegacyGUIminersDGV.Columns[3].FillWeight = 160 + $LegacyGUIminersDGV.Columns[4].FillWeight = 25 + ($DataSource.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 25 + $LegacyGUIminersDGV.Columns[5].Visible = -not $LegacyGUIradioButtonMinersUnavailable.checked; $LegacyGUIminersDGV.Columns[5].FillWeight = 50 + $LegacyGUIminersDGV.Columns[6].FillWeight = 55; $LegacyGUIminersDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIminersDGV.Columns[7].FillWeight = 60; $LegacyGUIminersDGV.Columns[7].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[7].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[7].Visible = $Variables.CalculatePowerCost + $LegacyGUIminersDGV.Columns[8].FillWeight = 55; $LegacyGUIminersDGV.Columns[8].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[8].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[8].Visible = $Variables.CalculatePowerCost + $LegacyGUIminersDGV.Columns[9].FillWeight = 55; $LegacyGUIminersDGV.Columns[9].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[9].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[9].Visible = $Variables.CalculatePowerCost + $LegacyGUIminersDGV.Columns[10].FillWeight = 60 + ($DataSource.ForEach({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 30 + $LegacyGUIminersDGV.Columns[11].FillWeight = 60 + ($DataSource.ForEach({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 30 + $LegacyGUIminersDGV.Columns[12].FillWeight = 50 + ($DataSource.ForEach({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 25; $LegacyGUIminersDGV.Columns[12].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[12].HeaderCell.Style.Alignment = "MiddleRight" + + $LegacyGUIminersDGV | Add-Member ColumnWidthChanged $true + } + $LegacyGUIminersDGV.EndInit() + } + } + Else { + $LegacyGUIminersLabel.Text = "Waiting for data..." + $LegacyGUIminersDGV.DataSource = $null + } + Set-TableColor -DataGridView $LegacyGUIminersDGV Break } "Pools" { @@ -405,126 +420,126 @@ Function Update-TabControl { $LegacyGUIcontextMenuStripItem5.Visible = $false $LegacyGUIcontextMenuStripItem6.Visible = $false - If (-not ($LegacyGUIcontextMenuStrip.Visible -and $LegacyGUIcontextMenuStrip.Enabled)) { + If ($LegacyGUIradioButtonPoolsBest.checked) { $DataSource = $Variables.PoolsBest } + ElseIf ($LegacyGUIradioButtonPoolsUnavailable.checked) { $DataSource = $Variables.Pools.Where({ -not $_.Available }) } + Else { $DataSource = $Variables.Pools } - If ($LegacyGUIradioButtonPoolsBest.checked) { $DataSource = $Variables.PoolsBest } - ElseIf ($LegacyGUIradioButtonPoolsUnavailable.checked) { $DataSource = $Variables.Pools.Where({ -not $_.Available }) } - Else { $DataSource = $Variables.Pools } - - If ($Config.UsemBTC) { - $Factor = 1000 - $Unit = "mBTC" - } - Else { - $Factor = 1 - $Unit = "BTC" - } - - $LegacyGUIpoolsDGV.BeginInit() - $LegacyGUIpoolsDGV.ClearSelection() - $LegacyGUIpoolsDGV.DataSource = $DataSource | Sort-Object -Property AlgorithmVariant, Currency, Name | Select-Object @( - @{ Name = "Algorithm (variant)"; Expression = { $_.AlgorithmVariant } } - @{ Name = "Currency"; Expression = { $_.Currency } } - @{ Name = "Coin name"; Expression = { $_.CoinName } } - @{ Name = "$Unit/GH/Day (biased)"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Price_Bias * [Math]::Pow(1024, 3) * $Factor) } } - @{ Name = "Accuracy"; Expression = { "{0:p2}" -f $_.Accuracy } } - @{ Name = "Pool name"; Expression = { $_.Name } } - @{ Name = "Host"; Expression = { $_.Host } } - @{ Name = "Port"; Expression = { "$(If ($_.Port) { $_.Port } Else { "-" })" } } - @{ Name = "SSL port"; Expression = { "$(If ($_.PortSSL) { $_.PortSSL } Else { "-" })" } } - @{ Name = "Earnings adjustment factor"; Expression = { $_.EarningsAdjustmentFactor } } - @{ Name = "Fee"; Expression = { "{0:p2}" -f $_.Fee } } - If ($LegacyGUIradioButtonPoolsUnavailable.checked -or $LegacyGUIradioButtonPools.checked) { @{ Name = "Reason(s)"; Expression = { $_.Reasons -join ", "} } } - ) | Out-DataTable - - If ($LegacyGUIpoolsDGV.Columns) { - $LegacyGUIpoolsDGV.Columns[0].FillWeight = 80 - $LegacyGUIpoolsDGV.Columns[1].FillWeight = 40 - $LegacyGUIpoolsDGV.Columns[2].FillWeight = 70 - $LegacyGUIpoolsDGV.Columns[3].FillWeight = 55; $LegacyGUIpoolsDGV.Columns[3].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIpoolsDGV.Columns[3].HeaderCell.Style.Alignment = "MiddleRight" - $LegacyGUIpoolsDGV.Columns[4].FillWeight = 45; $LegacyGUIpoolsDGV.Columns[4].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIpoolsDGV.Columns[4].HeaderCell.Style.Alignment = "MiddleRight" - $LegacyGUIpoolsDGV.Columns[5].FillWeight = 80 - $LegacyGUIpoolsDGV.Columns[6].FillWeight = 140 - $LegacyGUIpoolsDGV.Columns[7].FillWeight = 40; $LegacyGUIpoolsDGV.Columns[7].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIpoolsDGV.Columns[7].HeaderCell.Style.Alignment = "MiddleRight" - $LegacyGUIpoolsDGV.Columns[8].FillWeight = 40; $LegacyGUIpoolsDGV.Columns[8].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIpoolsDGV.Columns[8].HeaderCell.Style.Alignment = "MiddleRight" - $LegacyGUIpoolsDGV.Columns[9].FillWeight = 50; $LegacyGUIpoolsDGV.Columns[9].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIpoolsDGV.Columns[9].HeaderCell.Style.Alignment = "MiddleRight" - $LegacyGUIpoolsDGV.Columns[10].FillWeight = 40; $LegacyGUIpoolsDGV.Columns[10].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIpoolsDGV.Columns[10].HeaderCell.Style.Alignment = "MiddleRight" + If ($Variables.MiningStatus -eq "Idle") { $LegacyGUIpoolsLabel.Text = "No data - mining is stopped" } + ElseIf ($Variables.MiningStatus -eq "Paused") { $LegacyGUIpoolsLabel.Text = "No data - mining is paused" } + ElseIf ($Variables.MiningStatus -eq "Running" -and -not $Global:CoreRunspace) { $LegacyGUIminersLabel.Text = "No data - mining is suspended" } + ElseIf ($DataSource) { + If (-not $LegacyGUIpoolsDGV.SelectedRows) { + $LegacyGUIpoolsLabel.Text = "Pool data updated $([DateTime]::Now.ToString())" + $LegacyGUIpoolsDGV.BeginInit() + If ($Config.UsemBTC) { + $Factor = 1000 + $Unit = "mBTC" + } + Else { + $Factor = 1 + $Unit = "BTC" + } + $LegacyGUIpoolsDGV.DataSource = $DataSource | Sort-Object -Property AlgorithmVariant, Currency, Name | Select-Object @( + @{ Name = "Algorithm (variant)"; Expression = { $_.AlgorithmVariant } } + @{ Name = "Currency"; Expression = { $_.Currency } } + @{ Name = "Coin name"; Expression = { $_.CoinName } } + @{ Name = "$Unit/GH/Day (biased)"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Price_Bias * [Math]::Pow(1024, 3) * $Factor) } } + @{ Name = "Accuracy"; Expression = { "{0:p2}" -f $_.Accuracy } } + @{ Name = "Pool name"; Expression = { $_.Name } } + @{ Name = "Host"; Expression = { $_.Host } } + @{ Name = "Port"; Expression = { "$(If ($_.Port) { $_.Port } Else { "-" })" } } + @{ Name = "SSL port"; Expression = { "$(If ($_.PortSSL) { $_.PortSSL } Else { "-" })" } } + @{ Name = "Earnings adjustment factor"; Expression = { $_.EarningsAdjustmentFactor } } + @{ Name = "Fee"; Expression = { "{0:p2}" -f $_.Fee } } + If ($LegacyGUIradioButtonPoolsUnavailable.checked -or $LegacyGUIradioButtonPools.checked) { @{ Name = "Reason(s)"; Expression = { $_.Reasons -join ", "} } } + ) | Out-DataTable + $LegacyGUIpoolsDGV.ClearSelection() + + If (-not $LegacyGUIpoolsDGV.ColumnWidthChanged -and $LegacyGUIpoolsDGV.Columns) { + $LegacyGUIpoolsDGV.Columns[0].FillWeight = 80 + $LegacyGUIpoolsDGV.Columns[1].FillWeight = 40 + $LegacyGUIpoolsDGV.Columns[2].FillWeight = 70 + $LegacyGUIpoolsDGV.Columns[3].FillWeight = 55; $LegacyGUIpoolsDGV.Columns[3].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIpoolsDGV.Columns[3].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIpoolsDGV.Columns[4].FillWeight = 45; $LegacyGUIpoolsDGV.Columns[4].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIpoolsDGV.Columns[4].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIpoolsDGV.Columns[5].FillWeight = 80 + $LegacyGUIpoolsDGV.Columns[6].FillWeight = 140 + $LegacyGUIpoolsDGV.Columns[7].FillWeight = 40; $LegacyGUIpoolsDGV.Columns[7].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIpoolsDGV.Columns[7].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIpoolsDGV.Columns[8].FillWeight = 40; $LegacyGUIpoolsDGV.Columns[8].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIpoolsDGV.Columns[8].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIpoolsDGV.Columns[9].FillWeight = 50; $LegacyGUIpoolsDGV.Columns[9].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIpoolsDGV.Columns[9].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIpoolsDGV.Columns[10].FillWeight = 40; $LegacyGUIpoolsDGV.Columns[10].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIpoolsDGV.Columns[10].HeaderCell.Style.Alignment = "MiddleRight" + + $LegacyGUIpoolsDGV | Add-Member ColumnWidthChanged $true + } + $LegacyGUIpoolsDGV.EndInit() } - $LegacyGUIpoolsDGV.EndInit() + } + Else { + $LegacyGUIpoolsLabel.Text = "Waiting for data..." + $LegacyGUIpoolsDGV.DataSource = $null } - If ($LegacyGUIpoolsDGV.Columns) { $LegacyGUIpoolsLabel.Text = "Pool data updated $([DateTime]::Now.ToString())" } - ElseIf ($Variables.MiningStatus -eq "Idle") { $LegacyGUIpoolsLabel.Text = "No data - mining is stopped" } - ElseIf ($Variables.MiningStatus -eq "Paused") { $LegacyGUIpoolsLabel.Text = "No data - mining is paused" } - ElseIf ($Variables.MiningStatus -eq "Running" -and -not $Global:CoreRunspace) { $LegacyGUIminersLabel.Text = "No data - mining is suspended" } - Else { $LegacyGUIpoolsLabel.Text = "Waiting for data..." } Break } # "Rig monitor" { # $LegacyGUIworkersDGV.Visible = $Config.ShowWorkerStatus # $LegacyGUIeditMonitoringLink.Visible = $Variables.APIRunspace.APIport - + # # If ($Config.ShowWorkerStatus) { - - # Read-MonitoringData | Out-Null - - # If ($Variables.Workers) { $LegacyGUIworkersLabel.Text = "Worker status updated $($Variables.WorkersLastUpdated.ToString())" } - # ElseIf ($Variables.MiningStatus -eq "Idle") { $LegacyGUIworkersLabel.Text = "No data - mining is stopped" } - # ElseIf ($Variables.MiningStatus -eq "Paused") { $LegacyGUIworkersLabel.Text = "No data - mining is paused" } - # ElseIf ($Variables.MiningStatus -eq "Running" -and -not $Global:CoreRunspace) { $LegacyGUIminersLabel.Text = "No data - mining is suspended" } - # Else { $LegacyGUIworkersLabel.Text = "Waiting for data..." } - - # $nl = "`n" # Must use variable, cannot join with '`n' directly - - # $LegacyGUIworkersDGV.BeginInit() - # $LegacyGUIworkersDGV.ClearSelection() - # $LegacyGUIworkersDGV.DataSource = $Variables.Workers | Select-Object @( - # @{ Name = "Worker"; Expression = { $_.worker } }, - # @{ Name = "Status"; Expression = { $_.status } }, - # @{ Name = "Last seen"; Expression = { (Get-TimeSince $_.date) } }, - # @{ Name = "Version"; Expression = { $_.version } }, - # @{ Name = "Currency"; Expression = { $_.data.Currency | Select-Object -Unique } }, - # @{ Name = "Estimated earning/day"; Expression = { If ($null -ne $_.Data) { "{0:n$($Config.DecimalsMax)}" -f (($_.Data.Earning.Where({ -not [Double]::IsNaN($_) }) | Measure-Object -Sum).Sum * $Variables.Rates.BTC.($_.data.Currency | Select-Object -Unique)) } } }, - # @{ Name = "Estimated profit/day"; Expression = { If ($null -ne $_.Data) { " {0:n$($Config.DecimalsMax)}" -f (($_.Data.Profit.Where({ -not [Double]::IsNaN($_) }) | Measure-Object -Sum).Sum * $Variables.Rates.BTC.($_.data.Currency | Select-Object -Unique)) } } }, - # @{ Name = "Miner"; Expression = { $_.data.Name -join $nl } }, - # @{ Name = "Pool"; Expression = { $_.data.ForEach({ $_.Pool -split "," -join " & " }) -join $nl } }, - # @{ Name = "Algorithm"; Expression = { $_.data.ForEach({ $_.Algorithm -split "," -join " & " }) -join $nl } }, - # @{ Name = "Live hashrate"; Expression = { $_.data.ForEach({ $_.CurrentSpeed.ForEach({ If ([Double]::IsNaN($_)) { "n/a" } Else { $_ | ConvertTo-Hash } }) -join " & " }) -join $nl } }, - # @{ Name = "Benchmark hashrate(s)"; Expression = { $_.data.ForEach({ $_.EstimatedSpeed.ForEach({ If ([Double]::IsNaN($_)) { "n/a" } Else { $_ | ConvertTo-Hash } }) -join " & " }) -join $nl } } - # ) | Sort-Object -Property "Worker" | Out-DataTable - # If ($LegacyGUIworkersDGV.Columns) { - # $LegacyGUIworkersDGV.Columns[0].FillWeight = 70 - # $LegacyGUIworkersDGV.Columns[1].FillWeight = 60 - # $LegacyGUIworkersDGV.Columns[2].FillWeight = 80 - # $LegacyGUIworkersDGV.Columns[3].FillWeight = 70 - # $LegacyGUIworkersDGV.Columns[4].FillWeight = 40 - # $LegacyGUIworkersDGV.Columns[5].FillWeight = 65; $LegacyGUIworkersDGV.Columns[5].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[5].HeaderCell.Style.Alignment = "MiddleRight" - # $LegacyGUIworkersDGV.Columns[6].FillWeight = 65; $LegacyGUIworkersDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight" - # $LegacyGUIworkersDGV.Columns[7].FillWeight = 150 - # $LegacyGUIworkersDGV.Columns[8].FillWeight = 95 - # $LegacyGUIworkersDGV.Columns[9].FillWeight = 75 - # $LegacyGUIworkersDGV.Columns[10].FillWeight = 65; $LegacyGUIworkersDGV.Columns[10].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[10].HeaderCell.Style.Alignment = "MiddleRight" - # $LegacyGUIworkersDGV.Columns[11].FillWeight = 65; $LegacyGUIworkersDGV.Columns[11].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[11].HeaderCell.Style.Alignment = "MiddleRight" + # If (-not $LegacyGUIactiveMinersDGV.SelectedRows) { + # + # Read-MonitoringData | Out-Null + # + # If ($Variables.Workers) { $LegacyGUIworkersLabel.Text = "Worker status updated $($Variables.WorkersLastUpdated.ToString())" } + # ElseIf ($Variables.MiningStatus -eq "Idle") { $LegacyGUIworkersLabel.Text = "No data - mining is stopped" } + # ElseIf ($Variables.MiningStatus -eq "Paused") { $LegacyGUIworkersLabel.Text = "No data - mining is paused" } + # ElseIf ($Variables.MiningStatus -eq "Running" -and -not $Global:CoreRunspace) { $LegacyGUIminersLabel.Text = "No data - mining is suspended" } + # Else { $LegacyGUIworkersLabel.Text = "Waiting for data..." } + # + # $LegacyGUIworkersDGV.BeginInit() + # $LegacyGUIworkersDGV.ClearSelection() + # $LegacyGUIworkersDGV.DataSource = $Variables.Workers | Select-Object @( + # @{ Name = "Worker"; Expression = { $_.worker } }, + # @{ Name = "Status"; Expression = { $_.status } }, + # @{ Name = "Last seen"; Expression = { (Get-TimeSince $_.date) } }, + # @{ Name = "Version"; Expression = { $_.version } }, + # @{ Name = "Currency"; Expression = { $_.data.Currency | Select-Object -Unique } }, + # @{ Name = "Estimated earning/day"; Expression = { If ($null -ne $_.Data) { "{0:n$($Config.DecimalsMax)}" -f (($_.Data.Earning.Where({ -not [Double]::IsNaN($_) }) | Measure-Object -Sum).Sum * $Variables.Rates.BTC.($_.data.Currency | Select-Object -Unique)) } } }, + # @{ Name = "Estimated profit/day"; Expression = { If ($null -ne $_.Data) { " {0:n$($Config.DecimalsMax)}" -f (($_.Data.Profit.Where({ -not [Double]::IsNaN($_) }) | Measure-Object -Sum).Sum * $Variables.Rates.BTC.($_.data.Currency | Select-Object -Unique)) } } }, + # @{ Name = "Miner"; Expression = { $_.data.Name -join $nl } }, + # @{ Name = "Pool"; Expression = { $_.data.ForEach({ $_.Pool -split "," -join " & " }) -join $nl } }, + # @{ Name = "Algorithm"; Expression = { $_.data.ForEach({ $_.Algorithm -split "," -join " & " }) -join $nl } }, + # @{ Name = "Live hashrate"; Expression = { $_.data.ForEach({ $_.CurrentSpeed.ForEach({ If ([Double]::IsNaN($_)) { "n/a" } Else { $_ | ConvertTo-Hash } }) -join " & " }) -join $nl } }, + # @{ Name = "Benchmark hashrate(s)"; Expression = { $_.data.ForEach({ $_.EstimatedSpeed.ForEach({ If ([Double]::IsNaN($_)) { "n/a" } Else { $_ | ConvertTo-Hash } }) -join " & " }) -join $nl } } + # ) | Sort-Object -Property "Worker" | Out-DataTable + # $LegacyGUIworkersDGV.ClearSelection() + # + # If (-not $LegacyGUIworkersDGV.ColumnWidthChanged -and $LegacyGUIworkersDGV.Columns) { + # $LegacyGUIworkersDGV.Columns[0].FillWeight = 70 + # $LegacyGUIworkersDGV.Columns[1].FillWeight = 60 + # $LegacyGUIworkersDGV.Columns[2].FillWeight = 80 + # $LegacyGUIworkersDGV.Columns[3].FillWeight = 70 + # $LegacyGUIworkersDGV.Columns[4].FillWeight = 40 + # $LegacyGUIworkersDGV.Columns[5].FillWeight = 65; $LegacyGUIworkersDGV.Columns[5].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[5].HeaderCell.Style.Alignment = "MiddleRight" + # $LegacyGUIworkersDGV.Columns[6].FillWeight = 65; $LegacyGUIworkersDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight" + # $LegacyGUIworkersDGV.Columns[7].FillWeight = 150 + # $LegacyGUIworkersDGV.Columns[8].FillWeight = 95 + # $LegacyGUIworkersDGV.Columns[9].FillWeight = 75 + # $LegacyGUIworkersDGV.Columns[10].FillWeight = 65; $LegacyGUIworkersDGV.Columns[10].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[10].HeaderCell.Style.Alignment = "MiddleRight" + # $LegacyGUIworkersDGV.Columns[11].FillWeight = 65; $LegacyGUIworkersDGV.Columns[11].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[11].HeaderCell.Style.Alignment = "MiddleRight" + # + # $LegacyGUIworkersDGV | Add-Member ColumnWidthChanged $true + # } + # Set-WorkerColor + # $LegacyGUIworkersDGV.EndInit() # } - # Set-WorkerColor - # $LegacyGUIworkersDGV.EndInit() # } # Else { # $LegacyGUIworkersLabel.Text = "Worker status reporting is disabled$(If (-not $Variables.APIRunspace) { " (Configuration item 'ShowWorkerStatus' -eq `$false)" })." + # $LegacyGUIworkersDGV.DataSource = $null # } # Break # } "Switching Log" { - $LegacyGUIcheckShowSwitchingCPU.Enabled = [Boolean]($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName -and $_.Type -eq "CPU" })) - $LegacyGUIcheckShowSwitchingAMD.Enabled = [Boolean]($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName -and $_.Type -eq "GPU" -and $_.Vendor -eq "AMD" })) - $LegacyGUIcheckShowSwitchingINTEL.Enabled = [Boolean]($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName -and $_.Type -eq "GPU" -and $_.Vendor -eq "INTEL" })) - $LegacyGUIcheckShowSwitchingNVIDIA.Enabled = [Boolean]($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName -and $_.Type -eq "GPU" -and $_.Vendor -eq "NVIDIA" })) - - $LegacyGUIcheckShowSwitchingCPU.Checked = $LegacyGUIcheckShowSwitchingCPU.Enabled - $LegacyGUIcheckShowSwitchingAMD.Checked = $LegacyGUIcheckShowSwitchingAMD.Enabled - $LegacyGUIcheckShowSwitchingINTEL.Checked = $LegacyGUIcheckShowSwitchingINTEL.Enabled - $LegacyGUIcheckShowSwitchingNVIDIA.Checked = $LegacyGUIcheckShowSwitchingNVIDIA.Enabled - CheckBoxSwitching_Click Break } @@ -534,33 +549,39 @@ Function Update-TabControl { If ($Config.Watchdog) { If ($Variables.WatchdogTimers) { - $LegacyGUIwatchdogTimersLabel.Text = "Watchdog timers updated $([DateTime]::Now.ToString())" + If (-not $LegacyGUIwatchdogTimersDGV.SelectedRows) { + $LegacyGUIwatchdogTimersLabel.Text = "Watchdog timers updated $([DateTime]::Now.ToString())" + $LegacyGUIwatchdogTimersDGV.BeginInit() + $LegacyGUIwatchdogTimersDGV.ClearSelection() + $LegacyGUIwatchdogTimersDGV.DataSource = $Variables.WatchdogTimers | Sort-Object -Property MinerName, Kicked | Select-Object @( + @{ Name = "Name"; Expression = { $_.MinerName } }, + @{ Name = "Algorithms"; Expression = { $_.Algorithm } }, + @{ Name = "Pool name"; Expression = { $_.PoolName } }, + @{ Name = "Region"; Expression = { $_.PoolRegion } }, + @{ Name = "Device(s)"; Expression = { $_.DeviceNames -join ", " } }, + @{ Name = "Last updated"; Expression = { (Get-TimeSince $_.Kicked.ToLocalTime()) } } + ) | Out-DataTable + $LegacyGUIwatchdogTimersDGV.ClearSelection() + + If (-not $LegacyGUIwatchdogTimersDGV.ColumnWidthChanged -and $LegacyGUIwatchdogTimersDGV.Columns) { + $LegacyGUIwatchdogTimersDGV.Columns[0].FillWeight = 120 + $LegacyGUIwatchdogTimersDGV.Columns[1].FillWeight = 100 + $LegacyGUIwatchdogTimersDGV.Columns[2].FillWeight = 100 + $LegacyGUIwatchdogTimersDGV.Columns[3].FillWeight = 60 + $LegacyGUIwatchdogTimersDGV.Columns[4].FillWeight = 30 + ($Variables.WatchdogTimers.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 20 + $LegacyGUIwatchdogTimersDGV.Columns[5].FillWeight = 100 + + $LegacyGUIwatchdogTimersDGV | Add-Member ColumnWidthChanged $true + } + $LegacyGUIwatchdogTimersDGV.EndInit() + } } - Else { $LegacyGUIwatchdogTimersLabel.Text = "Watchdog timers - no data" } - - $LegacyGUIwatchdogTimersDGV.BeginInit() - $LegacyGUIwatchdogTimersDGV.ClearSelection() - $LegacyGUIwatchdogTimersDGV.DataSource = $Variables.WatchdogTimers | Sort-Object -Property MinerName, Kicked | Select-Object @( - @{ Name = "Name"; Expression = { $_.MinerName } }, - @{ Name = "Algorithms"; Expression = { $_.Algorithm } }, - @{ Name = "Pool name"; Expression = { $_.PoolName } }, - @{ Name = "Region"; Expression = { $_.PoolRegion } }, - @{ Name = "Device(s)"; Expression = { $_.DeviceNames -join ", " } }, - @{ Name = "Last updated"; Expression = { (Get-TimeSince $_.Kicked.ToLocalTime()) } } - ) | Out-DataTable - If ($LegacyGUIwatchdogTimersDGV.Columns) { - $LegacyGUIwatchdogTimersDGV.Columns[0].FillWeight = 120 - $LegacyGUIwatchdogTimersDGV.Columns[1].FillWeight = 100 - $LegacyGUIwatchdogTimersDGV.Columns[2].FillWeight = 100 - $LegacyGUIwatchdogTimersDGV.Columns[3].FillWeight = 60 - $LegacyGUIwatchdogTimersDGV.Columns[4].FillWeight = 30 + ($Variables.WatchdogTimers.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 20 - $LegacyGUIwatchdogTimersDGV.Columns[5].FillWeight = 100 + Else { + $LegacyGUIwatchdogTimersLabel.Text = "Watchdog timers - no data" + $LegacyGUIwatchdogTimersDGV.DataSource = $null } - $LegacyGUIwatchdogTimersDGV.EndInit() - } - Else { - $LegacyGUIwatchdogTimersLabel.Text = "Watchdog is disabled (Configuration item 'Watchdog' -eq `$false)" } + Else { $LegacyGUIwatchdogTimersLabel.Text = "Watchdog is disabled (Configuration item 'Watchdog' -eq `$false)" } $LegacyGUIwatchdogTimersRemoveButton.Enabled = [Boolean]$LegacyGUIwatchdogTimersDGV.Rows } @@ -1152,7 +1173,11 @@ $LegacyGUIactiveMinersDGV.Add_MouseUP( } } ) -$LegacyGUIactiveMinersDGV.Add_Sorted({ Set-TableColor -DataGridView $LegacyGUIactiveMinersDGV }) +$LegacyGUIactiveMinersDGV.Add_Sorted( + { + Set-TableColor -DataGridView $LegacyGUIactiveMinersDGV + } +) Set-DataGridViewDoubleBuffer -Grid $LegacyGUIactiveMinersDGV -Enabled $true $LegacyGUIstatusPageControls += $LegacyGUIactiveMinersDGV @@ -1303,6 +1328,11 @@ $LegacyGUIminersDGV.Name = "MinersDGV" $LegacyGUIminersDGV.ReadOnly = $true $LegacyGUIminersDGV.RowHeadersVisible = $false $LegacyGUIminersDGV.SelectionMode = "FullRowSelect" +$LegacyGUIminersDGV.Add_ColumnWidthChanged( + { + $LegacyGUIminersDGV.ColumnWidthChanged = $true + } +) $LegacyGUIminersDGV.Add_MouseUP( { If ($_.Button -eq [System.Windows.Forms.MouseButtons]::Right) { @@ -1310,7 +1340,11 @@ $LegacyGUIminersDGV.Add_MouseUP( } } ) -$LegacyGUIminersDGV.Add_Sorted({ Set-TableColor -DataGridView $LegacyGUIminersDGV }) +$LegacyGUIminersDGV.Add_Sorted( + { + Set-TableColor -DataGridView $LegacyGUIminersDGV + } + ) Set-DataGridViewDoubleBuffer -Grid $LegacyGUIminersDGV -Enabled $true $LegacyGUIminersPageControls += $LegacyGUIminersDGV @@ -1504,6 +1538,7 @@ $LegacyGUItooltip.SetToolTip($LegacyGUIswitchingLogClearButton, "This will clear $LegacyGUIcheckShowSwitchingCPU = New-Object System.Windows.Forms.CheckBox $LegacyGUIcheckShowSwitchingCPU.AutoSize = $false +$LegacyGUIcheckShowSwitchingCPU.Enabled = [Boolean]($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName -and $_.Type -eq "CPU" })) $LegacyGUIcheckShowSwitchingCPU.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) $LegacyGUIcheckShowSwitchingCPU.Height = 20 $LegacyGUIcheckShowSwitchingCPU.Location = [System.Drawing.Point]::new(($LegacyGUIswitchingLogClearButton.Width + 40), ($LegacyGUIswitchingLogLabel.Height + 10)) @@ -1525,6 +1560,7 @@ $LegacyGUIcheckShowSwitchingCPU.ForEach( $LegacyGUIcheckShowSwitchingAMD = New-Object System.Windows.Forms.CheckBox $LegacyGUIcheckShowSwitchingAMD.AutoSize = $false +$LegacyGUIcheckShowSwitchingAMD.Enabled = [Boolean]($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName -and $_.Type -eq "GPU" -and $_.Vendor -eq "AMD" })) $LegacyGUIcheckShowSwitchingAMD.Height = 20 $LegacyGUIcheckShowSwitchingAMD.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) $LegacyGUIcheckShowSwitchingAMD.Location = [System.Drawing.Point]::new(($LegacyGUIswitchingLogClearButton.Width + 40 + $LegacyGUIcheckShowSwitchingCPU.Width), ($LegacyGUIswitchingLogLabel.Height + 10)) @@ -1546,6 +1582,7 @@ $LegacyGUIcheckShowSwitchingAMD.ForEach( $LegacyGUIcheckShowSwitchingINTEL = New-Object System.Windows.Forms.CheckBox $LegacyGUIcheckShowSwitchingINTEL.AutoSize = $false +$LegacyGUIcheckShowSwitchingINTEL.Enabled = [Boolean]($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName -and $_.Type -eq "GPU" -and $_.Vendor -eq "INTEL" })) $LegacyGUIcheckShowSwitchingINTEL.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) $LegacyGUIcheckShowSwitchingINTEL.Height = 20 $LegacyGUIcheckShowSwitchingINTEL.Location = [System.Drawing.Point]::new(($LegacyGUIswitchingLogClearButton.Width + 40 + $LegacyGUIcheckShowSwitchingCPU.Width + $LegacyGUIcheckShowSwitchingAMD.Width), ($LegacyGUIswitchingLogLabel.Height + 10)) @@ -1567,6 +1604,7 @@ $LegacyGUIcheckShowSwitchingINTEL.ForEach( $LegacyGUIcheckShowSwitchingNVIDIA = New-Object System.Windows.Forms.CheckBox $LegacyGUIcheckShowSwitchingNVIDIA.AutoSize = $false +$LegacyGUIcheckShowSwitchingNVIDIA.Enabled = [Boolean]($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName -and $_.Type -eq "GPU" -and $_.Vendor -eq "NVIDIA" })) $LegacyGUIcheckShowSwitchingNVIDIA.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) $LegacyGUIcheckShowSwitchingNVIDIA.Height = 20 $LegacyGUIcheckShowSwitchingNVIDIA.Location = [System.Drawing.Point]::new(($LegacyGUIswitchingLogClearButton.Width + 40 + $LegacyGUIcheckShowSwitchingCPU.Width + $LegacyGUIcheckShowSwitchingAMD.Width + $LegacyGUIcheckShowSwitchingINTEL.Width), ($LegacyGUIswitchingLogLabel.Height + 10)) @@ -1605,7 +1643,6 @@ $LegacyGUIswitchingDGV.Name = "SwitchingDGV" $LegacyGUIswitchingDGV.ReadOnly = $true $LegacyGUIswitchingDGV.RowHeadersVisible = $false $LegacyGUIswitchingDGV.SelectionMode = "FullRowSelect" - $LegacyGUIswitchingDGV.Add_Sorted( { If ($Config.UseColorForMinerStatus) { @@ -1616,6 +1653,11 @@ $LegacyGUIswitchingDGV.Add_Sorted( Set-DataGridViewDoubleBuffer -Grid $LegacyGUIswitchingDGV -Enabled $true $LegacyGUIswitchingPageControls += $LegacyGUIswitchingDGV +$LegacyGUIcheckShowSwitchingCPU.Checked = $LegacyGUIcheckShowSwitchingCPU.Enabled +$LegacyGUIcheckShowSwitchingAMD.Checked = $LegacyGUIcheckShowSwitchingAMD.Enabled +$LegacyGUIcheckShowSwitchingINTEL.Checked = $LegacyGUIcheckShowSwitchingINTEL.Enabled +$LegacyGUIcheckShowSwitchingNVIDIA.Checked = $LegacyGUIcheckShowSwitchingNVIDIA.Enabled + # Watchdog Page Controls $LegacyGUIwatchdogTimersPageControls = @() diff --git a/Includes/MinerAPIs/BzMiner.ps1 b/Includes/MinerAPIs/BzMiner.ps1 index 6f6c196f..7a880507 100644 --- a/Includes/MinerAPIs/BzMiner.ps1 +++ b/Includes/MinerAPIs/BzMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\BzMiner.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Class BzMiner : Miner { diff --git a/Includes/MinerAPIs/Ccminer.ps1 b/Includes/MinerAPIs/Ccminer.ps1 index 1ea6a4d2..f280dd62 100644 --- a/Includes/MinerAPIs/Ccminer.ps1 +++ b/Includes/MinerAPIs/Ccminer.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\CCminer.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Class CcMiner : Miner { diff --git a/Includes/MinerAPIs/EthMiner.ps1 b/Includes/MinerAPIs/EthMiner.ps1 index 8dee897f..e2650a07 100644 --- a/Includes/MinerAPIs/EthMiner.ps1 +++ b/Includes/MinerAPIs/EthMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\EthMiner.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Class EthMiner : Miner { diff --git a/Includes/MinerAPIs/FireIce.ps1 b/Includes/MinerAPIs/FireIce.ps1 index 5609d6ee..6b2566e9 100644 --- a/Includes/MinerAPIs/FireIce.ps1 +++ b/Includes/MinerAPIs/FireIce.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\FireIce.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Class Fireice : Miner { diff --git a/Includes/MinerAPIs/Gminer.ps1 b/Includes/MinerAPIs/Gminer.ps1 index 6c5f2dac..a123cc5c 100644 --- a/Includes/MinerAPIs/Gminer.ps1 +++ b/Includes/MinerAPIs/Gminer.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\GMiner.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Class GMiner : Miner { diff --git a/Includes/MinerAPIs/HellMiner.ps1 b/Includes/MinerAPIs/HellMiner.ps1 index b4cc96cf..c56862ef 100644 --- a/Includes/MinerAPIs/HellMiner.ps1 +++ b/Includes/MinerAPIs/HellMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\lolMiner.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Class HellMiner : Miner { diff --git a/Includes/MinerAPIs/MiniZ.ps1 b/Includes/MinerAPIs/MiniZ.ps1 index f8cf0c3b..3669e51d 100644 --- a/Includes/MinerAPIs/MiniZ.ps1 +++ b/Includes/MinerAPIs/MiniZ.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\MiniZ.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Class MiniZ : Miner { diff --git a/Includes/MinerAPIs/NBMiner.ps1 b/Includes/MinerAPIs/NBMiner.ps1 index 58851dd8..5449628c 100644 --- a/Includes/MinerAPIs/NBMiner.ps1 +++ b/Includes/MinerAPIs/NBMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\NBMiner.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Class NBMiner : Miner { diff --git a/Includes/MinerAPIs/NanoMiner.ps1 b/Includes/MinerAPIs/NanoMiner.ps1 index 0cb06078..5bae68b2 100644 --- a/Includes/MinerAPIs/NanoMiner.ps1 +++ b/Includes/MinerAPIs/NanoMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\NanoMiner.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Class NanoMiner : Miner { diff --git a/Includes/MinerAPIs/OneZero.ps1 b/Includes/MinerAPIs/OneZero.ps1 index cb7d3fcf..79492838 100644 --- a/Includes/MinerAPIs/OneZero.ps1 +++ b/Includes/MinerAPIs/OneZero.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\Trex.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Class OneZero : Miner { diff --git a/Includes/MinerAPIs/Rigel.ps1 b/Includes/MinerAPIs/Rigel.ps1 index dfaa1a10..3acbd11e 100644 --- a/Includes/MinerAPIs/Rigel.ps1 +++ b/Includes/MinerAPIs/Rigel.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\Rigel.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Class Rigel : Miner { diff --git a/Includes/MinerAPIs/SRBMiner.ps1 b/Includes/MinerAPIs/SRBMiner.ps1 index 1d6665bb..a716f38c 100644 --- a/Includes/MinerAPIs/SRBMiner.ps1 +++ b/Includes/MinerAPIs/SRBMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\SRBminer.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Class SRBMiner : Miner { diff --git a/Includes/MinerAPIs/TeamBlackMiner.ps1 b/Includes/MinerAPIs/TeamBlackMiner.ps1 index c35c0344..3322ba5b 100644 --- a/Includes/MinerAPIs/TeamBlackMiner.ps1 +++ b/Includes/MinerAPIs/TeamBlackMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\lolMiner.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Class TeamBlackMiner : Miner { diff --git a/Includes/MinerAPIs/Trex.ps1 b/Includes/MinerAPIs/Trex.ps1 index 6fdeea07..c6ae523c 100644 --- a/Includes/MinerAPIs/Trex.ps1 +++ b/Includes/MinerAPIs/Trex.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\Trex.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Class Trex : Miner { diff --git a/Includes/MinerAPIs/Xgminer.ps1 b/Includes/MinerAPIs/Xgminer.ps1 index ef2896b0..f5954742 100644 --- a/Includes/MinerAPIs/Xgminer.ps1 +++ b/Includes/MinerAPIs/Xgminer.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\Xgminer.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Class XgMiner : Miner { diff --git a/Includes/MinerAPIs/XmRig.ps1 b/Includes/MinerAPIs/XmRig.ps1 index e060ba6d..1d7606d2 100644 --- a/Includes/MinerAPIs/XmRig.ps1 +++ b/Includes/MinerAPIs/XmRig.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\XmRig.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Class XmRig : Miner { diff --git a/Includes/MinerAPIs/lolMiner.ps1 b/Includes/MinerAPIs/lolMiner.ps1 index 9c766422..be05edc5 100644 --- a/Includes/MinerAPIs/lolMiner.ps1 +++ b/Includes/MinerAPIs/lolMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\lolMiner.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Class lolMiner : Miner { diff --git a/Miners/BzMiner-v21.4.0.ps1 b/Miners/BzMiner-v21.4.0.ps1 index 37b33e0e..405f96c2 100644 --- a/Miners/BzMiner-v21.4.0.ps1 +++ b/Miners/BzMiner-v21.4.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.0 -Version date: 2024/09/01 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ "AMD", "INTEL" -contains $_.Type -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge [Version]"460.27.03") }))) { Return } @@ -29,60 +29,60 @@ $Path = "Bin\$Name\bzminer.exe" $DeviceEnumerator = "Bus" $Algorithms = @( - @{ Algorithms = @("Autolykos2"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash", "ProHashing"), @()); Arguments = @(" -a ergo") } - @{ Algorithms = @("Blake3"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a alph") } - @{ Algorithms = @("DynexSolve"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a dynex") } - @{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = @("GCN4"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a etchash") } # https://github.com/bzminer/bzminer/issues/264 - @{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 20); ExcludeGPUarchitectures = @("GCN4"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a ethash") } # https://github.com/bzminer/bzminer/issues/264 - @{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 0); ExcludeGPUarchitectures = @("RDNA1"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a rethereum") } # https://github.com/bzminer/bzminer/issues/324 - @{ Algorithms = @("FishHash"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a ironfish") } # https://github.com/bzminer/bzminer/issues/260 - @{ Algorithms = @("HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash", "ZergPool"), @()); Arguments = @(" -a karlsen") } -# @{ Algorithms = @("HeavyHashKaspa"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("ProHashing"), @()); Arguments = @(" -a kaspa") } # ASIC - @{ Algorithms = @("JanusHash"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a warthog") } - @{ Algorithms = @("KawPow"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @("GCN4"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a rvn") } # https://github.com/bzminer/bzminer/issues/264 - @{ Algorithms = @("NexaPow"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 3; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a nexa") } - @{ Algorithms = @("SHA512256d"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @("GCN1"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a radiant") } # Error - @{ Algorithms = @("SHA256dt"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a novo") } - @{ Algorithms = @("SHA3d"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a kylacoin") } - @{ Algorithms = @("Skein2"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a woodcoin") } - - @{ Algorithms = @("Blake3"); Type = "INTEL"; Fee = @(0.005); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a alph") } - @{ Algorithms = @("DynexSolve"); Type = "INTEL"; Fee = @(0.005); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a dynex") } - @{ Algorithms = @("EtcHash"); Type = "INTEL"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 25); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a etchash") } - @{ Algorithms = @("Ethash"); Type = "INTEL"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a ethash") } - @{ Algorithms = @("EthashB3"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a rethereum") } - @{ Algorithms = @("FishHash"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a ironfish") } # https://github.com/bzminer/bzminer/issues/260 - @{ Algorithms = @("HeavyHashKarlsen"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash", "ZergPool"), @()); Arguments = @(" -a karlsen") } - @{ Algorithms = @("JanusHash"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a warthog") } - @{ Algorithms = @("KawPow"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a rvn") } - @{ Algorithms = @("SHA512256d"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a radiant") } - - @{ Algorithms = @("Autolykos2"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a ergo") } -# @{ Algorithms = @("Autolykos2", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@("NiceHash", "ProHashing"), @()); Arguments = @(" -a ergo", " --a2 kaspa") } # ASIC - @{ Algorithms = @("Autolykos2", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@("NiceHash", "ProHashing"), @()); Arguments = @(" -a ergo", " --a2 radiant") } - @{ Algorithms = @("Blake3"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 5); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a alph") } - @{ Algorithms = @("DynexSolve"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = @("Other"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a dynex") } - @{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 20); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a etchash") } - @{ Algorithms = @("EtcHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @("NiceHash")); Arguments = @(" -a etchash", " --a2 alph") } - @{ Algorithms = @("EtcHash", "FishHash"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @("NiceHash")); Arguments = @(" -a etchash", " --a2 ironfish") } # https://github.com/bzminer/bzminer/issues/260 -# @{ Algorithms = @("EtcHash", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @("ProHashing")); Arguments = @(" -a etchash", " --a2 kaspa") } # ASIC - @{ Algorithms = @("EtcHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(90, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a etchash", " --a2 radiant") } - @{ Algorithms = @("Ethash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 10); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a ethash") } - @{ Algorithms = @("Ethash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @("NiceHash")); Arguments = @(" -a ethash", " --a2 alph") } - @{ Algorithms = @("Ethash", "FishHash"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @("NiceHash")); Arguments = @(" -a ethash", " --a2 ironfish") } # https://github.com/bzminer/bzminer/issues/260 -# @{ Algorithms = @("Ethash", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @("NiceHash")); Arguments = @(" -a ethash", " --a2 kaspa") } # ASIC - @{ Algorithms = @("Ethash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(90, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a ethash", " --a2 radiant") } - @{ Algorithms = @("EthashB3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 20); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a rethereum") } - @{ Algorithms = @("FishHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a ironfish") } # https://github.com/bzminer/bzminer/issues/260 - @{ Algorithms = @("HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash", "ZergPool"), @()); Arguments = @(" -a karlsen") } -# @{ Algorithms = @("HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a kaspa") } # ASIC - @{ Algorithms = @("JanusHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a warthog") } - @{ Algorithms = @("KawPow"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a rvn") } - @{ Algorithms = @("NexaPow"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 3; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a nexa") } - @{ Algorithms = @("SHA512256d"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 5); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a radiant") } - @{ Algorithms = @("SHA256dt"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 5); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a novo") } - @{ Algorithms = @("SHA3d"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 5); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a kylacoin") } - @{ Algorithms = @("Skein2"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 5); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a woodcoin") } + @{ Algorithms = @("Autolykos2"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a ergo") } + @{ Algorithms = @("Blake3"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a alph") } + @{ Algorithms = @("DynexSolve"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a dynex") } + @{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = @("GCN4"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a etchash") } # https://github.com/bzminer/bzminer/issues/264 + @{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 20); ExcludeGPUarchitectures = @("GCN4"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a ethash") } # https://github.com/bzminer/bzminer/issues/264 + @{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 0); ExcludeGPUarchitectures = @("RDNA1", "RDNA2"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a rethereum") } # https://github.com/bzminer/bzminer/issues/324 + @{ Algorithms = @("FishHash"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a ironfish") } # https://github.com/bzminer/bzminer/issues/260 + @{ Algorithms = @("HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a karlsen") } +# @{ Algorithms = @("HeavyHashKaspa"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a kaspa") } # ASIC + @{ Algorithms = @("JanusHash"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a warthog") } + @{ Algorithms = @("KawPow"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @("GCN4"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a rvn") } # https://github.com/bzminer/bzminer/issues/264 + @{ Algorithms = @("NexaPow"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 3; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a nexa") } + @{ Algorithms = @("SHA512256d"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @("GCN1"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a radiant") } # Error + @{ Algorithms = @("SHA256dt"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a novo") } + @{ Algorithms = @("SHA3d"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a kylacoin") } + @{ Algorithms = @("Skein2"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a woodcoin") } + + @{ Algorithms = @("Blake3"); Type = "INTEL"; Fee = @(0.005); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a alph") } + @{ Algorithms = @("DynexSolve"); Type = "INTEL"; Fee = @(0.005); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a dynex") } + @{ Algorithms = @("EtcHash"); Type = "INTEL"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 25); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a etchash") } + @{ Algorithms = @("Ethash"); Type = "INTEL"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a ethash") } + @{ Algorithms = @("EthashB3"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a rethereum") } + @{ Algorithms = @("FishHash"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a ironfish") } # https://github.com/bzminer/bzminer/issues/260 + @{ Algorithms = @("HeavyHashKarlsen"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a karlsen") } + @{ Algorithms = @("JanusHash"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a warthog") } + @{ Algorithms = @("KawPow"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a rvn") } + @{ Algorithms = @("SHA512256d"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a radiant") } + + @{ Algorithms = @("Autolykos2"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a ergo") } +# @{ Algorithms = @("Autolykos2", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a ergo", " --a2 kaspa") } # ASIC + @{ Algorithms = @("Autolykos2", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a ergo", " --a2 radiant") } + @{ Algorithms = @("Blake3"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 5); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a alph") } + @{ Algorithms = @("DynexSolve"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = @("Other"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a dynex") } + @{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 20); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a etchash") } + @{ Algorithms = @("EtcHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @("NiceHash")); Arguments = @(" -a etchash", " --a2 alph") } + @{ Algorithms = @("EtcHash", "FishHash"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @("NiceHash")); Arguments = @(" -a etchash", " --a2 ironfish") } # https://github.com/bzminer/bzminer/issues/260 +# @{ Algorithms = @("EtcHash", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a etchash", " --a2 kaspa") } # ASIC + @{ Algorithms = @("EtcHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(90, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a etchash", " --a2 radiant") } + @{ Algorithms = @("Ethash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 10); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a ethash") } + @{ Algorithms = @("Ethash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @("NiceHash")); Arguments = @(" -a ethash", " --a2 alph") } + @{ Algorithms = @("Ethash", "FishHash"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @("NiceHash")); Arguments = @(" -a ethash", " --a2 ironfish") } # https://github.com/bzminer/bzminer/issues/260 +# @{ Algorithms = @("Ethash", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @("NiceHash")); Arguments = @(" -a ethash", " --a2 kaspa") } # ASIC + @{ Algorithms = @("Ethash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(90, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a ethash", " --a2 radiant") } + @{ Algorithms = @("EthashB3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 20); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a rethereum") } + @{ Algorithms = @("FishHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a ironfish") } + @{ Algorithms = @("HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a karlsen") } +# @{ Algorithms = @("HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a kaspa") } # ASIC + @{ Algorithms = @("JanusHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a warthog") } + @{ Algorithms = @("KawPow"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a rvn") } + @{ Algorithms = @("NexaPow"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 3; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a nexa") } + @{ Algorithms = @("SHA512256d"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 5); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a radiant") } + @{ Algorithms = @("SHA256dt"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 5); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a novo") } + @{ Algorithms = @("SHA3d"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 5); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a kylacoin") } + @{ Algorithms = @("Skein2"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 5); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a woodcoin") } ) $Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet }) @@ -153,7 +153,7 @@ If ($Algorithms) { [PSCustomObject]@{ API = "BzMiner" - Arguments = "$Arguments -v 2 --nc 1 --no_watchdog --http_enabled 1 --http_port $MinerAPIPort --enable $(($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0}:0' -f $_ }) -join ' ')" + Arguments = "$Arguments -v 2 --nc 1 --no_watchdog --avg_hr_ms 1000 --restart_on_disconnect 0 --http_enabled 1 --http_port $MinerAPIPort --enable $(($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0}:0' -f $_ }) -join ' ')" DeviceNames = $AvailableMinerDevices.Name Fee = $_.Fee # Dev fee MinerSet = $_.MinerSet diff --git a/Miners/CcminerAlexis78-v1.5.2.ps1 b/Miners/CcminerAlexis78-v1.5.2.ps1 index 5f8bb1db..5bd8a7ae 100644 --- a/Miners/CcminerAlexis78-v1.5.2.ps1 +++ b/Miners/CcminerAlexis78-v1.5.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.1" }))) { Return } diff --git a/Miners/CcminerDyn-v1.0.2.ps1 b/Miners/CcminerDyn-v1.0.2.ps1 index f2844155..e2b33f2f 100644 --- a/Miners/CcminerDyn-v1.0.2.ps1 +++ b/Miners/CcminerDyn-v1.0.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 f2eca021..691a1272 100644 --- a/Miners/CcminerKlausT-v8.25.ps1 +++ b/Miners/CcminerKlausT-v8.25.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -and $_.OpenCL.ComputeCapability -lt "6.0" -and $_.Architecture -ne "Other" }))) { Return } diff --git a/Miners/CcminerKlausT-v8.26x2.ps1 b/Miners/CcminerKlausT-v8.26x2.ps1 index 29ae80e3..c2046aee 100644 --- a/Miners/CcminerKlausT-v8.26x2.ps1 +++ b/Miners/CcminerKlausT-v8.26x2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge [Version]"6.0" }))) { Return } diff --git a/Miners/CcminerLyra2z330-v8.21r9.ps1 b/Miners/CcminerLyra2z330-v8.21r9.ps1 index 3ece97a6..9b823b61 100644 --- a/Miners/CcminerLyra2z330-v8.21r9.ps1 +++ b/Miners/CcminerLyra2z330-v8.21r9.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.1" }))) { Return } diff --git a/Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1 b/Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1 index 012e35f2..0ccf7b3c 100644 --- a/Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1 +++ b/Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.1" }))) { Return } diff --git a/Miners/CcminerMemeHash-v2.5.5.9.ps1 b/Miners/CcminerMemeHash-v2.5.5.9.ps1 index 4b73113f..9ac1b4a0 100644 --- a/Miners/CcminerMemeHash-v2.5.5.9.ps1 +++ b/Miners/CcminerMemeHash-v2.5.5.9.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 902dfffd..ada716ed 100644 --- a/Miners/CcminerNeoscryptXaya-v0.2.ps1 +++ b/Miners/CcminerNeoscryptXaya-v0.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 2b7ea221..90b4c679 100644 --- a/Miners/CcminerVerusCpu-v3.8.3.ps1 +++ b/Miners/CcminerVerusCpu-v3.8.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 fded557c..b379f36f 100644 --- a/Miners/CcminerVerusGpu-v3.8.3.ps1 +++ b/Miners/CcminerVerusGpu-v3.8.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "7.5" }))) { Return } diff --git a/Miners/ClaymoreNeoscrypt-v1.2.ps1 b/Miners/ClaymoreNeoscrypt-v1.2.ps1 index 64d9d400..fc68d25e 100644 --- a/Miners/ClaymoreNeoscrypt-v1.2.ps1 +++ b/Miners/ClaymoreNeoscrypt-v1.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 1f75dba8..fe240ba7 100644 --- a/Miners/CpuMiner-v1.4.ps1 +++ b/Miners/CpuMiner-v1.4.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 fac7d2fb..ff39597e 100644 --- a/Miners/CpuMinerAurum-v3.23.1.ps1 +++ b/Miners/CpuMinerAurum-v3.23.1.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 7d85459a..a4b9001b 100644 --- a/Miners/CryptoDredge-v0.16.0.ps1 +++ b/Miners/CryptoDredge-v0.16.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 cb336573..a581adbc 100644 --- a/Miners/CryptoDredge-v0.27.0.ps1 +++ b/Miners/CryptoDredge-v0.27.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 05a25501..37a16043 100644 --- a/Miners/EthMiner-v0.19.0.18.ps1 +++ b/Miners/EthMiner-v0.19.0.18.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 5e5eb413..857f4c79 100644 --- a/Miners/EvrProgPow-v1p3p0.ps1 +++ b/Miners/EvrProgPow-v1p3p0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 15f869e3..83b6058f 100644 --- a/Miners/FrkHashMiner-v1.3.14.ps1 +++ b/Miners/FrkHashMiner-v1.3.14.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 1ad7d7b9..80e98f90 100644 --- a/Miners/GMiner-v2.75.ps1 +++ b/Miners/GMiner-v2.75.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 1.2") -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/GMiner-v3.44.ps1 b/Miners/GMiner-v3.44.ps1 index 507e76b7..4d64af50 100644 --- a/Miners/GMiner-v3.44.ps1 +++ b/Miners/GMiner-v3.44.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 1.2") -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/HellMiner-v0.59.1.ps1 b/Miners/HellMiner-v0.59.1.ps1 index a726bae6..2db120a9 100644 --- a/Miners/HellMiner-v0.59.1.ps1 +++ b/Miners/HellMiner-v0.59.1.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } diff --git a/Miners/JayddeeCpu-v24.4.ps1 b/Miners/JayddeeCpu-v24.4.ps1 index ee4714ce..0ee79995 100644 --- a/Miners/JayddeeCpu-v24.4.ps1 +++ b/Miners/JayddeeCpu-v24.4.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } diff --git a/Miners/KawpowMiner-v1.2.4cl.ps1 b/Miners/KawpowMiner-v1.2.4cl.ps1 index a7a4cd24..737b7217 100644 --- a/Miners/KawpowMiner-v1.2.4cl.ps1 +++ b/Miners/KawpowMiner-v1.2.4cl.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" }))) { Return } diff --git a/Miners/KawpowMiner-v1.2.4cuda.ps1 b/Miners/KawpowMiner-v1.2.4cuda.ps1 index ce0aecec..38908f9c 100644 --- a/Miners/KawpowMiner-v1.2.4cuda.ps1 +++ b/Miners/KawpowMiner-v1.2.4cuda.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 7fcfd635..54343fd4 100644 --- a/Miners/Kudaraidee-v1.2.0a.ps1 +++ b/Miners/Kudaraidee-v1.2.0a.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.Type -eq "NVIDIA" -and $_.CUDAVersion -ge [Version]"10.2") }))) { Return } diff --git a/Miners/MeowPowMiner-v2.0.0cl.ps1 b/Miners/MeowPowMiner-v2.0.0cl.ps1 index 592793f0..fe65a0a6 100644 --- a/Miners/MeowPowMiner-v2.0.0cl.ps1 +++ b/Miners/MeowPowMiner-v2.0.0cl.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 2d21c6b5..0a4a3d72 100644 --- a/Miners/MeowPowMiner-v2.0.0cuda.ps1 +++ b/Miners/MeowPowMiner-v2.0.0cuda.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/MiniZ-v2.4d.ps1 b/Miners/MiniZ-v2.4d.ps1 index bf187aab..3e1be1a0 100644 --- a/Miners/MiniZ-v2.4d.ps1 +++ b/Miners/MiniZ-v2.4d.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/NBMiner-v42.3.ps1 b/Miners/NBMiner-v42.3.ps1 index 94520e26..1ea207fe 100644 --- a/Miners/NBMiner-v42.3.ps1 +++ b/Miners/NBMiner-v42.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "6.0" -and $_.CUDAVersion -ge [Version]"10.0") }))) { Return } diff --git a/Miners/NSFMiner-v1.3.14.ps1 b/Miners/NSFMiner-v1.3.14.ps1 index 125e92c4..45830917 100644 --- a/Miners/NSFMiner-v1.3.14.ps1 +++ b/Miners/NSFMiner-v1.3.14.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.CUDAVersion -ge [Version]"9.1") }))) { Return } diff --git a/Miners/NanoMiner-v3.9.2.ps1 b/Miners/NanoMiner-v3.9.2.ps1 index bbf06282..e84f5c2d 100644 --- a/Miners/NanoMiner-v3.9.2.ps1 +++ b/Miners/NanoMiner-v3.9.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" -or $_.Type -ne "NVIDIA" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge [Version]"455.23") }))) { Return } diff --git a/Miners/Ninjarig-1.0.3.ps1 b/Miners/Ninjarig-1.0.3.ps1 index ba5512a9..5ad0d47d 100644 --- a/Miners/Ninjarig-1.0.3.ps1 +++ b/Miners/Ninjarig-1.0.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 0ba07f2d..4a7d2446 100644 --- a/Miners/NosuchCpu-v3.8.8.1.ps1 +++ b/Miners/NosuchCpu-v3.8.8.1.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } diff --git a/Miners/OneZeroMiner-v1.3.7.ps1 b/Miners/OneZeroMiner-v1.3.7.ps1 index 8be54ac8..0d0a7086 100644 --- a/Miners/OneZeroMiner-v1.3.7.ps1 +++ b/Miners/OneZeroMiner-v1.3.7.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 f07c7017..89104460 100644 --- a/Miners/PhoenixMiner-v6.2c.ps1 +++ b/Miners/PhoenixMiner-v6.2c.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 d6757350..1c6ad7f6 100644 --- a/Miners/Radiator-v1.0.0.ps1 +++ b/Miners/Radiator-v1.0.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 8cf3047b..b0b75a88 100644 --- a/Miners/Raptor3umCpu-v2.0.ps1 +++ b/Miners/Raptor3umCpu-v2.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } diff --git a/Miners/Rigel-v1.18.2.ps1 b/Miners/Rigel-v1.18.2.ps1 index c15a5961..2b249407 100644 --- a/Miners/Rigel-v1.18.2.ps1 +++ b/Miners/Rigel-v1.18.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> # Return diff --git a/Miners/RplantCpu-v5.0.41.ps1 b/Miners/RplantCpu-v5.0.41.ps1 index 08762e94..e491a268 100644 --- a/Miners/RplantCpu-v5.0.41.ps1 +++ b/Miners/RplantCpu-v5.0.41.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 bb03de46..038e2e68 100644 --- a/Miners/RrkzCpu-v4.2.ps1 +++ b/Miners/RrkzCpu-v4.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } diff --git a/Miners/SCCminer-v1.1.0.ps1 b/Miners/SCCminer-v1.1.0.ps1 index 3dc8f636..859d36a4 100644 --- a/Miners/SCCminer-v1.1.0.ps1 +++ b/Miners/SCCminer-v1.1.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Return # Bad shares diff --git a/Miners/SRBMinerMulti-v0.9.4.ps1 b/Miners/SRBMinerMulti-v0.9.4.ps1 index 58102ed9..0b06c7d6 100644 --- a/Miners/SRBMinerMulti-v0.9.4.ps1 +++ b/Miners/SRBMinerMulti-v0.9.4.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> # Support for Pitcairn, Tahiti, Hawaii, Fiji and Tonga was removed in later versions diff --git a/Miners/SRBMinerMulti-v2.6.3.ps1 b/Miners/SRBMinerMulti-v2.6.3.ps1 index 73753500..9c052f81 100644 --- a/Miners/SRBMinerMulti-v2.6.3.ps1 +++ b/Miners/SRBMinerMulti-v2.6.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" -or $_.Type -eq "INTEL" -or ($_.Type -eq "AMD" -and $_.Model -notmatch "^GCN[1-3]" -and $_.OpenCL.ClVersion -ge "OpenCL C 2.0") -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge "510.00") }))) { Return } diff --git a/Miners/SgMinerFancyIX-v0.9.4.ps1 b/Miners/SgMinerFancyIX-v0.9.4.ps1 index eaf50585..c7de514b 100644 --- a/Miners/SgMinerFancyIX-v0.9.4.ps1 +++ b/Miners/SgMinerFancyIX-v0.9.4.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 212255a6..ac806f2f 100644 --- a/Miners/Suprminer-v2.31v2.ps1 +++ b/Miners/Suprminer-v2.31v2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/TTMiner-v2024.3.2.ps1 b/Miners/TTMiner-v2024.3.2.ps1 index 6f86a485..12148fd5 100644 --- a/Miners/TTMiner-v2024.3.2.ps1 +++ b/Miners/TTMiner-v2024.3.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> # TT needs avx2 and aes https://github.com/TrailingStop/TT-Miner-beta/issues/7#issuecomment-2158058291 diff --git a/Miners/TTMiner-v5.0.3.ps1 b/Miners/TTMiner-v5.0.3.ps1 index 30eb5419..37682228 100644 --- a/Miners/TTMiner-v5.0.3.ps1 +++ b/Miners/TTMiner-v5.0.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 5e0a099b..a5fbebc2 100644 --- a/Miners/TeamBlackMiner-v2.25.ps1 +++ b/Miners/TeamBlackMiner-v2.25.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.CUDAVersion -ge [Version]"11.6") }))) { Return } @@ -31,31 +31,31 @@ $DeviceSelector = @{ AMD = " --cl-devices"; NVIDIA = " --cuda-devices" } $DeviceEnumerator = "Vendor_ID" $Algorithms = @( - @{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etchash" } - @{ Algorithms = @("EtcHash", "EthashB3"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(120, 45); ExcludeGPUarchitectures = @("RDNA1"); ExcludePools = @(@(), @()); Arguments = " --algo etc+ethb3" } # https://github.com/sp-hash/TeamBlackMiner/issues/450 - @{ Algorithms = @("EtcHash", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+evr" } - @{ Algorithms = @("EtcHash", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+firo" } - @{ Algorithms = @("EtcHash", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @("HashCryptos", "MiningDutch")); Arguments = " --algo etc+rvn" } - @{ Algorithms = @("EtcHash", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+meow" } - @{ Algorithms = @("EtcHash", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 60); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # 120 Seconds; https://github.com/sp-hash/TeamBlackMiner/issues/450 - @{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethash" } # https://github.com/sp-hash/TeamBlackMiner/issues/455 - @{ Algorithms = @("Ethash", "EthashB3"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(120, 15); ExcludeGPUarchitectures = @("RDNA1"); ExcludePools = @(@(), @()); Arguments = " --algo eth+ethb3" } # https://github.com/sp-hash/TeamBlackMiner/issues/455 - @{ Algorithms = @("Ethash", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+evr" } # https://github.com/sp-hash/TeamBlackMiner/issues/455 - @{ Algorithms = @("Ethash", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+firo" } # https://github.com/sp-hash/TeamBlackMiner/issues/455 - @{ Algorithms = @("Ethash", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @("HashCryptos", "MiningDutch")); Arguments = " --algo eth+rvn" } # https://github.com/sp-hash/TeamBlackMiner/issues/455 - @{ Algorithms = @("Ethash", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+meow" } # https://github.com/sp-hash/TeamBlackMiner/issues/455 - @{ Algorithms = @("Ethash", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 60); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # https://github.com/sp-hash/TeamBlackMiner/issues/455 & 120 Secs; https://github.com/sp-hash/TeamBlackMiner/issues/450 - @{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethashb3" } - @{ Algorithms = @("EthashB3", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+firo" } - @{ Algorithms = @("EthashB3", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+evr" } - @{ Algorithms = @("EthashB3", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @("HashCryptos", "MiningDutch")); Arguments = " --algo ethb3+rvn" } - @{ Algorithms = @("EthashB3", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+meow" } - @{ Algorithms = @("EthashB3", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # 120 Seconds; https://github.com/sp-hash/TeamBlackMiner/issues/450 - @{ Algorithms = @("EvrProgPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo evrprogpow" } - @{ Algorithms = @("FiroPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo firopow" } - @{ Algorithms = @("KawPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@("HashCryptos", "MiningDutch"), @()); Arguments = " --algo kawpow" } - @{ Algorithms = @("MeowPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo meowpow" } - @{ Algorithms = @("VertHash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 3.0; MinerSet = 1; Tuning = ""; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo verthash --verthash-data ..\.$($Variables.VerthashDatPath)" } + @{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etchash" } + @{ Algorithms = @("EtcHash", "EthashB3"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(120, 45); ExcludeGPUarchitectures = @("RDNA1", "RDNA2"); ExcludePools = @(@(), @()); Arguments = " --algo etc+ethb3" } # https://github.com/sp-hash/TeamBlackMiner/issues/450 + @{ Algorithms = @("EtcHash", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+evr" } + @{ Algorithms = @("EtcHash", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+firo" } + @{ Algorithms = @("EtcHash", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @("HashCryptos", "MiningDutch")); Arguments = " --algo etc+rvn" } + @{ Algorithms = @("EtcHash", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+meow" } + @{ Algorithms = @("EtcHash", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 60); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # 120 Seconds; https://github.com/sp-hash/TeamBlackMiner/issues/450 + @{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethash" } # https://github.com/sp-hash/TeamBlackMiner/issues/455 + @{ Algorithms = @("Ethash", "EthashB3"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(120, 15); ExcludeGPUarchitectures = @("RDNA1", "RDNA2"); ExcludePools = @(@(), @()); Arguments = " --algo eth+ethb3" } # https://github.com/sp-hash/TeamBlackMiner/issues/455 + @{ Algorithms = @("Ethash", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+evr" } # https://github.com/sp-hash/TeamBlackMiner/issues/455 + @{ Algorithms = @("Ethash", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+firo" } # https://github.com/sp-hash/TeamBlackMiner/issues/455 + @{ Algorithms = @("Ethash", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @("HashCryptos", "MiningDutch")); Arguments = " --algo eth+rvn" } # https://github.com/sp-hash/TeamBlackMiner/issues/455 + @{ Algorithms = @("Ethash", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+meow" } # https://github.com/sp-hash/TeamBlackMiner/issues/455 + @{ Algorithms = @("Ethash", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 60); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # https://github.com/sp-hash/TeamBlackMiner/issues/455 & 120 Secs; https://github.com/sp-hash/TeamBlackMiner/issues/450 + @{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethashb3" } + @{ Algorithms = @("EthashB3", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+firo" } + @{ Algorithms = @("EthashB3", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+evr" } + @{ Algorithms = @("EthashB3", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @("HashCryptos", "MiningDutch")); Arguments = " --algo ethb3+rvn" } + @{ Algorithms = @("EthashB3", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+meow" } + @{ Algorithms = @("EthashB3", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # 120 Seconds; https://github.com/sp-hash/TeamBlackMiner/issues/450 + @{ Algorithms = @("EvrProgPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo evrprogpow" } + @{ Algorithms = @("FiroPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo firopow" } + @{ Algorithms = @("KawPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@("HashCryptos", "MiningDutch"), @()); Arguments = " --algo kawpow" } + @{ Algorithms = @("MeowPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo meowpow" } + @{ Algorithms = @("VertHash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 3.0; MinerSet = 1; Tuning = ""; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo verthash --verthash-data ..\.$($Variables.VerthashDatPath)" } @{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etchash" } @{ Algorithms = @("EtcHash", "EthashB3"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+ethb3" } diff --git a/Miners/TeamRedMiner-v0.10.21.ps1 b/Miners/TeamRedMiner-v0.10.21.ps1 index 3c101b23..e28a943f 100644 --- a/Miners/TeamRedMiner-v0.10.21.ps1 +++ b/Miners/TeamRedMiner-v0.10.21.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 2.0" }))) { Return } diff --git a/Miners/TeleMerakiMiner-v1.5.0.ps1 b/Miners/TeleMerakiMiner-v1.5.0.ps1 new file mode 100644 index 00000000..c0557532 --- /dev/null +++ b/Miners/TeleMerakiMiner-v1.5.0.ps1 @@ -0,0 +1,90 @@ +<# +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 +Version: 6.3.2 +Version date: 2024/09/09 +#> + +If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } + +$URI = "https://github.com/Telestai-Project/tele-meraki-miner/releases/download/1.5.0/WindowsRelease.zip" +$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName +$Path = "Bin\$Name\telemerakiminer.exe" +$DeviceEnumerator = "Type_Vendor_Index" + +$Algorithms = @( + @{ Algorithm = "ProgPowTelestai"; MinMemGiB = 0.77; MinerSet = 1; WarmupTimes = @(75, 10); ExcludeGPUarchitectures = @("Pascal"); ExcludePools = @(); Arguments = "" } +) + +$Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet }) +$Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithm] }) + +If ($Algorithms) { + + ($Devices | Select-Object Model -Unique).ForEach( + { + $Model = $_.Model + $MinerDevices = $Devices.Where({ $_.Model -eq $Model }) + $MinerAPIPort = $Config.APIPort + ($MinerDevices.Id | Sort-Object -Top 1) + 1 + + $Algorithms.ForEach( + { + $ExcludeGPUarchitectures = $_.ExcludeGPUarchitectures + If ($SupportedMinerDevices = $MinerDevices.Where({ $ExcludeGPUarchitectures -notcontains $_.Architecture })) { + + # $ExcludePools = $_.ExcludePools + # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) { + ForEach ($Pool in $MinerPools[0][$_.Algorithm]) { + + $MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { + + $MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($Pool.AlgorithmVariant)" + + $Protocol = Switch ($Pool.Protocol) { + "ethproxy" { "stratum1"; Break } + "ethstratum1" { "stratum2"; Break } + "ethstratum2" { "stratum2"; Break } + Default { "stratum" } + } + $Protocol += If ($Pool.PoolPorts[1]) { "+tls" } Else { "+tcp" } + + [PSCustomObject]@{ + API = "EthMiner" + Arguments = "$($_.Arguments) --pool $($Protocol)://$([System.Web.HttpUtility]::UrlEncode("$($Pool.User)")):$([System.Web.HttpUtility]::UrlEncode($($Pool.Pass)))@$($Pool.Host):$($Pool.PoolPorts | Select-Object -Last 1) --farm-recheck 10000 --farm-retries 40 --work-timeout 100000 --response-timeout 720 --api-port -$($MinerAPIPort) --cuda --cuda-devices $(($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0:x}' -f $_ }) -join ',')" + DeviceNames = $AvailableMinerDevices.Name + EnvVars = @("SSL_NOVERIFY=TRUE") + Fee = @(0) # Dev fee + MinerSet = $_.MinerSet + Name = $MinerName + Path = $Path + Port = $MinerAPIPort + Type = "NVIDIA" + URI = $URI + WarmupTimes = $_.WarmupTimes # First value: Seconds until miner must send first sample, if no sample is received miner will be marked as failed; Second value: Seconds from first sample until miner sends stable hashrates that will count for benchmarking + Workers = @(@{ Pool = $Pool }) + } + } + } + } + } + ) + } + ) +} \ No newline at end of file diff --git a/Miners/Trex-v0.26.8.ps1 b/Miners/Trex-v0.26.8.ps1 index e0e7c41e..4e428e5e 100644 --- a/Miners/Trex-v0.26.8.ps1 +++ b/Miners/Trex-v0.26.8.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/Wildrig-v0.40.8.ps1 b/Miners/Wildrig-v0.40.8.ps1 index 0107fe0c..18182177 100644 --- a/Miners/Wildrig-v0.40.8.ps1 +++ b/Miners/Wildrig-v0.40.8.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 1.2" -and $_.Architecture -notmatch "^GCN1$") -or $_.Type -eq "INTEL" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge [Version]"452.39.00") }))) { Return } @@ -187,85 +187,85 @@ $Algorithms = @( @{ Algorithm = "X33"; Type = "INTEL"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x33 --watchdog" } @{ Algorithm = "Xevan"; Type = "INTEL"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo xevan --watchdog" } - @{ Algorithm = "Aergo"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo aergo --watchdog" } - @{ Algorithm = "Anime"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo anime --watchdog" } - @{ Algorithm = "AstralHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo glt-astralhash --watchdog" } - @{ Algorithm = "BCD"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 3; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo bcd --watchdog" } # ASIC - @{ Algorithm = "Blake2bBtcc"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo blake2b-btcc --watchdog" } - @{ Algorithm = "Blake2bGlt"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo blake2b-glt --watchdog" } -# @{ Algorithm = "Blake2s"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo blake2s --watchdog" } # ASIC - @{ Algorithm = "Blake3"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 3; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @("NiceHash"); Arguments = " --algo blake3 --watchdog" } -# @{ Algorithm = "Bmw512"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo bmw512 --watchdog" } # ASIC - @{ Algorithm = "C11"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo c11 --watchdog" } - @{ Algorithm = "CurveHash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo curvehash --watchdog" } - @{ Algorithm = "Dedal"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo dedal --watchdog" } # CryptoDredge-v0.27.0 is fastest - @{ Algorithm = "EvrProgPow"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 1; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo evrprogpow --watchdog" } - @{ Algorithm = "FiroPow"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(15, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo firopow --watchdog" } - @{ Algorithm = "Ghostrider"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(180, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo ghostrider --watchdog" } - @{ Algorithm = "GlobalHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo glt-globalhash --watchdog" } - @{ Algorithm = "HashX7"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x7 --watchdog" } - @{ Algorithm = "HeavyHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo heavyhash --watchdog" } # FPGA - @{ Algorithm = "Hex"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo hex --watchdog" } - @{ Algorithm = "HMQ1725"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo hmq1725 --watchdog" } # CryptoDredge-v0.27.0 is fastest - @{ Algorithm = "JeongHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo glt-jeonghash --watchdog" } # Trex-v0.26.8 is fastest - @{ Algorithm = "KawPow"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo kawpow --watchdog" } # NBMiner-v42.3 is fastest -# @{ Algorithm = "Lyra2RE2"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo lyra2v2 --watchdog" } # ASIC -# @{ Algorithm = "Lyra2RE3"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo lyra2v3 --watchdog" } # ASIC - @{ Algorithm = "Lyra2TDC"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo lyra2tdc --watchdog" } - @{ Algorithm = "Lyra2vc0ban"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo lyra2vc0ban --watchdog" } - @{ Algorithm = "MegaBtx"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo megabtx --watchdog" } - @{ Algorithm = "MemeHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo memehash --watchdog" } - @{ Algorithm = "MeowPow"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo meowpow --watchdog" } - @{ Algorithm = "Mike"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo mike --watchdog" } - @{ Algorithm = "NexaPow"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 3; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @("NiceHash"); Arguments = " --algo nexapow --watchdog" } # https://github.com/andru-kun/wildrig-multi/issues/277 -# @{ Algorithm = "Nist5"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 3; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo nist5 --watchdog" } # ASIC - @{ Algorithm = "PadiHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo glt-padihash --watchdog" } - @{ Algorithm = "PawelHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo glt-pawelhash --watchdog" } # Trex-v0.26.8 is fastest -# @{ Algorithm = "Phi"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo phi --watchdog" } # ASIC -# @{ Algorithm = "Phi5"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo phi5 --watchdog" } # Algorithm is dead - @{ Algorithm = "ProgPowEthercore"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpow-ethercore --watchdog" } - @{ Algorithm = "ProgPowQuai"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpow-quai --watchdog" } - @{ Algorithm = "ProgPowSero"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpow-sero --watchdog" } - @{ Algorithm = "ProgPowTelestai"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpow-telestai --watchdog" } - @{ Algorithm = "ProgPowVeil"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpow-veil --watchdog" } - @{ Algorithm = "ProgPowVeriblock"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo vprogpow --watchdog" } - @{ Algorithm = "ProgPowZ"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 1; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpowz --watchdog" } -# @{ Algorithm = "Pufferfish2BMB"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 8; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo pufferfish2 --watchdog" } # waiting for coin to resurrect - @{ Algorithm = "RWAHash"; Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo rwahash --watchdog" } -# @{ Algorithm = "Quark"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo quark --watchdog" } # ASIC -# @{ Algorithm = "Quibit"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo qui --watchdog" } # ASIC -# @{ Algorithm = "SHA256"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha256 --watchdog" } # ASIC -# @{ Algorithm = "SHA256d"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha256d --watchdog" } # ASIC - @{ Algorithm = "SHAndwich256"; Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo skydoge --watchdog" } # Trex-v0.26.8 is fastest - @{ Algorithm = "SHA256csm"; Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha256csm --watchdog" } - @{ Algorithm = "SHA256t"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha256t --watchdog" } - @{ Algorithm = "SHA256q"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha256q --watchdog" } - @{ Algorithm = "SHA512256d"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha512256d --watchdog" } - @{ Algorithm = "Skein2"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo skein2 --watchdog" } # CcminerAlexis78-v1.5.2 is fastest - @{ Algorithm = "SkunkHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo skunkhash --watchdog" } # Algorithm is dead - @{ Algorithm = "Timetravel"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo timetravel --watchdog" } - @{ Algorithm = "Timetravel10"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo timetravel10 --watchdog" } -# @{ Algorithm = "Tribus"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo tribus --watchdog" } # ASIC -# @{ Algorithm = "X11"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x11 --watchdog" } # ASIC -# @{ Algorithm = "X11ghost"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x11ghost --watchdog" } # ASIC - @{ Algorithm = "X11k"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x11k --watchdog" } -# @{ Algorithm = "X12"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x12 --watchdog" } # ASIC -# @{ Algorithm = "X13"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x13 --watchdog" } # ASIC -# @{ Algorithm = "X14"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x14 --watchdog" } # ASIC -# @{ Algorithm = "X15"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x15 --watchdog" } # ASIC -# @{ Algorithm = "X16r"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 3; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x16r --watchdog" } # ASIC - @{ Algorithm = "X16rt"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x16rt --watchdog" } # FPGA - @{ Algorithm = "X16rv2"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 3; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x16rv2 --watchdog" } - @{ Algorithm = "X16s"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x16s --watchdog" } # FPGA - @{ Algorithm = "X17"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x17 --watchdog" } - @{ Algorithm = "X18"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x18 --watchdog" } # ASIC - @{ Algorithm = "X20r"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x20r --watchdog" } # ASIC - @{ Algorithm = "X21s"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(120, 45); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x21s --watchdog" } # Trex-v0.26.8 is fastest - @{ Algorithm = "X22"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x22 --watchdog" } - @{ Algorithm = "X22i"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x22i --watchdog" } # Not yet supported on Nvidia - @{ Algorithm = "X25x"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x25x --watchdog" } # Not yet supported on Nvidia - @{ Algorithm = "X33"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x33 --watchdog" } - @{ Algorithm = "Xevan"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo xevan --watchdog" } + @{ Algorithm = "Aergo"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo aergo --watchdog" } + @{ Algorithm = "Anime"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo anime --watchdog" } + @{ Algorithm = "AstralHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo glt-astralhash --watchdog" } + @{ Algorithm = "BCD"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 3; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo bcd --watchdog" } # ASIC + @{ Algorithm = "Blake2bBtcc"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo blake2b-btcc --watchdog" } + @{ Algorithm = "Blake2bGlt"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo blake2b-glt --watchdog" } +# @{ Algorithm = "Blake2s"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo blake2s --watchdog" } # ASIC + @{ Algorithm = "Blake3"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 3; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @("NiceHash"); Arguments = " --algo blake3 --watchdog" } +# @{ Algorithm = "Bmw512"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo bmw512 --watchdog" } # ASIC + @{ Algorithm = "C11"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo c11 --watchdog" } + @{ Algorithm = "CurveHash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo curvehash --watchdog" } + @{ Algorithm = "Dedal"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo dedal --watchdog" } # CryptoDredge-v0.27.0 is fastest + @{ Algorithm = "EvrProgPow"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 1; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo evrprogpow --watchdog" } + @{ Algorithm = "FiroPow"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(15, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo firopow --watchdog" } + @{ Algorithm = "Ghostrider"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(180, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo ghostrider --watchdog" } + @{ Algorithm = "GlobalHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo glt-globalhash --watchdog" } + @{ Algorithm = "HashX7"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x7 --watchdog" } + @{ Algorithm = "HeavyHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo heavyhash --watchdog" } # FPGA + @{ Algorithm = "Hex"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo hex --watchdog" } + @{ Algorithm = "HMQ1725"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo hmq1725 --watchdog" } # CryptoDredge-v0.27.0 is fastest + @{ Algorithm = "JeongHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo glt-jeonghash --watchdog" } # Trex-v0.26.8 is fastest + @{ Algorithm = "KawPow"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo kawpow --watchdog" } # NBMiner-v42.3 is fastest +# @{ Algorithm = "Lyra2RE2"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo lyra2v2 --watchdog" } # ASIC +# @{ Algorithm = "Lyra2RE3"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo lyra2v3 --watchdog" } # ASIC + @{ Algorithm = "Lyra2TDC"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo lyra2tdc --watchdog" } + @{ Algorithm = "Lyra2vc0ban"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo lyra2vc0ban --watchdog" } + @{ Algorithm = "MegaBtx"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo megabtx --watchdog" } + @{ Algorithm = "MemeHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo memehash --watchdog" } + @{ Algorithm = "MeowPow"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo meowpow --watchdog" } + @{ Algorithm = "Mike"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo mike --watchdog" } + @{ Algorithm = "NexaPow"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 3; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @("NiceHash"); Arguments = " --algo nexapow --watchdog" } # https://github.com/andru-kun/wildrig-multi/issues/277 +# @{ Algorithm = "Nist5"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 3; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo nist5 --watchdog" } # ASIC + @{ Algorithm = "PadiHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo glt-padihash --watchdog" } + @{ Algorithm = "PawelHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo glt-pawelhash --watchdog" } # Trex-v0.26.8 is fastest +# @{ Algorithm = "Phi"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo phi --watchdog" } # ASIC +# @{ Algorithm = "Phi5"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo phi5 --watchdog" } # Algorithm is dead + @{ Algorithm = "ProgPowEthercore"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpow-ethercore --watchdog" } + @{ Algorithm = "ProgPowQuai"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpow-quai --watchdog" } + @{ Algorithm = "ProgPowSero"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpow-sero --watchdog" } + @{ Algorithm = "ProgPowTelestai"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = "^Pascal$"; ExcludePools = @(); Arguments = " --algo progpow-telestai --watchdog" } + @{ Algorithm = "ProgPowVeil"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpow-veil --watchdog" } + @{ Algorithm = "ProgPowVeriblock"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo vprogpow --watchdog" } + @{ Algorithm = "ProgPowZ"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 1; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpowz --watchdog" } +# @{ Algorithm = "Pufferfish2BMB"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 8; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo pufferfish2 --watchdog" } # waiting for coin to resurrect + @{ Algorithm = "RWAHash"; Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo rwahash --watchdog" } +# @{ Algorithm = "Quark"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo quark --watchdog" } # ASIC +# @{ Algorithm = "Quibit"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo qui --watchdog" } # ASIC +# @{ Algorithm = "SHA256"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha256 --watchdog" } # ASIC +# @{ Algorithm = "SHA256d"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha256d --watchdog" } # ASIC + @{ Algorithm = "SHAndwich256"; Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo skydoge --watchdog" } # Trex-v0.26.8 is fastest + @{ Algorithm = "SHA256csm"; Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha256csm --watchdog" } + @{ Algorithm = "SHA256t"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha256t --watchdog" } + @{ Algorithm = "SHA256q"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha256q --watchdog" } + @{ Algorithm = "SHA512256d"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha512256d --watchdog" } + @{ Algorithm = "Skein2"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo skein2 --watchdog" } # CcminerAlexis78-v1.5.2 is fastest + @{ Algorithm = "SkunkHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo skunkhash --watchdog" } # Algorithm is dead + @{ Algorithm = "Timetravel"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo timetravel --watchdog" } + @{ Algorithm = "Timetravel10"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo timetravel10 --watchdog" } +# @{ Algorithm = "Tribus"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo tribus --watchdog" } # ASIC +# @{ Algorithm = "X11"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x11 --watchdog" } # ASIC +# @{ Algorithm = "X11ghost"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x11ghost --watchdog" } # ASIC + @{ Algorithm = "X11k"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x11k --watchdog" } +# @{ Algorithm = "X12"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x12 --watchdog" } # ASIC +# @{ Algorithm = "X13"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x13 --watchdog" } # ASIC +# @{ Algorithm = "X14"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x14 --watchdog" } # ASIC +# @{ Algorithm = "X15"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x15 --watchdog" } # ASIC +# @{ Algorithm = "X16r"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 3; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x16r --watchdog" } # ASIC + @{ Algorithm = "X16rt"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x16rt --watchdog" } # FPGA + @{ Algorithm = "X16rv2"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 3; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x16rv2 --watchdog" } + @{ Algorithm = "X16s"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x16s --watchdog" } # FPGA + @{ Algorithm = "X17"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x17 --watchdog" } + @{ Algorithm = "X18"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x18 --watchdog" } # ASIC + @{ Algorithm = "X20r"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x20r --watchdog" } # ASIC + @{ Algorithm = "X21s"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(120, 45); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x21s --watchdog" } # Trex-v0.26.8 is fastest + @{ Algorithm = "X22"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x22 --watchdog" } + @{ Algorithm = "X22i"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x22i --watchdog" } # Not yet supported on Nvidia + @{ Algorithm = "X25x"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x25x --watchdog" } # Not yet supported on Nvidia + @{ Algorithm = "X33"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x33 --watchdog" } + @{ Algorithm = "Xevan"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo xevan --watchdog" } ) $Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet }) diff --git a/Miners/XLArig-v5.2.4.ps1 b/Miners/XLArig-v5.2.4.ps1 index 07004dc5..002a00b7 100644 --- a/Miners/XLArig-v5.2.4.ps1 +++ b/Miners/XLArig-v5.2.4.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> # https://github.com/scala-network/XLArig/issues/59; Need to remove temp fix in \Includes\MinerAPIs\XMrig.psm1 when resolved diff --git a/Miners/XmRig-v6.22.0.3.ps1 b/Miners/XmRig-v6.22.0.3.ps1 index af148f9b..af48839c 100644 --- a/Miners/XmRig-v6.22.0.3.ps1 +++ b/Miners/XmRig-v6.22.0.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ "AMD", "CPU", "INTEL" -contains $_.Type -or $_.OpenCL.ComputeCapability -gt "5.0" }))) { Return } diff --git a/Miners/XmrStak-v2.10.8.ps1 b/Miners/XmrStak-v2.10.8.ps1 index 76840dc0..6f09ef92 100644 --- a/Miners/XmrStak-v2.10.8.ps1 +++ b/Miners/XmrStak-v2.10.8.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -ne "NVIDIA" -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/ZealotEnemy-v2.6.3.ps1 b/Miners/ZealotEnemy-v2.6.3.ps1 index ec5b96d1..ce792adc 100644 --- a/Miners/ZealotEnemy-v2.6.3.ps1 +++ b/Miners/ZealotEnemy-v2.6.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 eafcfb15..5bc88ea0 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.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> 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 } diff --git a/Pools/HashCryptos.ps1 b/Pools/HashCryptos.ps1 index d96cdb5b..2f499567 100644 --- a/Pools/HashCryptos.ps1 +++ b/Pools/HashCryptos.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\HashCryptos.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Param( diff --git a/Pools/HiveON.ps1 b/Pools/HiveON.ps1 index 0e89aaf9..3395a2e2 100644 --- a/Pools/HiveON.ps1 +++ b/Pools/HiveON.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\Hiveon.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Param( diff --git a/Pools/MiningDutch.ps1 b/Pools/MiningDutch.ps1 index 5ce04f3c..16e5001e 100644 --- a/Pools/MiningDutch.ps1 +++ b/Pools/MiningDutch.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\MiningDutch.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Param( diff --git a/Pools/NiceHash.ps1 b/Pools/NiceHash.ps1 index acf14c4b..677318b6 100644 --- a/Pools/NiceHash.ps1 +++ b/Pools/NiceHash.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\NiceHash.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Param( diff --git a/Pools/ProHashing.ps1 b/Pools/ProHashing.ps1 index e96eecb8..e2ad6e09 100644 --- a/Pools/ProHashing.ps1 +++ b/Pools/ProHashing.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\ProHashing.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Param( diff --git a/Pools/ZPool.ps1 b/Pools/ZPool.ps1 index 6e2f84a0..ea75d6cb 100644 --- a/Pools/ZPool.ps1 +++ b/Pools/ZPool.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\ZPool.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Param( diff --git a/Pools/ZergPool.ps1 b/Pools/ZergPool.ps1 index 5b50715b..0e96dc83 100644 --- a/Pools/ZergPool.ps1 +++ b/Pools/ZergPool.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\ZergPool.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> Param( diff --git a/README.md b/README.md index 5066f7bb..68c1e788 100644 --- a/README.md +++ b/README.md @@ -297,7 +297,7 @@ Recommended/optimal Windows AMD driver UG-Miner is currently tested on the following rigs: -- Windows11-1xGTX1030-2GB/1xRTX-3060-12GB/1xGTX750Ti-2GB/1xRX580-8GB/1xRX5700-8GB/Inteli5-8600K +- Windows11-1xGTX1030-2GB/1xRTX-3060-12GB/1xGTX750Ti-2GB/1xRX5700-8GB/1xRX6600-8GB/Inteli5-8600K - Windows11-1xMX250/Inteli10-10210u ## Developer donation diff --git a/UG-Miner.ps1 b/UG-Miner.ps1 index b29e9c27..510b0457 100644 --- a/UG-Miner.ps1 +++ b/UG-Miner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: UG-Miner.ps1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> using module .\Includes\Include.psm1 @@ -299,14 +299,14 @@ $Variables.Branding = [PSCustomObject]@{ BrandName = "UG-Miner" BrandWebSite = "https://github.com/UselessGuru/UG-Miner" ProductLabel = "UG-Miner" - Version = [System.Version]"6.3.1" + Version = [System.Version]"6.3.2" } $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.4.3) which can be downloaded from https://github.com/PowerShell/powershell/releases.`n`n" -ForegroundColor Red + Write-Host "Unsupported PWSH version $($PSVersiontable.PSVersion.ToString()) detected.`n$($Variables.Branding.BrandName) requires at least PWSH version 7.0.0 (Recommended is 7.4.3) 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.4.3) which can be downloaded from https://github.com/PowerShell/powershell/releases.", 0, "Terminating error - Cannot continue!", 4112) | Out-Null Exit } @@ -316,26 +316,6 @@ $Variables.MainPath = (Split-Path $MyInvocation.MyCommand.Path) $Variables.ConfigFile = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($ConfigFile) $Variables.PoolsConfigFile = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($PoolsConfigFile) -If (((Get-CimInstance CIM_Process).Where({ $_.CommandLine -like "PWSH* -Command $($Variables.MainPath)*.ps1 *" }).CommandLine).Count -gt 1) { - # Another instance is already running. Try again in 20 seconds (previous instance might be from autoupdate) - Write-Host "Verifying that no other instance of $($Variables.Branding.ProductLabel) is running..." - Start-Sleep 20 - If (((Get-CimInstance CIM_Process).Where({ $_.CommandLine -like "PWSH* -Command $($Variables.MainPath)*.ps1 *" }).CommandLine).Count -gt 1) { - Write-Host "Terminating Error - Another instance of $($Variables.Branding.ProductLabel) is already running." -ForegroundColor "Red" - $WscriptShell.Popup("Another instance of $($Variables.Branding.ProductLabel) is already running.", 0, "Terminating error - Cannot continue!", 4112) | Out-Null - Exit - } -} - -# Internet connection must be available -$NetworkInterface = (Get-NetConnectionProfile).Where({ $_.IPv4Connectivity -eq "Internet" }).InterfaceIndex -$Variables.MyIP = If ($NetworkInterface) { (Get-NetIPAddress -InterfaceIndex $NetworkInterface -AddressFamily IPV4).IPAddress } Else { $null } -If (-not $Variables.MyIP) { - Write-Host "Terminating Error - No internet connection." -ForegroundColor "Red" - $WscriptShell.Popup("No internet connection", 0, "Terminating error - Cannot continue!", 4112) | Out-Null - Exit -} - # Create directories If (-not (Test-Path -LiteralPath ".\Cache" -PathType Container)) { New-Item -Path . -Name "Cache" -ItemType Directory | Out-Null } If (-not (Test-Path -LiteralPath ".\Config" -PathType Container)) { New-Item -Path . -Name "Config" -ItemType Directory | Out-Null } @@ -351,17 +331,35 @@ $Variables.AllCommandLineParameters = [Ordered]@{ } } ) -Write-Host "$($Variables.Branding.ProductLabel) is getting ready. Please wait..." - -Write-Host "`nPreparing environment and loading data files..." +Write-Host "Preparing environment and loading data files..." -ForegroundColor Yellow Initialize-Environment # Read configuration [Void](Read-Config -ConfigFile $Variables.ConfigFile) -Write-Message -Level Info "Starting $($Variables.Branding.ProductLabel)® v$($Variables.Branding.Version) © 2017-$([DateTime]::Now.Year) UselessGuru" +Write-Message -Level Info "Starting $($Variables.Branding.ProductLabel)® v$($Variables.Branding.Version) © 2017-$([DateTime]::Now.Year) UselessGuru..." Write-Host "" +If (((Get-CimInstance CIM_Process).Where({ $_.CommandLine -like "PWSH* -Command $($Variables.MainPath)*.ps1 *" }).CommandLine).Count -gt 1) { + # Another instance is already running. Try again in 20 seconds (previous instance might be from autoupdate) + Write-Host "Verifying that no other instance of $($Variables.Branding.ProductLabel) is running..." + Start-Sleep 20 + If (((Get-CimInstance CIM_Process).Where({ $_.CommandLine -like "PWSH* -Command $($Variables.MainPath)*.ps1 *" }).CommandLine).Count -gt 1) { + Write-Host "Terminating Error - Another instance of $($Variables.Branding.ProductLabel) is already running." -ForegroundColor "Red" + $WscriptShell.Popup("Another instance of $($Variables.Branding.ProductLabel) is already running.", 0, "Terminating error - Cannot continue!", 4112) | Out-Null + Exit + } +} + +# Internet connection must be available +$NetworkInterface = (Get-NetConnectionProfile).Where({ $_.IPv4Connectivity -eq "Internet" }).InterfaceIndex +$Variables.MyIP = If ($NetworkInterface) { (Get-NetIPAddress -InterfaceIndex $NetworkInterface -AddressFamily IPV4).IPAddress } Else { $null } +If (-not $Variables.MyIP) { + Write-Host "Terminating Error - No internet connection." -ForegroundColor "Red" + $WscriptShell.Popup("No internet connection", 0, "Terminating error - Cannot continue!", 4112) | Out-Null + Exit +} + # Update config file to include all new config items If (-not $Config.ConfigFileVersion -or [System.Version]::Parse($Config.ConfigFileVersion) -lt $Variables.Branding.Version) { Update-ConfigFile -ConfigFile $Variables.ConfigFile @@ -374,22 +372,40 @@ If ($Config.Transcript) { Start-Transcript -Path ".\Debug\$((Get-Item $MyInvocat Start-LogReader If (-not $Variables.FreshConfig) { Write-Message -Level Info "Using configuration file '$($Variables.ConfigFile.Replace("$(Convert-Path ".\")\", ".\"))'." } +ElseIf ((Get-Command "Get-MpPreference") -and (Get-MpComputerStatus)) { + # Exclude from AV scanner + Try { + If (-not $Variables.IsLocalAdmin) { Write-Message -Level Info "Initiating request to exclude the $($Variables.Branding.ProductLabel) directory from Microsoft Defender Antivirus scans to avoid false virus alerts..." } + Start-Process "pwsh" "-Command Write-Host 'Excluding UG-Miner directory ''$(Convert-Path .)'' from Microsoft Defender Antivirus scans...'; Start-Sleep -Seconds 5; Import-Module Defender -SkipEditionCheck; Add-MpPreference -ExclusionPath '$(Convert-Path .)'" -Verb runAs + Write-Message -Level Info "Excluded the $($Variables.Branding.ProductLabel) directory from Microsoft Defender Antivirus scans." + } + Catch { + $WscriptShell.Popup("Could not to exclude the directory`n$($Variables.Branding.ProductLabel)`n from Microsoft Defender Antivirus scans. This may lead to unpredictable results.", 0, "Terminating error - Cannot continue!", 4112) | Out-Null + Exit + } + # Unblock files + If (Get-Command "Unblock-File" -ErrorAction Ignore) { + If (Get-Item .\* -Stream Zone.*) { + Write-Host "Unblocking files that were downloaded from the internet..." -ForegroundColor Yellow + Get-ChildItem -Path . -Recurse | Unblock-File + } + } +} Write-Host "" #Prerequisites check Write-Message -Level Verbose "Verifying pre-requisites..." -$Prerequisites = @( - "$env:SystemRoot\System32\MSVCR120.dll", - "$env:SystemRoot\System32\VCRUNTIME140.dll", - "$env:SystemRoot\System32\VCRUNTIME140_1.dll" -) - If ([System.Environment]::OSVersion.Version -lt [Version]"10.0.0.0") { Write-Message -Level Error "$($Variables.Branding.ProductLabel) requires at least Windows 10." $WscriptShell.Popup("$($Variables.Branding.ProductLabel) requires at least Windows 10.", 0, "Terminating error - Cannot continue!", 4112) | Out-Null Exit } +$Prerequisites = @( + "$env:SystemRoot\System32\MSVCR120.dll", + "$env:SystemRoot\System32\VCRUNTIME140.dll", + "$env:SystemRoot\System32\VCRUNTIME140_1.dll" +) If ($PrerequisitesMissing = @($Prerequisites.Where({ -not (Test-Path -LiteralPath $_ -PathType Leaf) }))) { $PrerequisitesMissing.ForEach({ Write-Message -Level Warn "$_ is missing." }) Write-Message -Level Error "Please install the required runtime modules. Download and extract" @@ -441,12 +457,12 @@ Import-Module NetSecurity -ErrorAction Ignore Import-Module Defender -ErrorAction Ignore -SkipEditionCheck # Unblock files -If (Get-Item .\* -Stream Zone.*) { - Write-Host "Unblocking files that were downloaded from the internet..." -ForegroundColor Yellow - If (Get-Command "Unblock-File" -ErrorAction Ignore) { Get-ChildItem -Path . -Recurse | Unblock-File } - If ((Get-Command "Get-MpPreference") -and (Get-MpComputerStatus) -and (Get-MpPreference).ExclusionPath -notcontains (Convert-Path .)) { - Start-Process "pwsh" "-Command Import-Module Defender; Add-MpPreference -ExclusionPath '$(Convert-Path .)'" -Verb runAs +If (Get-Command "Unblock-File" -ErrorAction Ignore) { + If ($UnblockFiles = (Get-ChildItem -Path . -Recurse).Where({ -not $_.PsIsContainer -and $_.FullName -notmatch "Logs|Stats" }).Where({ Try { Get-Item $_ -Stream Zone.* } Catch { } })) { + Write-Host "Unblocking $($UnblockFiles.Count) file$(If ($UnblockFiles.Count -ne 1) { "s" }) that $(If ($UnblockFiles.Count -eq 1) { "was" } Else { "were" }) downloaded from the internet..." -ForegroundColor Yellow + $UnblockFiles | Unblock-File } + Remove-Variable UnblockFiles -ErrorAction Ignore } Write-Message -Level Verbose "Setting variables..." @@ -470,7 +486,7 @@ $Variables.Brains = @{ } $Variables.CPUfeatures = (Get-CpuId).Features | Sort-Object $Variables.CycleStarts = @() $Variables.IsLocalAdmin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]"Administrator") -$Variables.LastDonated = [DateTime]::Now.AddDays( -1 ).AddHours(1) +$Variables.LastDonated = [DateTime]::Now.AddDays(-1).AddHours(1) $Variables.MiningEarning = $Variables.MiningProfit = $Variables.MiningPowerCost = [Double]::NaN $Variables.NewMiningStatus = If ($Config.StartupMode -match "Paused|Running") { $Config.StartupMode } Else { "Idle" } $Variables.RestartCycle = $true @@ -541,15 +557,6 @@ If ($Config.WebGUI) { Start-APIServer } Function MainLoop { - If ($Variables.MiningStatus -eq "Running") { - # Core watchdog. Sometimes core loop gets stuck - If (-not $Variables.SuspendCycle -and $Variables.MyIP -and $Variables.EndCycleTime -and $CoreRunspace.Job.IsCompleted -eq $false -and [DateTime]::Now.ToUniversalTime() -gt $Variables.EndCycleTime.AddSeconds(15 * $Config.Interval)) { - Write-Message -Level Warn "Core cycle is stuck - restarting..." - Stop-Core - Start-Core - } - } - # If something (pause button, idle timer, WebGUI/config) has set the RestartCycle flag, stop and start mining to switch modes immediately If ($Variables.RestartCycle -or ($LegacyGUIform -and -not $LegacyGUIminingSummaryLabel.Text)) { $Variables.RestartCycle = $false @@ -575,46 +582,60 @@ Function MainLoop { "Idle" { If ($Variables.MiningStatus) { $Variables.Summary = "'Stop Mining' button clicked." - Write-Host "`n" + Write-Host "" Write-Message -Level Info $Variables.Summary Stop-Core Stop-Brain - # If ($Config.ReportToServer) { Write-MonitoringData } + Stop-BalancesTracker - # Load currency exchange rates - [Void](Get-Rate) + # If ($Config.ReportToServer) { Write-MonitoringData } } If (-not $Variables.FreshConfig) { + Write-Host "" $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-Host "" Write-Message -Level Info $Variables.Summary - Stop-Core + If ($Global:CoreRunspace.Job.IsCompleted -eq $false) { + $Global:CoreRunspace.PowerShell.Stop() + $Variables.Remove("EndCycleTime") + $Variables.Remove("Timer") + } + + #Stop all miners + ForEach ($Miner in $Variables.Miners.Where({ [MinerStatus]::Running, [MinerStatus]::DryRun -contains $_.Status })) { + $Miner.SetStatus([MinerStatus]::Idle) + $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) + } + Remove-Variable Miner -ErrorAction Ignore + $Variables.MinersRunning = [Miner[]]@() + Stop-Brain @($Variables.Brains.psBase.Keys.Where({ $_ -notin (Get-PoolBaseName $Variables.PoolName) })) Start-Brain @(Get-PoolBaseName $Variables.PoolName) + If ($Config.BalancesTrackerPollInterval -gt 0) { Start-BalancesTracker } # If ($Config.ReportToServer) { Write-MonitoringData } + Write-Host "" $Variables.Summary = "$($Variables.Branding.ProductLabel) is paused.
Click the 'Start mining' button to make money." - Write-Host "`n" Write-Message -Level Info ($Variables.Summary -replace "
", " ") Break } "Running" { - If ($Variables.Timer) { + If ($Variables.MiningStatus) { $Variables.Summary = "'Start Mining' button clicked." - Write-Host "`n" + Write-Host "" Write-Message -Level Info $Variables.Summary } Start-Brain @(Get-PoolBaseName $Config.PoolName) + If ($Config.BalancesTrackerPollInterval -gt 0) { Start-BalancesTracker } Start-Core Break } @@ -624,7 +645,11 @@ Function MainLoop { If ($LegacyGUIform) { Update-GUIstatus } } - If ($Config.BalancesTrackerPollInterval -gt 0 -and $Variables.NewMiningStatus -ne "Idle") { Start-BalancesTracker } Else { Stop-BalancesTracker } + If ($Config.BalancesTrackerPollInterval -gt 0 -and $Variables.NewMiningStatus -ne "Idle") { Start-BalancesTracker } + ElseIf ($Variables.NewMiningStatus -ne "Idle" -and $Variables.RatesUpdated -lt [DateTime]::Now.ToUniversalTime().AddMinutes( - 15)) { + # Update rates every 15 minutes + [Void](Get-Rate) + } If ($Variables.MiningStatus -eq "Running") { If ($Config.IdleDetection) { @@ -637,7 +662,7 @@ Function MainLoop { } Start-Core } - ElseIf ($CoreRunspace.Job.IsCompleted -eq $false) { + ElseIf ($Global:CoreRunspace.Job.IsCompleted -eq $false) { $Message = "System activity detected.
Mining is suspended until system is idle for $($Config.IdleSec) second$(If ($Config.IdleSec -ne 1) { "s" })." Write-Message -Level Verbose ($Message -replace "
", " ") Stop-Core @@ -651,7 +676,7 @@ Function MainLoop { Remove-Variable Message } } - ElseIf ($CoreRunspace.Job.IsCompleted -ne $false) { + ElseIf ($Global:CoreRunspace.Job.IsCompleted -ne $false) { If ($Variables.Timer) { Write-Message -Level Warn "Core cycle stopped abnormally - restarting..." Stop-Core @@ -659,6 +684,12 @@ Function MainLoop { Start-Core If ($LegacyGUIform) { Update-GUIstatus } } + ElseIf (-not $Variables.SuspendCycle -and -not $Variables.MinersBenchmarkingOrMeasuring -and [DateTime]::Now.ToUniversalTime() -gt $Variables.BeginCycleTimeCycleTime.AddSeconds(1.5 *$Config.Interval)) { + # Core watchdog. Sometimes core loop gets stuck + Write-Message -Level Warn "Core cycle is stuck - restarting..." + Stop-Core + Start-Core + } } ElseIf ((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) { diff --git a/Version.txt b/Version.txt index 20ff6201..c2874fa6 100644 --- a/Version.txt +++ b/Version.txt @@ -1,6 +1,6 @@ { "Product": "UG-Miner", - "Version": "6.3.1", + "Version": "6.3.2", "AutoUpdate": true, "Uri": "https://github.com/UselessGuru/UG-Miner/archive/refs/heads/master.zip", "Message": "https://github.com/UselessGuru/UG-Miner/releases" diff --git a/Web/scripts/demo.ps1 b/Web/scripts/demo.ps1 index 31077581..5617a706 100644 --- a/Web/scripts/demo.ps1 +++ b/Web/scripts/demo.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: demo.psm1 -Version: 6.3.1 -Version date: 2024/09/06 +Version: 6.3.2 +Version date: 2024/09/09 #> # Try running this script as: http://localhost:3999/scripts/demo.ps1?message=Hello%20World!