Example #1
0
        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);
        }
Example #2
0
        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);
                }
            }
        }