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); } }
private MinerReElectionInformation InitialMinerReElectionInformation(ICollection <string> previousMiners) { var information = new MinerReElectionInformation(); foreach (var previousMiner in previousMiners) { information.ContinualAppointmentTimes.Add(previousMiner, 0); } return(information); }