Esempio n. 1
0
        internal void SendSolution(Solution activeSolution)
        {
            try
            {
                // difficulty check here
                if (activeSolution.CheckDifficulty() && (CurrentJob != null && (ulong)currentHeight == activeSolution.job.height)) // && WaitForLoginConfirm == false)
                {
                    SubmitParams pow = new SubmitParams()
                    {
                        height = activeSolution.job.height, nonce = activeSolution.job.nonce, pow = activeSolution.nonces.ToList(), job_id = activeSolution.job.jobID
                    };
                    StratumRpcRequest request = new StratumRpcRequest(StratumCommand.Solution);
                    request.SetParams(pow);

                    //if (GrinSend<StratumRpcRequest>(request))
                    lock (solutionQueue)
                    {
                        ///use concurent queue
                        solutionQueue.Enqueue(request);
                        flushToStratum.Set();
                        Logger.Log(LogLevel.DEBUG, $"SOL-{activeSolution.job.hnonce} OUT {DateTime.Now.ToString("mm:ss.FFF")}");
                    }
                    totalShares++;
                    lastShare = DateTime.Now;
                }
                else
                {
                    // low difficulty share
                    // or job changed
                }
            }
            catch (Exception ex) { Logger.Log(ex); }
        }
Esempio n. 2
0
        private static void RunList(List <GetPeerListResponseDataItem> list, ref NodeMapDataStore nmap, out bool newEntryCreated)
        {
            newEntryCreated = false;
            foreach (var p in list)
            {
                string ip   = GetIpFromInteger(p.IP);
                string hash = ip.GetHashString();

                if (nmap.NodeMap.ContainsKey(hash) || p.IP == 0)
                {
                    Log.Instance.Write($"Skipping IP: {ip}");
                    continue;
                }

                DateTime now = DateTime.UtcNow;
                DateTime ls  = TimeStampToDateTime(p.LastSeen);

                int age = (now - ls).Days;

                if (age > 14)
                {
                    Log.Instance.Write($"Skipping Stale IP: {ip}. {age} days old");
                    continue;
                }

                ulong        ts = RoundTimestamp(p.LastSeen);
                SubmitParams e  = new SubmitParams();
                e.Address        = ip;
                e.LastAccessTime = ts;
                e.Version        = "0.0.0.0";

                if (nmap.Add(e, out newEntryCreated))
                {
                    Log.Instance.Write($"Added IP: {ip}");
                }
            }
        }