public void ProcessPendingTransactions() { Block block = addBlock(); NetworkBroadcaster?.BroadcastBlock(block); pendingTransactions = new LinkedList <Transaction>(); IRewarder rewarder = MiningFactory.GetRewarder(); int rewardValue = rewarder.GetRewardForBlock(block); Transaction reward = new Transaction(MiningWallet.PublicKey, MiningWallet.PublicKey, rewardValue, TransactionHashFactory); reward.SignTransaction(MiningWallet.Signer); AddNewTransaction(reward); }
private Block addBlock() { Block lastBlock = storedChain.Last; IHashFactory hashFactory = MiningFactory.GetMiningHashFactoryForTransactions(pendingTransactions, lastBlock); Block block = new Block(MiningWallet.PublicKey, lastBlock.Hash, pendingTransactions, hashFactory); IMiner miner = MiningFactory.GetMiner(block.Transactions, lastBlock); miner.MineBlock(block); block.SignBlock(MiningWallet.Signer); storedChain.AddBlock(block); WalletManager.AcceptTransactions(block.Transactions); return(block); }
private bool validateBlockHash(Block block) { IHashFactory hashFactory = MiningFactory.GetMiningHashFactoryById(block.HashAlgorithmId); return(block.Hash.SequenceEqual(block.ComputeHash(hashFactory))); }