Esempio n. 1
0
        public void Should_remove_transactions_whens_mines(int blockSize, int transactionCount, int remains)
        {
            var       factory = MockBlock.CreateFactory();
            var       bc      = new BlockChain(Guid.NewGuid(), new NetworkConsense(1, blockSize, 0), factory);
            const int transactionRewardCount = 1;

            var transactions =
                Enumerable.Repeat(new Transaction(Guid.NewGuid(), Guid.NewGuid(), 1), transactionCount)
                .ToArray();

            bc.CreateTransaction(transactions);
            bc.MiningPedingTransactions();
            bc.PenddingTransactions.Should().HaveCount(remains + transactionRewardCount);
        }
Esempio n. 2
0
        public void Should_add_fi_for_a_founded_block()
        {
            var minerAddress = Guid.NewGuid();

            var factory = MockBlock.CreateFactory();
            var bc      = new BlockChain(minerAddress, new NetworkConsense(1, 5, 42), factory);

            var transaction =
                new Transaction(Guid.NewGuid(), Guid.NewGuid(), 1);

            bc.CreateTransaction(transaction);
            bc.MiningPedingTransactions();

            bc.PenddingTransactions.Should().HaveCount(1);
            bc.PenddingTransactions.First().ToAdress.Should().Be(minerAddress);
            bc.PenddingTransactions.First().Amount.Should().Be(42);
        }
Esempio n. 3
0
        public void Should_calc_correct_address_balance()
        {
            var address1 = Guid.NewGuid();
            var address2 = Guid.NewGuid();

            const int reward = 50;

            var factory = MockBlock.CreateFactory();
            var bc      = new BlockChain(address1, new NetworkConsense(1, 5, reward), factory);

            // 50 0
            bc.CreateTransaction(new Transaction(address1, address2, 20)); // 30 20
            bc.CreateTransaction(new Transaction(address2, address1, 10)); // 40 10
            bc.CreateTransaction(new Transaction(address1, address2, 5));  // 35 15

            bc.MiningPedingTransactions();

            var address1balance = bc.GetAddressBalance(address1);
            var address2balance = bc.GetAddressBalance(address2);

            address1balance.Should().Be(35);
            address2balance.Should().Be(15);
        }