diff --git a/Includes/Core.ps1 b/Includes/Core.ps1 index 2798b87a..b28b0be2 100644 --- a/Includes/Core.ps1 +++ b/Includes/Core.ps1 @@ -19,7 +19,7 @@ along with this program. If not, see . <# Product: UG-Miner File: Core.ps1 -Version: 6.2.20 +Version: 6.2.21 Version date: 2024/07/28 #> @@ -1498,18 +1498,18 @@ Do { $_.InvocationInfo | Format-List -Force >> $ErrorLogFile } - # Wait until 1 second since loop start has passed - While ([DateTime]::Now -lt $LoopEnd) { Start-Sleep -Milliseconds 50 } - # Core suspended with P in MainLoop While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 } + # Wait until 1 second since loop start has passed + While ([DateTime]::Now -lt $LoopEnd) { Start-Sleep -Milliseconds 50 } + # Exit loop when # - a miner crashed # - a benchmarking miner has collected enough samples # - WarmupTimes[0] is reached and no readout from miner # - when not benchmnarking: Interval time is over - } While (-not $Config.DryRun -and $Variables.NewMiningStatus -eq "Running" -and -not $Variables.EndCycleMessage -and ([DateTime]::Now.ToUniversalTime() -le $Variables.EndCycleTime -or $Variables.BenchmarkingOrMeasuringMiners)) + } While ($Variables.NewMiningStatus -eq "Running" -and -not $Variables.EndCycleMessage -and ((-not $Config.DryRun -and [DateTime]::Now.ToUniversalTime() -le $Variables.EndCycleTime) -or $Variables.BenchmarkingOrMeasuringMiners)) Remove-Variable LoopEnd # Expire brains loop to collect data diff --git a/Miners/TTMiner-v2024.3.3b5.ps1 b/Miners/TTMiner-v2024.3.3b5.ps1 deleted file mode 100644 index 7712dd74..00000000 --- a/Miners/TTMiner-v2024.3.3b5.ps1 +++ /dev/null @@ -1,150 +0,0 @@ -<# -Copyright (c) 2018-2024 UselessGuru - -UG-Miner is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -UG-Miner is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -#> - -<# -Product: UG-Miner -Version: 6.2.20 -Version date: 2024/07/28 -#> - -If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "NVIDIA" -and $_.OpenCL.ComputeCapability -gt "5.0") -or "AMD", "NVIDIA" -contains $_.Type } ))) { Return } - -$URI = Switch ($Variables.DriverVersion.CUDA) { - { $_ -ge "11.0" } { "https://github.com/TrailingStop/TT-Miner-beta/releases/download/2024.3.3-beta5/TT-Miner-2024.3.3b5.zip" } - Default { Return } -} -$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName -$Path = "$PWD\Bin\$Name\TT-Miner.exe" -$DeviceEnumerator = "Type_Index" - -$Algorithms = @( - @{ Algorithm = "Blake3"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a Blake3" } - @{ Algorithm = "EtcHash"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a EtcHash" } - @{ Algorithm = "Ethash"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.00; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a Ethash" } - @{ Algorithm = "EthashB3"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.00; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a EthashB3" } - @{ Algorithm = "EvrProPow"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a EvrProgPow" } - @{ Algorithm = "FiroPow"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a FiroPow" } - @{ Algorithm = "FishHash"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a fishhash" } - @{ Algorithm = "KawPow"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(75, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a KawPow" } - @{ Algorithm = "MeowPow"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(120, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a meowpow" } - @{ Algorithm = "ProgPowEpic"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -c EPIC" } - @{ Algorithm = "ProgPowSero"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -c SERO" } - @{ Algorithm = "ProgPowVeil"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -c VEIL" } - @{ Algorithm = "ProgPowZ"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -c ZANO" } - @{ Algorithm = "ProgPowVeriblock"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a vProgPow" } - @{ Algorithm = "SCCpow"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -c SCC" } -# @{ Algorithm = "SHA256d"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a SHA256D" } # ASIC - @{ Algorithm = "SHA256dt"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a SHA256DT" } - @{ Algorithm = "SHA3D"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a Sha3D" } -# @{ Algorithm = "SHA512256d"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @("GCN4"); ExcludePools = @(); Arguments = " -a SHA512256D" } # https://github.com/TrailingStop/TT-Miner-beta/issues/12 - @{ Algorithm = "SHA3Solidity"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a SHA3SOL" } - @{ Algorithm = "UbqHash"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a UbqHash" } - - @{ Algorithm = "Ghostrider"; Type = "CPU"; Fee = @(0.01); MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a Ghostrider" } - @{ Algorithm = "Flex"; Type = "CPU"; Fee = @(0.01); MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a Flex" } - @{ Algorithm = "SpectreX"; Type = "CPU"; Fee = @(0.01); MinerSet = 1; WarmupTimes = @(60, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a SpectreX" } - @{ Algorithm = "XelisHassh"; Type = "CPU"; Fee = @(0.01); MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a Xelis" } - - @{ Algorithm = "Blake3"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a Blake3" } - @{ Algorithm = "EtcHash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a EtcHash" } - @{ Algorithm = "Ethash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.00; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a Ethash" } - @{ Algorithm = "EthashB3"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.00; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a EthashB3" } - @{ Algorithm = "EvrProPow"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a EvrProgPow" } - @{ Algorithm = "FiroPow"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a FiroPow" } - @{ Algorithm = "FishHash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a FishHash" } - @{ Algorithm = "Ghostrider"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 3; MinerSet = 2; WarmupTimes = @(300, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a Ghostrider" } - @{ Algorithm = "KawPow"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(75, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a KawPow" } - @{ Algorithm = "MeowPow"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(120, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a meowpow" } - @{ Algorithm = "ProgPowEpic"; Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -c EPIC" } - @{ Algorithm = "ProgPowSero"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -c SERO" } - @{ Algorithm = "ProgPowVeil"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -c VEIL" } - @{ Algorithm = "ProgPowZ"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -c ZANO" } - @{ Algorithm = "ProgPowVeriblock"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a vProgPow" } - @{ Algorithm = "SCCpow"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -c SCC" } -# @{ Algorithm = "SHA256d"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a SHA256D" } # ASIC - @{ Algorithm = "SHA256dt"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a SHA256DT" } - @{ Algorithm = "SHA3D"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a Sha3D" } - @{ Algorithm = "SHA512256d"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a SHA512256D" } - @{ Algorithm = "SHA3Solidity"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a SHA3SOL" } - @{ Algorithm = "UbqHash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -a UbqHash" } -) - -$Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet }) -$Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithm] }) - -If ($Algorithms) { - - ($Devices | Select-Object Type, Model -Unique).ForEach( - { - $Model = $_.Model - $Type = $_.Type - $MinerDevices = $Devices.Where({ $_.Model -eq $Model -and $_.Type -eq $Type}) - $MinerAPIPort = $Config.APIPort + ($MinerDevices.Id | Sort-Object -Top 1) + 1 - - $Algorithms.Where({ $_.Type -eq $Type }).ForEach( - { - $ExcludeGPUarchitectures = $_.ExcludeGPUarchitectures - If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUarchitectures })) { - - # $ExcludePools = $_.ExcludePools - # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) { - ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] })) { - - $MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB - If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { - - $MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($Pool.AlgorithmVariant)" - - If ("AKA", "ALPH", "ALT", "ARL", "AVS", "BBC", "BCH", "BLACK", "BNBTC", "BTC", "BTRM", "BUT", "CLO", "CLORE", "EGAZ", "EGEM", "ELH", "EPIC", "ETC", "ETHF", "ETHO", "ETHW", "ETI", "ETP", "EVOX", "EVR", "EXP", "FiroPowFIRO", "FITA", "FRENS", "GRAMS", "GSPC", "HVQ", "IRON", "JGC", "KAW", "KCN", "KIIRO", "LAB", "LTR", "MEOW", "MEWC", "NAPI", "NEOX", "NOVO", "OCTA", "PAPRY", "PRCO", "REDE", "RTH", "RTM", "RVN", "RXD", "SATO", "SATOX", "SCC", "SERO", "THOON", "TTM", "UBQ", "VBK", "VEIL", "VKAX", "VTE", "XNA", "YERB", "ZANO", "ZELS", "ZIL", "ZKBTC" -contains $Pool.Currency) { - $Arguments = "$($_.Arguments -replace ' -[a|c] \w+') -c $($Pool.Currency)" - } - Else { - $Arguments = $_.Arguments - } - If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace ' -intensity [0-9\.]+' } - $Arguments += " -o $(If ($_.Algorithm -match "^Ethash") { "stratum+" })$(If ($Pool.PoolPorts[1]) { "ssl://" } Else { "tcp://" })$($Pool.Host):$($Pool.PoolPorts | Select-Object -Last 1)" - $Arguments += " -u $($Pool.User)" - If ($Pool.Pass) { $Arguments += " -p $($Pool.Pass)" } - If ($Pool.WorkerName) { $Arguments += " -w $($Pool.WorkerName)" } - - # Allow more time to build larger DAGs, must use type cast to keep values in $_ - $WarmupTimes = [UInt16[]]$_.WarmupTimes - $WarmupTimes[0] += [UInt16]($Pool.DAGSizeGiB * 5) - - [PSCustomObject]@{ - API = "EthMiner" - Arguments = "$Arguments -report-average 5 -report-interval 5$(If ($_.Algorithm -match $Variables.RegexAlgoHasDAG) { " -daginfo" }) -b 127.0.0.1:$($MinerAPIPort)$(If ($_.Type -eq "CPU") { " -cpu $AvailableMinerDevices.$($AvailableMinerDevices.CIM.NumberOfLogicalProcessors -$($Config.CPUMiningReserveCPUcore))" } Else { " -d $(($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0:x}' -f $_ }) -join ',')" })" - DeviceNames = $AvailableMinerDevices.Name - Fee = $_.Fee # Dev fee - MinerSet = $_.MinerSet - MinerUri = "http://127.0.0.1:$($MinerAPIPort)" - Name = $MinerName - Path = $Path - Port = $MinerAPIPort - Type = $_.Type - 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 }) - } - } - } - } - } - ) - } - ) -}