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); } }
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}"); } } }