public void CalculateRewards_NullRewardPeriod_Throws_NullArgumentException_Test() { // 1. ARRANGE var calculator = new RewardCalculator(null); // 2. ACTION calculator.CalculateRewards(null); }
public void No_uncles() { Block block = Build.A.Block.WithNumber(3).TestObject; RewardCalculator calculator = new RewardCalculator(RopstenSpecProvider.Instance); BlockReward[] rewards = calculator.CalculateRewards(block); Assert.AreEqual(1, rewards.Length); Assert.AreEqual(5000000000000000000, (long)rewards[0].Value, "miner"); }
public void One_uncle() { Block ommer = Build.A.Block.WithNumber(1).TestObject; Block block = Build.A.Block.WithNumber(3).WithOmmers(ommer).TestObject; RewardCalculator calculator = new RewardCalculator(RopstenSpecProvider.Instance); BlockReward[] rewards = calculator.CalculateRewards(block); Assert.AreEqual(2, rewards.Length); Assert.AreEqual(5156250000000000000, (long)rewards[0].Value, "miner"); Assert.AreEqual(3750000000000000000, (long)rewards[1].Value, "uncle1"); }
public void Two_uncles_from_the_same_coinbase() { Block ommer = Build.A.Block.WithNumber(1).TestObject; Block ommer2 = Build.A.Block.WithNumber(1).TestObject; Block block = Build.A.Block.WithNumber(3).WithOmmers(ommer, ommer2).TestObject; RewardCalculator calculator = new RewardCalculator(RopstenSpecProvider.Instance); BlockReward[] rewards = calculator.CalculateRewards(block); Assert.AreEqual(3, rewards.Length); Assert.AreEqual(5312500000000000000, (long)rewards[0].Value, "miner"); Assert.AreEqual(3750000000000000000, (long)rewards[1].Value, "uncle1"); Assert.AreEqual(3750000000000000000, (long)rewards[2].Value, "uncle2"); }
public void Constantinople_reward_two_uncles() { UInt256 blockNumber = RopstenSpecProvider.ConstantinopleBlockNumber; Block ommer = Build.A.Block.WithNumber(blockNumber - 2).TestObject; Block ommer2 = Build.A.Block.WithNumber(blockNumber - 2).TestObject; Block block = Build.A.Block.WithNumber(blockNumber).WithOmmers(ommer, ommer2).TestObject; RewardCalculator calculator = new RewardCalculator(RopstenSpecProvider.Instance); BlockReward[] rewards = calculator.CalculateRewards(block); Assert.AreEqual(3, rewards.Length); Assert.AreEqual(2125000000000000000, (long)rewards[0].Value, "miner"); Assert.AreEqual(1500000000000000000, (long)rewards[1].Value, "uncle1"); Assert.AreEqual(1500000000000000000, (long)rewards[2].Value, "uncle2"); }
public Task <BlockVisitOutcome> VisitBlock(Block block, CancellationToken cancellationToken) { BlockReward[] rewards = _rewardCalculator.CalculateRewards(block); for (int i = 0; i < rewards.Length; i++) { if (rewards[i].RewardType == BlockRewardType.Uncle) { _uncles += rewards[i].Value; } else { _blockRewards += rewards[i].Value; } } _logger.Info($"Visiting block {block.Number}, total supply is (genesis + miner rewards + uncle rewards) | {_genesisAllocations} + {_blockRewards} + {_uncles}"); return(Task.FromResult(BlockVisitOutcome.None)); }