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;
        }
示例#2
0
        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.");
        }