public Algorithm GetAlgorithm(MinerBaseType minerBaseType, AlgorithmType algorithmType,
                                      AlgorithmType secondaryAlgorithmType)
        {
            var toSetIndex = AlgorithmSettings.FindIndex(a =>
                                                         a.NiceHashID == algorithmType && a.MinerBaseType == minerBaseType &&
                                                         a.SecondaryNiceHashID == secondaryAlgorithmType);

            return(toSetIndex > -1 ? AlgorithmSettings[toSetIndex] : null);
        }
Exemple #2
0
        public Algorithm GetAlgorithm(MinerBaseType MinerBaseType, AlgorithmType AlgorithmType, AlgorithmType SecondaryAlgorithmType)
        {
            int toSetIndex = this.AlgorithmSettings.FindIndex((a) => a.NiceHashID == AlgorithmType && a.MinerBaseType == MinerBaseType && a.SecondaryNiceHashID == SecondaryAlgorithmType);

            if (toSetIndex > -1)
            {
                return(this.AlgorithmSettings[toSetIndex]);
            }
            return(null);
        }
Exemple #3
0
        /// <summary>
        /// The GetAlgorithm
        /// </summary>
        /// <param name="MinerBaseType">The <see cref="MinerBaseType"/></param>
        /// <param name="AlgorithmType">The <see cref="AlgorithmType"/></param>
        /// <param name="SecondaryAlgorithmType">The <see cref="AlgorithmType"/></param>
        /// <returns>The <see cref="Algorithm"/></returns>
        public Algorithm GetAlgorithm(MinerBaseType MinerBaseType, AlgorithmType AlgorithmType, AlgorithmType SecondaryAlgorithmType)
        {
            int toSetIndex = AlgorithmSettings.FindIndex((a) => a.CryptoMiner937ID == AlgorithmType && a.MinerBaseType == MinerBaseType && a.SecondaryCryptoMiner937ID == SecondaryAlgorithmType);

            if (toSetIndex > -1)
            {
                return(AlgorithmSettings[toSetIndex]);
            }
            return(null);
        }
        private static MinerType GetMinerType(DeviceType deviceType, MinerBaseType minerBaseType, AlgorithmType algorithmType)
        {
            //if (MinerBaseType.cpuminer == minerBaseType) {
            //    return MinerType.cpuminer_opt;
            //}
            switch (minerBaseType)
            {
            case MinerBaseType.sgminer:
                return(MinerType.sgminer);

            case MinerBaseType.ccminer:
            case MinerBaseType.ccminer_alexis:
                return(MinerType.ccminer);

            case MinerBaseType.Claymore:
                switch (algorithmType)
                {
                case AlgorithmType.DaggerHashimoto:
                    return(MinerType.ClaymoreDual);
                }
                break;

            case MinerBaseType.ethminer:
                if (DeviceType.AMD == deviceType)
                {
                    return(MinerType.ethminer_OCL);
                }
                if (DeviceType.NVIDIA == deviceType)
                {
                    return(MinerType.ethminer_CUDA);
                }
                break;

            case MinerBaseType.EWBF:
                return(MinerType.EWBF);

            case MinerBaseType.trex:
                return(MinerType.trex);

            case MinerBaseType.Phoenix:
                return(MinerType.Phoenix);

            case MinerBaseType.GMiner:
                return(MinerType.GMiner);

            case MinerBaseType.BMiner:
                return(MinerType.BMiner);

            case MinerBaseType.TTMiner:
                return(MinerType.TTMiner);
            }

            return(MinerType.NONE);
        }
Exemple #5
0
        public TRex(HardwareType hardwareType, MinerBaseType minerBaseType) : base("TRex", hardwareType, minerBaseType)
        {
            string versionedDirectory = "";

            MinerFileName         = "t-rex.exe";
            versionedDirectory    = "t-rex-0.11.0-win-cuda10.0";
            MinerWorkingDirectory = Path.Combine(Utils.Core.GetBaseMinersDir(), versionedDirectory);

            ApiPort  = 4067;
            HostName = "127.0.0.1";
        }
Exemple #6
0
        public CCMinerForkNanashi(HardwareType hardwareType, MinerBaseType minerBaseType, HardwareMonitor hardwareMonitor) : base(hardwareType, minerBaseType, hardwareMonitor, false)
        {
            string versionedDirectory = "";

            MinerFileName         = "ccminer.exe";
            versionedDirectory    = "ccminer-2.2-mod-r2";
            MinerWorkingDirectory = Path.Combine(Utils.Core.GetBaseMinersDir(), versionedDirectory);

            ApiPort  = 4093;
            HostName = "127.0.0.1";
        }
        public WildRig(HardwareType hardwareType, MinerBaseType minerBaseType) : base("WildRig", hardwareType, minerBaseType)
        {
            string versionedDirectory = "";

            MinerFileName         = "wildrig.exe";
            versionedDirectory    = "wildrig-multi-0.13.4-beta";
            MinerWorkingDirectory = Path.Combine(Utils.Core.GetBaseMinersDir(), versionedDirectory);

            ApiPort  = 2883;
            HostName = "127.0.0.1";
        }
Exemple #8
0
        public XMRig(HardwareType hardwareType, MinerBaseType minerBaseType) : base("XMRig", hardwareType, minerBaseType)
        {
            string versionedDirectory = "";

            MinerFileName         = "xmrig-notls.exe";
            versionedDirectory    = "xmrig-2.14.4";
            MinerWorkingDirectory = Path.Combine(Utils.Core.GetBaseMinersDir(), versionedDirectory);

            ApiPort  = 8080;
            HostName = "127.0.0.1";
        }
Exemple #9
0
        // NEW START
        ////////////////////////////////////////////
        // Pure functions
        //public static bool IsMinerAlgorithmAvaliable(List<Algorithm> algos, MinerBaseType minerBaseType, AlgorithmType algorithmType) {
        //    return algos.FindIndex((a) => a.MinerBaseType == minerBaseType && a.NiceHashID == algorithmType) > -1;
        //}

        public static string GetPathFor(MinerBaseType minerBaseType, AlgorithmType algoType, DeviceGroupType devGroupType, bool def = false)
        {
            if (!def & configurableMiners.Contains(minerBaseType))
            {
                // Override with internals
                var path = minerPathPackages.Find(p => p.DeviceType == devGroupType)
                           .MinerTypes.Find(p => p.Type == minerBaseType)
                           .Algorithms.Find(p => p.Algorithm == algoType);
                if (path != null)
                {
                    return(path.Path);
                }
            }
            switch (minerBaseType)
            {
            case MinerBaseType.ccminer:
                return(NVIDIA_GROUPS.ccminer_path(algoType, devGroupType));

            case MinerBaseType.sgminer:
                return(AMD_GROUP.sgminer_path(algoType));

            case MinerBaseType.nheqminer:
                return(Data.nheqminer);

            case MinerBaseType.ethminer:
                return(Data.ethminer);

            case MinerBaseType.Claymore:
                return(AMD_GROUP.ClaymorePath(algoType));

            case MinerBaseType.OptiminerAMD:
                return(Data.OptiminerZcashMiner);

            case MinerBaseType.excavator:
                return(Data.excavator);

            case MinerBaseType.XmrStackCPU:
                return(Data.XmrStackCPUMiner);

            case MinerBaseType.ccminer_alexis:
                return(NVIDIA_GROUPS.ccminer_unstable_path(algoType, devGroupType));

            case MinerBaseType.experimental:
                return(EXPERIMENTAL.GetPath(algoType, devGroupType));

            case MinerBaseType.EWBF:
                return(Data.EWBF);

            case MinerBaseType.Prospector:
                return(Data.prospector);
            }
            return(Data.NONE);
        }
Exemple #10
0
        public CryptoDredge(HardwareType hardwareType, MinerBaseType minerBaseType) : base("Ccminer", hardwareType, minerBaseType, true)
        {
            string versionedDirectory = "";

            MinerFileName      = "CryptoDredge.exe";
            versionedDirectory = "CryptoDredge_0.16.1";

            MinerWorkingDirectory = Path.Combine(Utils.Core.GetBaseMinersDir(), versionedDirectory);

            ApiPort  = 4068;
            HostName = "127.0.0.1";
        }
Exemple #11
0
 public Algorithm(MinerBaseType minerBaseType, AlgorithmType niceHashID, string minerName = "", bool enabled = true)
 {
     NiceHashID            = niceHashID;
     AlgorithmName         = AlgorithmNiceHashNames.GetName(NiceHashID);
     MinerBaseTypeName     = Enum.GetName(typeof(MinerBaseType), minerBaseType);
     AlgorithmStringID     = MinerBaseTypeName + "_" + AlgorithmName;
     MinerBaseType         = minerBaseType;
     MinerName             = minerName;
     ExtraLaunchParameters = "";
     LessThreads           = 0;
     Enabled         = enabled;
     BenchmarkStatus = "";
 }
Exemple #12
0
        public static List <int> GetPortsListFor(MinerBaseType minerBaseType, string path, AlgorithmType algorithmType)
        {
            if (_minerReservedPorts != null && _minerReservedPorts.ContainsKey(minerBaseType) &&
                (_minerReservedPorts[minerBaseType] != null && _minerReservedPorts[minerBaseType].ContainsKey(path)) &&
                (_minerReservedPorts[minerBaseType][path] != null &&
                 _minerReservedPorts[minerBaseType][path].ContainsKey(algorithmType) &&
                 _minerReservedPorts[minerBaseType][path][algorithmType] != null))
            {
                return(_minerReservedPorts[minerBaseType][path][algorithmType]);
            }

            return(new List <int>());
        }
        public static List<int> GetPortsListFor(MinerBaseType minerBaseType, string path, AlgorithmType algorithmType)
        {
            // if (_minerReservedPorts != null && _minerReservedPorts.ContainsKey(minerBaseType) &&
            //     (_minerReservedPorts[minerBaseType] != null && _minerReservedPorts[minerBaseType].ContainsKey(path)) &&
            //     (_minerReservedPorts[minerBaseType][path] != null &&
            //      _minerReservedPorts[minerBaseType][path].ContainsKey(algorithmType) &&
            //      _minerReservedPorts[minerBaseType][path][algorithmType] != null))
            // {
            //     return _minerReservedPorts[minerBaseType][path][algorithmType];
            // }

            return new List<int>();
        }
Exemple #14
0
        public Algorithm(MinerBaseType minerBaseType, AlgorithmType niceHashID, string minerName)
        {
            this.AlgorithmName     = AlgorithmNiceHashNames.GetName(niceHashID);
            this.MinerBaseTypeName = Enum.GetName(typeof(MinerBaseType), minerBaseType);
            this.AlgorithmStringID = this.MinerBaseTypeName + "_" + this.AlgorithmName;

            MinerBaseType = minerBaseType;
            NiceHashID    = niceHashID;
            MinerName     = minerName;

            BenchmarkSpeed        = 0.0d;
            ExtraLaunchParameters = "";
            LessThreads           = 0;
            Enabled         = true;
            BenchmarkStatus = "";
        }
        public Algorithm(MinerBaseType minerBaseType, AlgorithmType niceHashID, string minerName)
        {
            NiceHashID = niceHashID;

            AlgorithmName     = AlgorithmNiceHashNames.GetName(NiceHashID);
            MinerBaseTypeName = Enum.GetName(typeof(MinerBaseType), minerBaseType);
            AlgorithmStringID = MinerBaseTypeName + "_" + AlgorithmName;

            MinerBaseType = minerBaseType;
            MinerName     = minerName;

            ExtraLaunchParameters = "";
            LessThreads           = 0;
            Enabled = !(NiceHashID == AlgorithmType.Nist5 ||
                        (NiceHashID == AlgorithmType.NeoScrypt && minerBaseType == MinerBaseType.sgminer));
            BenchmarkStatus = "";
        }
 public static bool IsEquihashGroupLogic(MinerBaseType minerBase, MiningPair a, MiningPair b)
 {
     // eqm
     if (MinerBaseType.eqm == minerBase)
     {
         return(Is_eqm(a, b));
     }
     // nheqmnier
     else if (MinerBaseType.nheqminer == minerBase)
     {
         return(Is_nheqminer(a, b));
     }
     else if (MinerBaseType.ClaymoreAMD == minerBase || MinerBaseType.OptiminerAMD == minerBase)
     {
         return(true);
     }
     return(false);
 }
Exemple #17
0
        public Algorithm(MinerBaseType minerBaseType, AlgorithmType niceHashID, string minerName, AlgorithmType secondaryNiceHashID = AlgorithmType.NONE)
        {
            NiceHashID          = niceHashID;
            SecondaryNiceHashID = secondaryNiceHashID;

            this.AlgorithmName     = AlgorithmNiceHashNames.GetName(DualNiceHashID());
            this.MinerBaseTypeName = Enum.GetName(typeof(MinerBaseType), minerBaseType);
            this.AlgorithmStringID = this.MinerBaseTypeName + "_" + this.AlgorithmName;

            MinerBaseType = minerBaseType;
            MinerName     = minerName;

            BenchmarkSpeed          = 0.0d;
            SecondaryBenchmarkSpeed = 0.0d;
            ExtraLaunchParameters   = "";
            LessThreads             = 0;
            Enabled         = !(NiceHashID == AlgorithmType.Nist5);
            BenchmarkStatus = "";
        }
Exemple #18
0
        public Ccminer(HardwareType hardwareType, MinerBaseType minerBaseType, bool is64Bit) : base("Ccminer", hardwareType, minerBaseType, is64Bit)
        {
            string versionedDirectory = "";

            if (is64Bit)
            {
                MinerFileName      = "ccminer.exe";
                versionedDirectory = "ccminer-lyra3";
            }
            else
            {
                MinerFileName      = "ccminer.exe";
                versionedDirectory = "ccminer-lyra3";
            }
            MinerWorkingDirectory = Path.Combine(Utils.Core.GetBaseMinersDir(), versionedDirectory);

            ApiPort  = 4068;
            HostName = "127.0.0.1";
        }
Exemple #19
0
        // NEW START
        ////////////////////////////////////////////
        // Pure functions
        //public static bool IsMinerAlgorithmAvaliable(List<Algorithm> algos, MinerBaseType minerBaseType, AlgorithmType algorithmType) {
        //    return algos.FindIndex((a) => a.MinerBaseType == minerBaseType && a.NiceHashID == algorithmType) > -1;
        //}

        public static string GetPathFor(MinerBaseType minerBaseType, AlgorithmType algoType, DeviceGroupType devGroupType)
        {
            switch (minerBaseType)
            {
            case MinerBaseType.ccminer:
                return(NVIDIA_GROUPS.ccminer_path(algoType, devGroupType));

            case MinerBaseType.sgminer:
                return(AMD_GROUP.sgminer_path(algoType));

            case MinerBaseType.nheqminer:
                return(Data.nheqminer);

            case MinerBaseType.ethminer:
                return(Data.ethminer);

            case MinerBaseType.Claymore:
                return(AMD_GROUP.ClaymorePath(algoType));

            case MinerBaseType.OptiminerAMD:
                return(Data.OptiminerZcashMiner);

            case MinerBaseType.excavator:
                return(Data.excavator);

            case MinerBaseType.XmrStackCPU:
                return(Data.XmrStackCPUMiner);

            case MinerBaseType.ccminer_alexis:
                return(NVIDIA_GROUPS.ccminer_unstable_path(algoType, devGroupType));

            case MinerBaseType.experimental:
                return(EXPERIMENTAL.GetPath(algoType, devGroupType));

            case MinerBaseType.EWBF:
                return(Data.EWBF);

            case MinerBaseType.Prospector:
                return(Data.prospector);
            }
            return(Data.NONE);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="Algorithm"/> class.
        /// </summary>
        /// <param name="minerBaseType">The <see cref="MinerBaseType"/></param>
        /// <param name="cryptominer937ID">The <see cref="AlgorithmType"/></param>
        /// <param name="minerName">The <see cref="string"/></param>
        /// <param name="secondaryCryptoMiner937ID">The <see cref="AlgorithmType"/></param>
        public Algorithm(MinerBaseType minerBaseType, AlgorithmType cryptominer937ID, string minerName, AlgorithmType secondaryCryptoMiner937ID = AlgorithmType.NONE)
        {
            CryptoMiner937ID          = cryptominer937ID;
            SecondaryCryptoMiner937ID = secondaryCryptoMiner937ID;

            AlgorithmName     = AlgorithmCryptoMiner937Names.GetName(DualCryptoMiner937ID());
            MinerBaseTypeName = Enum.GetName(typeof(MinerBaseType), minerBaseType);
            AlgorithmStringID = MinerBaseTypeName + "_" + AlgorithmName;

            MinerBaseType = minerBaseType;
            MinerName     = minerName;

            BenchmarkSpeed          = 0.0d;
            SecondaryBenchmarkSpeed = 0.0d;
            ExtraLaunchParameters   = "";
            LessThreads             = 1;
            Enabled = !(CryptoMiner937ID == AlgorithmType.Nist5 || CryptoMiner937ID == AlgorithmType.Skein || CryptoMiner937ID == AlgorithmType.Blake2s || CryptoMiner937ID == AlgorithmType.Xevan || CryptoMiner937ID == AlgorithmType.Tribus || CryptoMiner937ID == AlgorithmType.Phi || CryptoMiner937ID == AlgorithmType.Hsr || CryptoMiner937ID == AlgorithmType.Bitcore) && minerBaseType == MinerBaseType.sgminer;
            Enabled = !(CryptoMiner937ID == AlgorithmType.cryptonight) || (CryptoMiner937ID == AlgorithmType.Keccak) && minerBaseType == MinerBaseType.GatelessGate;
            //Enabled = !(CryptoMiner937ID == AlgorithmType.Lyra2REv2) && minerBaseType == MinerBaseType.mkxminer;
            BenchmarkStatus = "";
        }
Exemple #21
0
        public Algorithm(MinerBaseType minerBaseType, AlgorithmType niceHashID, string minerName, AlgorithmType secondaryNiceHashID = AlgorithmType.NONE)
        {
            NiceHashID          = niceHashID;
            SecondaryNiceHashID = secondaryNiceHashID;

            this.AlgorithmName     = AlgorithmNiceHashNames.GetName(DualNiceHashID());
            this.MinerBaseTypeName = Enum.GetName(typeof(MinerBaseType), minerBaseType);
            this.AlgorithmStringID = this.MinerBaseTypeName + "_" + this.AlgorithmName;

            MinerBaseType = minerBaseType;
            MinerName     = minerName;

            BenchmarkSpeed          = 0.0d;
            SecondaryBenchmarkSpeed = 0.0d;
            ExtraLaunchParameters   = "";
            LessThreads             = 0;
            Enabled = !(NiceHashID == AlgorithmType.Nist5 || NiceHashID == AlgorithmType.Skein || NiceHashID == AlgorithmType.Blake2s || NiceHashID == AlgorithmType.Xevan || NiceHashID == AlgorithmType.Tribus || NiceHashID == AlgorithmType.Veltor || NiceHashID == AlgorithmType.Phi || NiceHashID == AlgorithmType.Hsr || NiceHashID == AlgorithmType.Bitcore) && minerBaseType == MinerBaseType.sgminer;
            Enabled = !(NiceHashID == AlgorithmType.CryptoNight) || (NiceHashID == AlgorithmType.Keccak) && minerBaseType == MinerBaseType.GatelessGate;
            //Enabled = !(NiceHashID == AlgorithmType.Lyra2REv2) && minerBaseType == MinerBaseType.mkxminer;
            BenchmarkStatus = "";
        }
Exemple #22
0
        public Algorithm(MinerBaseType minerBaseType, AlgorithmType niceHashID, string minerName)
        {
            NiceHashID = niceHashID;

            AlgorithmName     = AlgorithmNiceHashNames.GetName(NiceHashID);
            MinerBaseTypeName = Enum.GetName(typeof(MinerBaseType), minerBaseType);
            AlgorithmStringID = MinerBaseTypeName + "_" + AlgorithmName;

            MinerBaseType = minerBaseType;
            MinerName     = minerName;

            ExtraLaunchParameters = "";
            LessThreads           = 0;
            Enabled = !(NiceHashID == AlgorithmType.Nist5 ||
                        (NiceHashID == AlgorithmType.NeoScrypt && minerBaseType == MinerBaseType.sgminer));
            Enabled         = !(NiceHashID == AlgorithmType.CryptoNightV7) && minerBaseType == MinerBaseType.XmrigAMD;
            Enabled         = !(NiceHashID == AlgorithmType.CryptoNightV8) && minerBaseType == MinerBaseType.XmrigAMD;
            Enabled         = !(NiceHashID == AlgorithmType.CryptoNightV8) && minerBaseType == MinerBaseType.SRBMiner;
            Enabled         = !(NiceHashID == AlgorithmType.CryptoNightHeavy) && minerBaseType == MinerBaseType.SRBMiner;
            Enabled         = !(NiceHashID == AlgorithmType.Lyra2REv2) && minerBaseType == MinerBaseType.mkxminer;
            BenchmarkStatus = "";
        }
Exemple #23
0
        public static string GetPathFor(MinerBaseType minerBaseType, AlgorithmType algoType, DeviceGroupType devGroupType, string devCodenameAMD, bool isOptimizedAMD, CPUExtensionType MostOptimizedCPUExtensionType)
        {
            switch (minerBaseType)
            {
            case MinerBaseType.cpuminer:
                return(CPU_GROUP.cpu_miner_opt(MostOptimizedCPUExtensionType));

            case MinerBaseType.ccminer:
                return(NVIDIA_GROUPS.ccminer_path(algoType, devGroupType));

            case MinerBaseType.sgminer:
                return(AMD_GROUP.sgminer_path(algoType, devCodenameAMD, isOptimizedAMD));

            case MinerBaseType.nheqminer:
                return(Data.nheqminer);

            case MinerBaseType.eqm:
                return(Data.eqm);

            case MinerBaseType.ethminer:
                return(Data.ethminer);

            case MinerBaseType.ClaymoreAMD:
                return(AMD_GROUP.ClaymorePath(algoType));

            case MinerBaseType.OptiminerAMD:
                return(Data.OptiminerZcashMiner);

            case MinerBaseType.excavator:
                return(Data.excavator);

            case MinerBaseType.XmrStackCPU:
                return(Data.XmrStackCPUMiner);

            case MinerBaseType.ccminer_alexis:
                return(NVIDIA_GROUPS.ccminer_unstable_path(algoType, devGroupType));
            }
            return(Data.NONE);
        }
Exemple #24
0
        // NEW START
        ////////////////////////////////////////////
        // Pure functions
        //public static bool IsMinerAlgorithmAvaliable(List<Algorithm> algos, MinerBaseType minerBaseType, AlgorithmType algorithmType) {
        //    return algos.FindIndex((a) => a.MinerBaseType == minerBaseType && a.NiceHashID == algorithmType) > -1;
        //}

        public static string GetPathFor(MinerBaseType minerBaseType, AlgorithmType algoType,
                                        DeviceGroupType devGroupType, bool def = false)
        {
            if (!def & ConfigurableMiners.Contains(minerBaseType))
            {
                // Override with internals
                var path = MinerPathPackages.Find(p => p.DeviceType == devGroupType)
                           .MinerTypes.Find(p => p.Type == minerBaseType)
                           .Algorithms.Find(p => p.Algorithm == algoType);
                if (path != null)
                {
                    if (File.Exists(path.Path))
                    {
                        return(path.Path);
                    }
                    Helpers.ConsolePrint("PATHS", $"Path {path.Path} not found, using defaults");
                }
            }
            // Temp workaround
            if (minerBaseType == MinerBaseType.XmrStak && algoType == AlgorithmType.CryptoNightHeavy)
            {
                return(Data.XmrStakHeavy);
            }

            switch (minerBaseType)
            {
            case MinerBaseType.ccminer:
                return(NvidiaGroups.Ccminer_path(algoType, devGroupType));

            case MinerBaseType.sgminer:
                return(AmdGroup.SgminerPath(algoType));

            case MinerBaseType.nheqminer:
                return(Data.NhEqMiner);

            case MinerBaseType.ethminer:
                return(Data.Ethminer);

            case MinerBaseType.Claymore:
                return(AmdGroup.ClaymorePath(algoType));

            case MinerBaseType.OptiminerAMD:
                return(Data.OptiminerZcashMiner);

            //case MinerBaseType.excavator:
            //    return Data.Excavator;
            case MinerBaseType.XmrStak:
                return(Data.XmrStak);

            case MinerBaseType.ccminer_alexis:
                return(NvidiaGroups.CcminerUnstablePath(algoType, devGroupType));

            case MinerBaseType.experimental:
                return(Experimental.GetPath(algoType, devGroupType));

            case MinerBaseType.EWBF:
                return(Data.Ewbf);

            case MinerBaseType.Prospector:
                return(Data.Prospector);

            case MinerBaseType.Xmrig:
                return(Data.Xmrig);

            case MinerBaseType.dtsm:
                return(Data.Dtsm);

            case MinerBaseType.cpuminer:
                return(Data.CpuMiner);
            }
            return(Data.None);
        }
Exemple #25
0
 public MinerTypePath(MinerBaseType type, List <MinerPath> paths)
 {
     Type       = type;
     Algorithms = paths;
     Name       = type.ToString();
 }
        private static MinerType GetMinerType(DeviceType deviceType, MinerBaseType minerBaseType, AlgorithmType algorithmType)
        {
            //if (MinerBaseType.cpuminer == minerBaseType) {
            //    return MinerType.cpuminer_opt;
            //}
            switch (minerBaseType)
            {
                case MinerBaseType.OptiminerAMD:
                    return MinerType.OptiminerZcash;
                case MinerBaseType.sgminer:
                    return MinerType.sgminer;
                case MinerBaseType.ccminer:
                case MinerBaseType.ccminer_alexis:
                case MinerBaseType.experimental:
                    if (AlgorithmType.CryptoNight == algorithmType)
                    {
                        return MinerType.ccminer_CryptoNight;
                    }
                    return MinerType.ccminer;
                case MinerBaseType.Claymore:
                    switch (algorithmType)
                    {
                        case AlgorithmType.CryptoNight:
                            return MinerType.ClaymoreCryptoNight;
                        case AlgorithmType.Equihash:
                            return MinerType.ClaymoreZcash;
                        case AlgorithmType.DaggerHashimoto:
                            return MinerType.ClaymoreDual;
                    }
                    break;
                case MinerBaseType.Claymore_old:
                    if (AlgorithmType.CryptoNight == algorithmType)
                    {
                        return MinerType.ClaymoreCryptoNight;
                    }
                    break;
                case MinerBaseType.ethminer:
                    if (DeviceType.AMD == deviceType)
                    {
                        return MinerType.ethminer_OCL;
                    }
                    if (DeviceType.NVIDIA == deviceType)
                    {
                        return MinerType.ethminer_CUDA;
                    }
                    break;
                case MinerBaseType.nheqminer:
                    switch (deviceType)
                    {
                        case DeviceType.CPU:
                            return MinerType.nheqminer_CPU;
                        case DeviceType.AMD:
                            return MinerType.nheqminer_AMD;
                        case DeviceType.NVIDIA:
                            return MinerType.nheqminer_CUDA;
                    }
                    break;
                case MinerBaseType.eqm:
                    if (DeviceType.CPU == deviceType)
                    {
                        return MinerType.eqm_CPU;
                    }
                    if (DeviceType.NVIDIA == deviceType)
                    {
                        return MinerType.eqm_CUDA;
                    }
                    break;
                //case MinerBaseType.excavator:
                //    return MinerType.excavator;
                case MinerBaseType.EWBF:
                    return MinerType.EWBF;
                case MinerBaseType.Xmrig:
                    return MinerType.Xmrig;
                case MinerBaseType.dtsm:
                    return MinerType.dtsm;
            }

            return MinerType.NONE;
        }
        private static Dictionary <MinerBaseType, List <Algorithm> > CreateForDevice(ComputeDevice device)
        {
            if (device == null)
            {
                return(null);
            }
            var algoSettings = CreateDefaultsForGroup(device.DeviceGroupType);

            if (algoSettings == null)
            {
                return(null);
            }
            if (device.DeviceType == DeviceType.AMD)
            {
                // sgminer stuff
                if (algoSettings.ContainsKey(MinerBaseType.sgminer))
                {
                    var sgminerAlgos     = algoSettings[MinerBaseType.sgminer];
                    var lyra2REv2Index   = sgminerAlgos.FindIndex(el => el.NiceHashID == AlgorithmType.Lyra2REv2);
                    var neoScryptIndex   = sgminerAlgos.FindIndex(el => el.NiceHashID == AlgorithmType.NeoScrypt);
                    var cryptoNightIndex = sgminerAlgos.FindIndex(el => el.NiceHashID == AlgorithmType.CryptoNight);

                    // Check for optimized version
                    if (lyra2REv2Index > -1)
                    {
                        sgminerAlgos[lyra2REv2Index].ExtraLaunchParameters =
                            AmdGpuDevice.DefaultParam +
                            "--nfactor 10 --xintensity 64 --thread-concurrency 0 --worksize 64 --gpu-threads 2";
                    }
                    if (!device.Codename.Contains("Tahiti") && neoScryptIndex > -1)
                    {
                        sgminerAlgos[neoScryptIndex].ExtraLaunchParameters =
                            AmdGpuDevice.DefaultParam +
                            "--nfactor 10 --xintensity    2 --thread-concurrency 8192 --worksize  64 --gpu-threads 2";
                        Helpers.ConsolePrint("ComputeDevice",
                                             "The GPU detected (" + device.Codename +
                                             ") is not Tahiti. Changing default gpu-threads to 2.");
                    }
                    if (cryptoNightIndex > -1)
                    {
                        if (device.Codename.Contains("Hawaii"))
                        {
                            sgminerAlgos[cryptoNightIndex].ExtraLaunchParameters = "--rawintensity 640 -w 8 -g 2";
                        }
                        else if (device.Name.Contains("Vega"))
                        {
                            sgminerAlgos[cryptoNightIndex].ExtraLaunchParameters =
                                AmdGpuDevice.DefaultParam + " --rawintensity 1850 -w 8 -g 2";
                        }
                    }
                }

                // Ellesmere, Polaris
                // Ellesmere sgminer workaround, keep this until sgminer is fixed to work with Ellesmere
                if (device.Codename.Contains("Ellesmere") || device.InfSection.ToLower().Contains("polaris"))
                {
                    foreach (var algosInMiner in algoSettings)
                    {
                        foreach (var algo in algosInMiner.Value)
                        {
                            // disable all algos in list
                            if (algo.NiceHashID == AlgorithmType.Decred || algo.NiceHashID == AlgorithmType.Lbry)
                            {
                                algo.Enabled = false;
                            }
                        }
                    }
                }
                // non sgminer optimizations
                if (algoSettings.ContainsKey(MinerBaseType.Claymore_old) &&
                    algoSettings.ContainsKey(MinerBaseType.Claymore))
                {
                    var claymoreOldAlgos    = algoSettings[MinerBaseType.Claymore_old];
                    var cryptoNightOldIndex =
                        claymoreOldAlgos.FindIndex(el => el.NiceHashID == AlgorithmType.CryptoNight);

                    var claymoreNewAlgos    = algoSettings[MinerBaseType.Claymore];
                    var cryptoNightNewIndex =
                        claymoreNewAlgos.FindIndex(el => el.NiceHashID == AlgorithmType.CryptoNight);

                    if (cryptoNightOldIndex > -1 && cryptoNightNewIndex > -1)
                    {
                        //string regex_a_3 = "[5|6][0-9][0-9][0-9]";
                        var a4 = new List <string>
                        {
                            "270",
                            "270x",
                            "280",
                            "280x",
                            "290",
                            "290x",
                            "370",
                            "380",
                            "390",
                            "470",
                            "480"
                        };
                        foreach (var namePart in a4)
                        {
                            if (!device.Name.Contains(namePart))
                            {
                                continue;
                            }
                            claymoreOldAlgos[cryptoNightOldIndex].ExtraLaunchParameters = "-a 4";
                            break;
                        }

                        var old = new List <string>
                        {
                            "Verde",
                            "Oland",
                            "Bonaire"
                        };
                        foreach (var codeName in old)
                        {
                            var isOld = device.Codename.Contains(codeName);
                            claymoreOldAlgos[cryptoNightOldIndex].Enabled = isOld;
                            claymoreNewAlgos[cryptoNightNewIndex].Enabled = !isOld;
                        }
                    }
                }

                // drivers algos issue
                if (device.DriverDisableAlgos)
                {
                    algoSettings = FilterMinerAlgos(algoSettings, new List <AlgorithmType>
                    {
                        AlgorithmType.NeoScrypt,
                        AlgorithmType.Lyra2REv2
                    });
                }

                // disable by default
                {
                    var minerBases = new List <MinerBaseType>
                    {
                        MinerBaseType.ethminer,
                        MinerBaseType.OptiminerAMD
                    };
                    foreach (var minerKey in minerBases)
                    {
                        if (!algoSettings.ContainsKey(minerKey))
                        {
                            continue;
                        }
                        foreach (var algo in algoSettings[minerKey])
                        {
                            algo.Enabled = false;
                        }
                    }
                    if (algoSettings.ContainsKey(MinerBaseType.sgminer))
                    {
                        foreach (var algo in algoSettings[MinerBaseType.sgminer])
                        {
                            if (algo.NiceHashID == AlgorithmType.DaggerHashimoto)
                            {
                                algo.Enabled = false;
                            }
                        }
                    }
                    //if (algoSettings.ContainsKey(MinerBaseType.Claymore)) {
                    //    foreach (var algo in algoSettings[MinerBaseType.Claymore]) {
                    //        if (algo.NiceHashID == AlgorithmType.CryptoNight) {
                    //            algo.Enabled = false;
                    //        }
                    //    }
                    //}
                }
            } // END AMD case

            // check if it is Etherum capable
            if (device.IsEtherumCapale == false)
            {
                algoSettings = FilterMinerAlgos(algoSettings, new List <AlgorithmType>
                {
                    AlgorithmType.DaggerHashimoto
                });
            }

            if (algoSettings.ContainsKey(MinerBaseType.ccminer_alexis))
            {
                foreach (var unstableAlgo in algoSettings[MinerBaseType.ccminer_alexis])
                {
                    unstableAlgo.Enabled = false;
                }
            }
            if (algoSettings.ContainsKey(MinerBaseType.experimental))
            {
                foreach (var unstableAlgo in algoSettings[MinerBaseType.experimental])
                {
                    unstableAlgo.Enabled = false;
                }
            }

            // This is not needed anymore after excavator v1.1.4a
            //if (device.IsSM50() && algoSettings.ContainsKey(MinerBaseType.excavator)) {
            //    int Equihash_index = algoSettings[MinerBaseType.excavator].FindIndex((algo) => algo.NiceHashID == AlgorithmType.Equihash);
            //    if (Equihash_index > -1) {
            //        // -c1 1 needed for SM50 to work ATM
            //        algoSettings[MinerBaseType.excavator][Equihash_index].ExtraLaunchParameters = "-c1 1";
            //    }
            //}
            // NhEqMiner exceptions scope
            {
                const MinerBaseType minerBaseKey = MinerBaseType.nheqminer;
                if (algoSettings.ContainsKey(minerBaseKey) && device.Name.Contains("GTX") &&
                    (device.Name.Contains("560") || device.Name.Contains("650") || device.Name.Contains("680") ||
                     device.Name.Contains("770"))
                    )
                {
                    algoSettings = FilterMinerBaseTypes(algoSettings, new List <MinerBaseType>
                    {
                        minerBaseKey
                    });
                }
            }
            return(algoSettings);
        }
Exemple #28
0
        // NEW START
        ////////////////////////////////////////////
        // Pure functions
        //public static bool IsMinerAlgorithmAvaliable(List<Algorithm> algos, MinerBaseType minerBaseType, AlgorithmType algorithmType) {
        //    return algos.FindIndex((a) => a.MinerBaseType == minerBaseType && a.NiceHashID == algorithmType) > -1;
        //}

        public static string GetPathFor(MinerBaseType minerBaseType, AlgorithmType algoType, DeviceGroupType devGroupType, bool def = false)
        {
            if (!def & configurableMiners.Contains(minerBaseType))
            {
                // Override with internals
                var path = minerPathPackages.Find(p => p.DeviceType == devGroupType)
                           .MinerTypes.Find(p => p.Type == minerBaseType)
                           .Algorithms.Find(p => p.Algorithm == algoType);
                if (path != null)
                {
                    if (File.Exists(path.Path))
                    {
                        return(path.Path);
                    }
                    else
                    {
                        Helpers.ConsolePrint("PATHS", String.Format("Path {0} not found, using defaults", path.Path));
                    }
                }
            }
            switch (minerBaseType)
            {
            case MinerBaseType.ccminer:
                return(NVIDIA_GROUPS.Ccminer_path(algoType, devGroupType));

            case MinerBaseType.ccminer_22:
                return(NVIDIA_GROUPS.Ccminer_path(algoType, devGroupType));

            case MinerBaseType.ccminer_alexis_hsr:
                return(NVIDIA_GROUPS.Ccminer_path(algoType, devGroupType));

            case MinerBaseType.ccminer_alexis78:
                return(NVIDIA_GROUPS.Ccminer_path(algoType, devGroupType));

            case MinerBaseType.ccminer_klaust818:
                return(NVIDIA_GROUPS.Ccminer_path(algoType, devGroupType));

            case MinerBaseType.ccminer_palgin:
                return(NVIDIA_GROUPS.Ccminer_path(algoType, devGroupType));

            case MinerBaseType.ccminer_polytimos:
                return(NVIDIA_GROUPS.Ccminer_path(algoType, devGroupType));

            case MinerBaseType.ccminer_skunkkrnlx:
                return(NVIDIA_GROUPS.Ccminer_path(algoType, devGroupType));

            case MinerBaseType.ccminer_xevan:
                return(NVIDIA_GROUPS.Ccminer_path(algoType, devGroupType));

            case MinerBaseType.ccminer_tpruvot2:
                return(NVIDIA_GROUPS.Ccminer_path(algoType, devGroupType));

            case MinerBaseType.sgminer:
                return(AMD_GROUP.Sgminer_path(algoType));

            case MinerBaseType.GatelessGate:
                return(AMD_GROUP.Glg_path(algoType));

            case MinerBaseType.nheqminer:
                return(Data.nheqminer);

            case MinerBaseType.ethminer:
                return(Data.ethminer);

            case MinerBaseType.Claymore:
                return(AMD_GROUP.ClaymorePath(algoType));

            case MinerBaseType.OptiminerAMD:
                return(Data.OptiminerZcashMiner);

            case MinerBaseType.excavator:
                return(Data.excavator);

            case MinerBaseType.XmrStackCPU:
                return(Data.XmrStackCPUMiner);

            case MinerBaseType.ccminer_alexis:
                return(NVIDIA_GROUPS.Ccminer_unstable_path(algoType, devGroupType));

            case MinerBaseType.experimental:
                return(EXPERIMENTAL.GetPath(algoType, devGroupType));

            case MinerBaseType.EWBF:
                return(Data.EWBF);

            case MinerBaseType.DSTM:
                return(Data.DSTM);

            case MinerBaseType.Prospector:
                return(Data.prospector);

            case MinerBaseType.Xmrig:
                return(Data.Xmrig);

            case MinerBaseType.XmrStakAMD:
                return(Data.XmrStakAMD);

            case MinerBaseType.Claymore_old:
                return(Data.ClaymoreCryptoNightMiner_old);

            case MinerBaseType.hsrneoscrypt:
                return(NVIDIA_GROUPS.Hsrneoscrypt_path(algoType, devGroupType));

                //case MinerBaseType.mkxminer:
                //return Data.mkxminer;
            }
            return(Data.NONE);
        }
Exemple #29
0
        // NEW START
        ////////////////////////////////////////////
        // Pure functions
        //public static bool IsMinerAlgorithmAvaliable(List<Algorithm> algos, MinerBaseType minerBaseType, AlgorithmType algorithmType) {
        //    return algos.FindIndex((a) => a.MinerBaseType == minerBaseType && a.NiceHashID == algorithmType) > -1;
        //}

        public static string GetPathFor(MinerBaseType minerBaseType, AlgorithmType algoType,
                                        DeviceGroupType devGroupType, bool def = false)
        {
            if (!def & ConfigurableMiners.Contains(minerBaseType))
            {
                // Override with internals
                var path = MinerPathPackages.Find(p => p.DeviceType == devGroupType)
                           .MinerTypes.Find(p => p.Type == minerBaseType)
                           .Algorithms.Find(p => p.Algorithm == algoType);
                if (path != null)
                {
                    if (File.Exists(path.Path))
                    {
                        return(path.Path);
                    }
                    Helpers.ConsolePrint("PATHS", $"Path {path.Path} not found, using defaults");
                }
            }
            // Temp workaround
            if (minerBaseType == MinerBaseType.XmrStak && algoType == AlgorithmType.CryptoNightHeavy)
            {
                return(Data.XmrStakHeavy);
            }
            if (minerBaseType == MinerBaseType.CryptoDredge && algoType == AlgorithmType.CryptoNightV8)
            {
                // return NvidiaGroups.CryptoDredgeV8(algoType, devGroupType);
                return(Data.CryptoDredge);
            }

            switch (minerBaseType)
            {
            case MinerBaseType.ccminer:
                return(NvidiaGroups.Ccminer_path(algoType, devGroupType));

            case MinerBaseType.sgminer:
                return(AmdGroup.SgminerPath(algoType));

            case MinerBaseType.nheqminer:
                return(Data.NhEqMiner);

            case MinerBaseType.ethminer:
                return(Data.Ethminer);

            case MinerBaseType.Claymore:
                return(AmdGroup.ClaymorePath(algoType));

            case MinerBaseType.OptiminerAMD:
                return(Data.OptiminerZcashMiner);

            //case MinerBaseType.excavator:
            //    return Data.Excavator;
            case MinerBaseType.XmrStak:
                return(Data.XmrStak);

            case MinerBaseType.ccminer_alexis:
                return(NvidiaGroups.CcminerUnstablePath(algoType, devGroupType));

            case MinerBaseType.experimental:
                return(Experimental.GetPath(algoType, devGroupType));

            case MinerBaseType.EWBF:
                return(Data.Ewbf);

            case MinerBaseType.Prospector:
                return(Data.Prospector);

            case MinerBaseType.Xmrig:
                return(Data.Xmrig);

            case MinerBaseType.XmrigAMD:
                return(Data.XmrigAMD);

            case MinerBaseType.SRBMiner:
                return(Data.SRBMiner);

            case MinerBaseType.dstm:
                return(Data.Dstm);

            case MinerBaseType.cpuminer:
                return(Data.CpuMiner);

            case MinerBaseType.CastXMR:
                return(Data.CastXMR);

            case MinerBaseType.lyclMiner:
                return(Data.lyclMiner);

            case MinerBaseType.hsrneoscrypt:
                return(NvidiaGroups.hsrneoscrypt_path(algoType, devGroupType));

            case MinerBaseType.CryptoDredge:
                return(NvidiaGroups.CryptoDredge(algoType, devGroupType));

            case MinerBaseType.ZEnemy:
                return(NvidiaGroups.ZEnemy(algoType, devGroupType));

            case MinerBaseType.trex:
                return(NvidiaGroups.trex(algoType, devGroupType));

            case MinerBaseType.mkxminer:
                return(Data.mkxminer);

            case MinerBaseType.teamredminer:
                return(Data.teamredminer);

            case MinerBaseType.Phoenix:
                return(Data.Phoenix);

            case MinerBaseType.GMiner:
                return(Data.GMiner);

            case MinerBaseType.lolMiner:
                return(Data.lolMiner);

            case MinerBaseType.WildRig:
                return(Data.WildRig);

            case MinerBaseType.lolMinerBEAM:
                return(Data.lolMinerBEAM);

            case MinerBaseType.Bminer:
                return(Data.Bminer);

            case MinerBaseType.TTMiner:
                return(Data.TTMiner);

            case MinerBaseType.XmrigNVIDIA:
                return(Data.XmrigNVIDIA);

            case MinerBaseType.NBMiner:
                return(Data.NBMiner);

            case MinerBaseType.miniZ:
                return(Data.miniZ);
            }
            return(Data.None);
        }
        public static Miner CreateMiner(DeviceType deviceType, AlgorithmType algorithmType, MinerBaseType minerBaseType)
        {
            switch (minerBaseType)
            {
            case MinerBaseType.ccminer:
                return(new ccminer());

            case MinerBaseType.sgminer:
                return(new sgminer());

            case MinerBaseType.nheqminer:
                return(new nheqminer());

            case MinerBaseType.ethminer:
                return(CreateEthminer(deviceType));

            case MinerBaseType.ClaymoreAMD:
                return(CreateClaymore(algorithmType));

            case MinerBaseType.OptiminerAMD:
                return(new OptiminerZcashMiner());

            case MinerBaseType.excavator:
                return(new excavator());

            case MinerBaseType.XmrStackCPU:
                return(new XmrStackCPUMiner());

            case MinerBaseType.ccminer_alexis:
                return(new ccminer());

            case MinerBaseType.experimental:
                return(CreateExperimental(deviceType, algorithmType));
            }
            return(null);
        }