コード例 #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);
        }
コード例 #2
0
        private void UpdateMiners()
        {
            MinersComponent minersComponent = new MinersComponent();

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