示例#1
0
        private void AddBeneficiariesForReElectionScheme(long endPeriod, IEnumerable <string> victories,
                                                         MinerReElectionInformation minerReElectionInformation)
        {
            var reElectionProfitAddBeneficiaries = new AddBeneficiariesInput
            {
                SchemeId  = State.ReElectionRewardHash.Value,
                EndPeriod = endPeriod
            };

            foreach (var victory in victories)
            {
                if (minerReElectionInformation.ContinualAppointmentTimes.ContainsKey(victory))
                {
                    var minerAddress = Address.FromPublicKey(ByteArrayHelper.HexStringToByteArray(victory));
                    var continualAppointmentCount =
                        minerReElectionInformation.ContinualAppointmentTimes[victory].Add(1);
                    minerReElectionInformation.ContinualAppointmentTimes[victory] = continualAppointmentCount;
                    reElectionProfitAddBeneficiaries.BeneficiaryShares.Add(new BeneficiaryShare
                    {
                        Beneficiary = minerAddress,
                        Shares      = Math.Min(continualAppointmentCount,
                                               TreasuryContractConstants.MaximumReElectionRewardShare)
                    });
                }
                else
                {
                    minerReElectionInformation.ContinualAppointmentTimes.Add(victory, 0);
                }
            }

            if (reElectionProfitAddBeneficiaries.BeneficiaryShares.Any())
            {
                State.ProfitContract.AddBeneficiaries.Send(reElectionProfitAddBeneficiaries);
            }
        }
示例#2
0
        private MinerReElectionInformation InitialMinerReElectionInformation(ICollection <string> previousMiners)
        {
            var information = new MinerReElectionInformation();

            foreach (var previousMiner in previousMiners)
            {
                information.ContinualAppointmentTimes.Add(previousMiner, 0);
            }

            return(information);
        }