//public static void SaveRewards(string startMsgId, long nonce, int height) //{ // try // { // long totalEffort = 0; // List<EffortInfo> effortInfos = new List<EffortInfo>(); // try // { // var activePools = CenterCache.Pools.Where(x => Time.EpochTime - x.Value < Setting.MAX_HEART_TIME); // LogHelper.Info("SaveRewards ActivePools Count = " + activePools.Count()); // var effortkeys = activePools.Select(x => KeyHelper.GetMinerEffortKey(x.Key, height)); // effortkeys.ToList().ForEach(key => { // var infos = RedisManager.Current.GetDataInRedis<List<EffortInfo>>(key); // if (infos != null) // { // effortInfos.AddRange(infos); // } // else // { // LogHelper.Info(string.Format("{0} = NULL", key)); // } // }); // effortInfos.RemoveAll(x => x == null || x.Effort == 0); // totalEffort = effortInfos.Sum(x => x.Effort); // LogHelper.Info("totalEffort = " + totalEffort); // } // catch (Exception ex) // { // LogHelper.Error(ex.ToString()); // } // var rewardAddresses = effortInfos.Select(x => x.Account).Distinct().ToArray(); // var block = RedisManager.Current.GetDataInRedis<BlockMsg>(startMsgId); // if (block == null || block.Header.Height == 0) // return; // var totalReward = block.Transactions[0].Outputs[0].Amount; // Blocks blocks = new Blocks(); // blocks.Generator = block.Header.GeneratorId; // blocks.Hash = block.Header.GetHash(); // blocks.Height = block.Header.Height; // blocks.Nonce = nonce; // blocks.TotalHash = totalEffort; // blocks.TotalReward = totalReward; // var rewards = new List<RewardList>(); // foreach (var minerAddress in rewardAddresses) // { // RewardList rewardList = new RewardList(); // rewardList.BlockHash = blocks.Hash; // rewardList.GenerateTime = blocks.Timstamp; // rewardList.MinerAddress = minerAddress; // var hashCount = effortInfos.FirstOrDefault(x => x.Account == minerAddress).Effort; // rewardList.Hashes = hashCount; // rewardList.OriginalReward = (long)Math.Floor(totalReward * ((double)hashCount / (double)totalEffort)); // rewardList.TransactionHash = ""; // rewards.Add(rewardList); // } // var blockComponent = new BlocksComponent(); // blockComponent.SaveBlockAndRewardLists(blocks, rewards); // } // catch (Exception ex) // { // LogHelper.Error(ex.ToString()); // } //} public static List <Miners> GetAllMiners() { MinersComponent component = new MinersComponent(); var miners = component.GetAllMiners().Where(x => x.Status == 0).ToList(); return(miners); }
/// <summary> /// 保存矿工信息 /// </summary> /// <param name="address"></param> /// <param name="account"></param> /// <param name="sn"></param> /// <returns></returns> public static Miners SaveMiners(string address, string account, string sn) { try { MinersComponent component = new MinersComponent(); Miners entity = component.RegisterMiner(address, account, sn); return(entity); } catch (Exception ex) { LogHelper.Error(ex.Message, ex); return(null); } }
/// <summary> /// 账号登录 /// </summary> /// <param name="address">钱包地址</param> /// <param name="type">类型,0是Pos机,1是手机</param> /// <param name="sn">SerialNo, Pos是SN,手机是IMEI</param> /// <returns></returns> public static bool MiningAuthorize(string address, int type, string sn) { try { MinersComponent component = new MinersComponent(); bool result = component.MiningAuthorize(address, type, sn); return(result); } catch (Exception ex) { LogHelper.Error(ex.Message, ex); return(false); } }
/// <summary> /// 矿工身份验证 /// </summary> /// <param name="address"></param> /// <param name="sn"></param> /// <returns></returns> public static bool ValidateMiner(string address, string sn) { try { MinersComponent component = new MinersComponent(); var miner = component.GetMinerByAddress(address); if (miner == null || miner.SN != sn || miner.Status != 0) { bool isValidate = component.MinerLogin(address, sn); return(isValidate); } return(true); } catch (Exception ex) { LogHelper.Error(ex.Message, ex); return(false); } }
public CommonResponse SaveMiners([FromBody] Miners miners) { try { MinersComponent component = new MinersComponent(); Miners entity = component.RegisterMiner(miners.Address, miners.Account, miners.SN); return(OK(entity)); } catch (ApiCustomException ce) { LogHelper.Error(ce.Message); return(Error(ce.ErrorCode, ce.ErrorMessage)); } catch (Exception ex) { LogHelper.Error(ex.Message, ex); return(Error(ex.HResult, ex.Message)); } }
public CommonResponse POSValidate([FromBody] Miners miners) { try { MinersComponent component = new MinersComponent(); bool result = component.MinerLogin(miners.Address, miners.SN); return(OK(result)); } catch (ApiCustomException ce) { LogHelper.Error(ce.Message); return(Error(ce.ErrorCode, ce.ErrorMessage)); } catch (Exception ex) { LogHelper.Error(ex.Message, ex); return(Error(ex.HResult, ex.Message)); } }
public CommonResponse GetMinerInfoByAddress([FromBody] string address) { try { MinersComponent component = new MinersComponent(); Miners entity = component.GetMinerByAddress(address); return(OK(entity)); } catch (ApiCustomException ce) { LogHelper.Error(ce.Message); return(Error(ce.ErrorCode, ce.ErrorMessage)); } catch (Exception ex) { LogHelper.Error(ex.Message, ex); return(Error(ex.HResult, ex.Message)); } }
public CommonResponse PosSNUnbind([FromBody] Miners miners) { try { MinersComponent component = new MinersComponent(); component.PosSNUnbind(miners.Address, miners.Account, miners.SN); return(OK()); } catch (ApiCustomException ce) { LogHelper.Error(ce.Message); return(Error(ce.ErrorCode, ce.ErrorMessage)); } catch (Exception ex) { LogHelper.Error(ex.Message, ex); return(Error(ex.HResult, ex.Message)); } }
private void UpdateMiners() { MinersComponent minersComponent = new MinersComponent(); Pool_Miners = new SafeCollection <Miners>(minersComponent.GetAllMiners()); }