Exemple #1
0
        public void MinerTransactions()
        {
            if (ValidateValueTransactions())
            {
                var coinBase = CreateCoinBase();

                var transactions = new List <Transaction>();
                transactions.Add(coinBase);
                transactions.AddRange(Bitcoin.TransactionPool);

                var previousBlock = Bitcoin.returnLastBlock();
                var newBlock      = new Block(previousBlock.Index + 1, previousBlock.Hash, transactions);

                var nonce = 0;
                do
                {
                    newBlock.Hash = newBlock.GenerateHashBlock(nonce);
                    nonce++;
                } while (newBlock.Hash.Substring(0, Bitcoin.Difficulty) != new string('0', Bitcoin.Difficulty));

                ExcludeUtxo();
                CreateUtxo();
                Bitcoin.Chain.Add(newBlock);
                Bitcoin.TransactionPool.Clear();
            }
        }