private bool DonateMiningReward(Round previousRound) { if (State.TreasuryContract.Value == null) { var treasuryContractAddress = Context.GetContractAddressByName(SmartContractConstants.TreasuryContractSystemName); // Return false if Treasury Contract didn't deployed. if (treasuryContractAddress == null) return false; State.TreasuryContract.Value = treasuryContractAddress; } var miningRewardPerBlock = GetMiningRewardPerBlock(); var amount = previousRound.GetMinedBlocks().Mul(miningRewardPerBlock); State.TreasuryContract.UpdateMiningReward.Send(new Int64Value {Value = miningRewardPerBlock}); if (amount > 0) { State.TreasuryContract.Donate.Send(new DonateInput { Symbol = Context.Variables.NativeSymbol, Amount = amount }); Context.Fire(new MiningRewardGenerated { TermNumber = previousRound.TermNumber, Amount = amount }); } Context.LogDebug(() => $"Released {amount} mining rewards."); return true; }
private void DonateMiningReward(Round previousRound) { if (State.TreasuryContract.Value == null) { State.TreasuryContract.Value = Context.GetContractAddressByName(SmartContractConstants.TreasuryContractSystemName); } var amount = previousRound.GetMinedBlocks().Mul(GetMiningRewardPerBlock()); if (amount > 0) { State.TreasuryContract.Donate.Send(new DonateInput { Symbol = Context.Variables.NativeSymbol, Amount = amount }); Context.Fire(new MiningRewardGenerated { TermNumber = previousRound.TermNumber, Amount = amount }); } Context.LogDebug(() => $"Released {amount} mining rewards."); }