예제 #1
0
        public void AcceptBlock(Block block)
        {
            byte[] previousHash = storedChain.Last.Hash;

            validateBlock(block, previousHash, storedChain.Last.CreationTime);

            storedChain.AddBlock(block);
            WalletManager.AcceptTransactions(block.Transactions);
            pendingTransactions = new LinkedList <Transaction>();
        }
예제 #2
0
        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);
        }