Exemple #1
0
        //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);
        }
Exemple #2
0
 /// <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);
     }
 }
Exemple #3
0
 /// <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);
     }
 }
Exemple #4
0
 /// <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);
     }
 }
Exemple #5
0
 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));
     }
 }
Exemple #6
0
 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));
     }
 }
Exemple #7
0
 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));
     }
 }
Exemple #8
0
 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));
     }
 }
Exemple #9
0
        private void UpdateMiners()
        {
            MinersComponent minersComponent = new MinersComponent();

            Pool_Miners = new SafeCollection <Miners>(minersComponent.GetAllMiners());
        }