예제 #1
0
 public static string ParseForMiningSetup(MiningSetup miningSetup, DeviceType deviceType, bool showLog = true)
 {
     return(ParseForMiningPairs(
                miningSetup.MiningPairs,
                miningSetup.CurrentAlgorithmType,
                deviceType, miningSetup.MinerPath, showLog));
 }
예제 #2
0
 virtual public void InitMiningSetup(MiningSetup miningSetup)
 {
     MiningSetup = miningSetup;
     IsInit      = MiningSetup.IsInit;
     SetAPIPort();
     SetWorkingDirAndProgName(MiningSetup.MinerPath);
 }
예제 #3
0
        public static void Stop()
        {
            _cachedSetup = null;
            if (_process == null)
            {
                return;
            }

            try
            {
                _process.CloseMainWindow();
                if (!_process.WaitForExit(10 * 1000))
                {
                    _process.Kill();
                }

                _process.Close();
            }
            catch (Exception e)
            {
                Helpers.ConsolePrint("ETHLARGEMENT", e.Message);
            }

            _process = null;
        }
예제 #4
0
        public override void InitMiningSetup(MiningSetup miningSetup)
        {
            base.InitMiningSetup(miningSetup);
            var cpus    = new List <MiningPair>();
            var nvidias = new List <MiningPair>();
            var amds    = new List <MiningPair>();

            foreach (var pairs in MiningSetup.MiningPairs)
            {
                switch (pairs.Device.DeviceType)
                {
                case DeviceType.CPU:
                    cpus.Add(pairs);
                    break;

                case DeviceType.NVIDIA:
                    nvidias.Add(pairs);
                    break;

                case DeviceType.AMD:
                    amds.Add(pairs);
                    break;
                }
            }
            // reinit
            CpuSetup    = new MiningSetup(cpus);
            NvidiaSetup = new MiningSetup(nvidias);
            AmdSetup    = new MiningSetup(amds);
        }
예제 #5
0
        public override void InitMiningSetup(MiningSetup miningSetup)
        {
            base.InitMiningSetup(miningSetup);
            List <MiningPair> CPUs    = new List <MiningPair>();
            List <MiningPair> NVIDIAs = new List <MiningPair>();
            List <MiningPair> AMDs    = new List <MiningPair>();

            foreach (var pairs in MiningSetup.MiningPairs)
            {
                if (pairs.Device.DeviceType == DeviceType.CPU)
                {
                    CPUs.Add(pairs);
                }
                if (pairs.Device.DeviceType == DeviceType.NVIDIA)
                {
                    NVIDIAs.Add(pairs);
                }
                if (pairs.Device.DeviceType == DeviceType.AMD)
                {
                    AMDs.Add(pairs);
                }
            }
            // reinit
            CPU_Setup    = new MiningSetup(CPUs);
            NVIDIA_Setup = new MiningSetup(NVIDIAs);
            AMD_Setup    = new MiningSetup(AMDs);
        }
예제 #6
0
        protected Miner(string minerDeviceName)
        {
            ConectionType = NhmConectionType.STRATUM_TCP;
            MiningSetup   = new MiningSetup(null);
            IsInit        = false;
            MinerID       = MinerIDCount++;

            MinerDeviceName = minerDeviceName;

            WorkingDirectory = "";

            IsRunning       = false;
            PreviousTotalMH = 0.0;

            LastCommandLine = "";

            IsApiReadException = false;
            // Only set minimize if hide is false (specific miners will override true after)
            IsNeverHideMiningWindow = ConfigManager.GeneralConfig.MinimizeMiningWindows &&
                                      !ConfigManager.GeneralConfig.HideMiningWindows;
            IsKillAllUsedMinerProcs        = false;
            _maxCooldownTimeInMilliseconds = GetMaxCooldownTimeInMilliseconds();
            //
            Helpers.ConsolePrint(MinerTag(), "NEW MINER CREATED");
        }
예제 #7
0
        public override void InitMiningSetup(MiningSetup miningSetup)
        {
            base.InitMiningSetup(miningSetup);
            // now find the fastest for DAG generation
            double fastestSpeed = double.MinValue;

            foreach (var mPair in MiningSetup.MiningPairs)
            {
                double compareSpeed = mPair.Device.DeviceBenchmarkConfig.AlgorithmSettings[AlgorithmType.DaggerHashimoto].BenchmarkSpeed;
                if (fastestSpeed < compareSpeed)
                {
                    DaggerHashimotoGenerateDevice = mPair.Device;
                    fastestSpeed = compareSpeed;
                }
            }
        }
        /// <summary>
        /// The InitMiningSetup
        /// </summary>
        /// <param name="miningSetup">The <see cref="MiningSetup"/></param>
        public override void InitMiningSetup(MiningSetup miningSetup)
        {
            base.InitMiningSetup(miningSetup);
            // now find the fastest for DAG generation
            double fastestSpeed = double.MinValue;

            foreach (var mPair in MiningSetup.MiningPairs)
            {
                double compareSpeed = mPair.Algorithm.AvaragedSpeed;
                if (fastestSpeed < compareSpeed)
                {
                    DaggerHashimotoGenerateDevice = mPair.Device;
                    fastestSpeed = compareSpeed;
                }
            }
        }
예제 #9
0
        public static void CheckAndStart(MiningSetup setup)
        {
            lock (Lock)
            {
                _cachedSetup = setup;
                if (!ShouldRun(setup))
                {
                    return;
                }
                _process = new Process
                {
                    StartInfo =
                    {
                        FileName = MinerPaths.Data.EthLargement,
                        //CreateNoWindow = false
                    }
                };

                if (ConfigManager.GeneralConfig.HideMiningWindows || ConfigManager.GeneralConfig.MinimizeMiningWindows)
                {
                    _process.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
                    //_process.StartInfo.UseShellExecute = true;
                }

                //e.StartInfo.UseShellExecute = false;
                _process.EnableRaisingEvents = true;
                _process.Exited += ExitEvent;

                try
                {
                    if (_process.Start())
                    {
                        Helpers.ConsolePrint("ETHLARGEMENT", "Starting ethlargement...");
                    }
                    else
                    {
                        Helpers.ConsolePrint("ETHLARGEMENT", "Couldn't start ethlargement");
                    }
                }
                catch (Exception ex)
                {
                    Helpers.ConsolePrint("ETHLARGEMENT", ex.Message);
                }
            }
        }
예제 #10
0
 public override void InitMiningSetup(MiningSetup miningSetup)
 {
     base.InitMiningSetup(miningSetup);
     List<MiningPair> CPUs = new List<MiningPair>();
     List<MiningPair> NVIDIAs = new List<MiningPair>();
     List<MiningPair> AMDs = new List<MiningPair>();
     foreach (var pairs in MiningSetup.MiningPairs) {
         if (pairs.Device.DeviceType == DeviceType.CPU) {
             CPUs.Add(pairs);
         }
         if (pairs.Device.DeviceType == DeviceType.NVIDIA) {
             NVIDIAs.Add(pairs);
         }
         if (pairs.Device.DeviceType == DeviceType.AMD) {
             AMDs.Add(pairs);
         }
     }
     // reinit
     CPU_Setup = new MiningSetup(CPUs);
     NVIDIA_Setup = new MiningSetup(NVIDIAs);
     AMD_Setup = new MiningSetup(AMDs);
 }
예제 #11
0
        protected override string GetDevicesCommandString()
        {
            var ctMiningPairs       = new List <MiningPair>();
            var deviceStringCommand = " -cd ";
            var defaultCT           = 1;

            if (MiningSetup.CurrentAlgorithmType == AlgorithmType.Equihash)
            {
                defaultCT = 2;
            }
            foreach (var nvidiaPair in MiningSetup.MiningPairs)
            {
                if (nvidiaPair.CurrentExtraLaunchParameters.Contains("-ct"))
                {
                    for (var i = 0; i < ExtraLaunchParametersParser.GetEqmCudaThreadCount(nvidiaPair); ++i)
                    {
                        deviceStringCommand += nvidiaPair.Device.ID + " ";
                        ctMiningPairs.Add(nvidiaPair);
                    }
                }
                else
                {
                    // use default default_CT for best performance
                    for (var i = 0; i < defaultCT; ++i)
                    {
                        deviceStringCommand += nvidiaPair.Device.ID + " ";
                        ctMiningPairs.Add(nvidiaPair);
                    }
                }
            }

            var ctMiningSetup = new MiningSetup(ctMiningPairs);

            //deviceStringCommand += " " + ExtraLaunchParametersParser.ParseForMiningSetup(this.MiningSetup, DeviceType.NVIDIA);
            deviceStringCommand += " " + ExtraLaunchParametersParser.ParseForMiningSetup(ctMiningSetup, DeviceType.NVIDIA);

            return(deviceStringCommand);
        }
예제 #12
0
        public Miner(string minerDeviceName)
        {
            ConectionType = NHMConectionType.STRATUM_TCP;
            MiningSetup   = new MiningSetup(null);
            IsInit        = false;
            MINER_ID      = MINER_ID_COUNT++;

            MinerDeviceName = minerDeviceName;

            WorkingDirectory = "";

            IsRunning       = false;
            PreviousTotalMH = 0.0;

            LastCommandLine = "";

            IsAPIReadException              = false;
            IsNeverHideMiningWindow         = false;
            IsKillAllUsedMinerProcs         = false;
            _MAX_CooldownTimeInMilliseconds = GET_MAX_CooldownTimeInMilliseconds();
            //
            Helpers.ConsolePrint(MinerTAG(), "NEW MINER CREATED");
        }
예제 #13
0
        private static bool ShouldRun(MiningSetup setup)
        {
            if (Running || setup == null || !ConfigManager.GeneralConfig.UseEthlargement)
            {
                return(false);
            }

            Helpers.ConsolePrint("ETHLARGEMENT", "Checking if should run ethlargement...");

            if (ConfigManager.GeneralConfig.Use3rdPartyMiners != Use3rdPartyMiners.YES)
            {
                Helpers.ConsolePrint("ETHLARGEMENT", "Ethlargement not started because 3rd party miners not enabled");
                return(false);
            }

            if (!Helpers.IsElevated)
            {
                Helpers.ConsolePrint("ETHLARGEMENT", "Ethlargement not started because NHML is not running as admin");
                return(false);
            }

            //return setup.MiningPairs.Any(p => p.CurrentExtraLaunchParameters.Contains("--ethlargement"));

            foreach (var p in setup.MiningPairs)
            {
                if (p.Algorithm.NiceHashID == AlgorithmType.DaggerHashimoto &&
                    p.Device is CudaComputeDevice cuda &&
                    cuda.ShouldRunEthlargement)
                {
                    return(true);
                }
            }

            Helpers.ConsolePrint("ETHLARGEMENT", "No ethlargement algorithm/device combos found. Not running");

            return(false);
        }
예제 #14
0
        public Miner(string minerDeviceName)
        {
            MiningSetup = new MiningSetup(null);
            IsInit      = false;
            MINER_ID    = MINER_ID_COUNT++;

            MinerDeviceName = minerDeviceName;

            //WorkingDirectory = @"bin\dlls";
            WorkingDirectory = "";

            IsRunning       = false;
            PreviousTotalMH = 0.0;

            LastCommandLine = "";

            APIPort                         = MinersApiPortsManager.Instance.GetAvaliablePort();
            IsAPIReadException              = false;
            IsNHLocked                      = false;
            IsKillAllUsedMinerProcs         = false;
            _MAX_CooldownTimeInMilliseconds = GET_MAX_CooldownTimeInMilliseconds();
            //
            Helpers.ConsolePrint(MinerTAG(), "NEW MINER CREATED");
        }
예제 #15
0
 public virtual void InitMiningSetup(MiningSetup miningSetup)
 {
     MiningSetup = miningSetup;
     IsInit = MiningSetup.IsInit;
 }
 public static string ParseForMiningSetup(MiningSetup miningSetup, DeviceType deviceType, bool showLog = true)
 {
     return ParseForMiningPairs(
         miningSetup.MiningPairs,
         miningSetup.CurrentAlgorithmType,
         deviceType, miningSetup.MinerPath, showLog);
 }
예제 #17
0
 public override void InitMiningSetup(MiningSetup miningSetup)
 {
     base.InitMiningSetup(miningSetup);
 }
예제 #18
0
 virtual public void InitMiningSetup(MiningSetup miningSetup)
 {
     MiningSetup = miningSetup;
     IsInit      = MiningSetup.IsInit;
 }
예제 #19
0
 public override void InitMiningSetup(MiningSetup miningSetup)
 {
     base.InitMiningSetup(miningSetup);
     // now find the fastest for DAG generation
     double fastestSpeed = double.MinValue;
     foreach (var mPair in MiningSetup.MiningPairs) {
         double compareSpeed = mPair.Algorithm.AvaragedSpeed;
         if (fastestSpeed < compareSpeed) {
             DaggerHashimotoGenerateDevice = mPair.Device;
             fastestSpeed = compareSpeed;
         }
     }
 }
예제 #20
0
        public Miner(string minerDeviceName)
        {
            MiningSetup = new MiningSetup(null);
            IsInit = false;
            MINER_ID = MINER_ID_COUNT++;

            MinerDeviceName = minerDeviceName;

            //WorkingDirectory = @"bin\dlls";
            WorkingDirectory = "";

            IsRunning = false;
            PreviousTotalMH = 0.0;

            LastCommandLine = "";

            APIPort = MinersApiPortsManager.GetAvaliablePort();
            IsAPIReadException = false;
            IsNHLocked = false;
            IsKillAllUsedMinerProcs = false;
            _MAX_CooldownTimeInMilliseconds = GET_MAX_CooldownTimeInMilliseconds();
            //
            Helpers.ConsolePrint(MinerTAG(), "NEW MINER CREATED");
        }
예제 #21
0
        private async void btn_startTest_Click(object sender, EventArgs e)
        {
            //var miningTime = TimeSpan.FromSeconds(30);
            int minM, minS, minMS;

            int.TryParse(tbx_minTimeM.Text, out minM);
            int.TryParse(tbx_minTimeS.Text, out minS);
            int.TryParse(tbx_minTimeMS.Text, out minMS);
            int minTime    = (60 * minM * 1000) + (1000 * minS) + minMS;
            var miningTime = TimeSpan.FromMilliseconds(minTime);

            int delayM, delayS, delayMS;

            int.TryParse(tbx_stopDelayM.Text, out delayM);
            int.TryParse(tbx_stopDelayS.Text, out delayS);
            int.TryParse(tbx_stopDelayMS.Text, out delayMS);
            int delayTime     = (60 * delayM * 1000) + (1000 * delayS) + delayMS;
            var stopDelayTime = TimeSpan.FromMilliseconds(delayTime); //TimeSpan.FromSeconds(1);
            var enabledDevs   = AvailableDevices.Devices.Where(dev => dev.Enabled);

            var testSteps = enabledDevs.Select(dev => dev.GetAlgorithmSettings().Where(algo => algo.Enabled).Count()).Sum();
            var step      = 0;

            foreach (var device in enabledDevs)
            {
                var enabledAlgorithms = device.GetAlgorithmSettings().Where(algo => algo.Enabled);
                foreach (var algorithm in enabledAlgorithms)
                {
                    step++;
                    try {
                        var miner = NiceHashMiner.Miners.MinerFactory.CreateMiner(device.DeviceType, algorithm);

                        var pair = new List <MiningPair> {
                            new MiningPair(device, algorithm)
                        };
                        var miningSetup = new MiningSetup(pair);

                        miner.InitMiningSetup(miningSetup);
                        var url = StratumHelpers.GetLocationUrl(algorithm.NiceHashID, "eu", miner.ConectionType);

                        tbx_info.Text += $"TESTING: {Environment.NewLine}";
                        tbx_info.Text += $"Device: {device.GetFullName()} {Environment.NewLine}";
                        tbx_info.Text += $"Miner path: {algorithm.MinerBinaryPath}" + Environment.NewLine;
                        tbx_info.Text += $"Miner base: {algorithm.MinerBaseTypeName}" + Environment.NewLine;
                        tbx_info.Text += $"Algorithm: {algorithm.AlgorithmName}" + Environment.NewLine;

                        label1.Text = $"{step} / {testSteps}";

                        tbx_info.Text += $"Starting miner running for {miningTime.ToString()}" + Environment.NewLine;
                        miner.Start(url, Globals.DemoUser, "test");

                        await Task.Delay(miningTime);

                        tbx_info.Text += $"Stopping" + Environment.NewLine;
                        var checkedButton = gb_stopMiningBy.Controls.OfType <RadioButton>()
                                            .FirstOrDefault(r => r.Checked);
                        if (checkedButton.Name == "rb_endMining")
                        {
                            miner.End();
                        }
                        else
                        {
                            miner.Stop();
                        }

                        tbx_info.Text += $"Delay after stop {stopDelayTime.ToString()}" + Environment.NewLine;
                        await Task.Delay(stopDelayTime);

                        tbx_info.Text += $"DONE" + Environment.NewLine + Environment.NewLine;
                    } catch (Exception ex)
                    {
                        tbx_info.Text += $"Exception {ex}" + Environment.NewLine;
                    }
                }
            }
        }
 public static string ParseForMiningSetup(MiningSetup miningSetup, DeviceType deviceType, bool showLog = true)
 {
     return ParseForMiningPairs(
         miningSetup.MiningPairs,
         deviceType, showLog);
 }
예제 #23
0
 virtual public void InitMiningSetup(MiningSetup miningSetup)
 {
     MiningSetup = miningSetup;
     IsInit      = MiningSetup.IsInit;
     SetAPIPort();
 }