public void createBlock() { this.pruneMempool(); Block minedBlock = new Block(this.blockChain[-1].Hash, this.memPool.Select((t) => t.transaction).ToList()); EventHandler handler = blockMined; BlockMinedEventArgs bArgs = new BlockMinedEventArgs(minedBlock); handler?.Invoke(this, bArgs); }
public void receiveBlock(object sender, BlockMinedEventArgs bArgs) { if (validateBlock(bArgs.block)) { castBlockVote(true); } else { castBlockVote(false); } awaitConsensus(); if (this.consensus.reached) { if (this.consensus.votesAccepted > this.consensus.votesRejected) { this.memPool.Clear(); this.blockChain.Add(bArgs.block); } } }