Exemplo n.º 1
0
        static void Main(string[] args)
        {
            //todo: restructure the code to be able to use dependency injection.
//            var serviceProvider = new ServiceCollection().AddSingleton<IComputeHash, ComputeHash>()
//                .BuildServiceProvider();
//            var computeHash = serviceProvider.GetService<IComputeHash>();

            ITransaction txn1  = new Transaction("ABC123", 1000.00m, DateTime.Now, "QWE123", 10000, ClaimType.TotalLoss);
            ITransaction txn2  = new Transaction("VBG345", 2000.00m, DateTime.Now, "JKH567", 20000, ClaimType.TotalLoss);
            ITransaction txn3  = new Transaction("XCF234", 3000.00m, DateTime.Now, "DH23ED", 30000, ClaimType.TotalLoss);
            ITransaction txn4  = new Transaction("CBHD45", 4000.00m, DateTime.Now, "DH34K6", 40000, ClaimType.TotalLoss);
            ITransaction txn5  = new Transaction("AJD345", 5000.00m, DateTime.Now, "28FNF4", 50000, ClaimType.TotalLoss);
            ITransaction txn6  = new Transaction("QAX367", 6000.00m, DateTime.Now, "FJK676", 60000, ClaimType.TotalLoss);
            ITransaction txn7  = new Transaction("CGO444", 7000.00m, DateTime.Now, "LKU234", 70000, ClaimType.TotalLoss);
            ITransaction txn8  = new Transaction("PLO254", 8000.00m, DateTime.Now, "VBN456", 80000, ClaimType.TotalLoss);
            ITransaction txn9  = new Transaction("ABC123", 1000.00m, DateTime.Now, "QWE123", 10000, ClaimType.TotalLoss);
            ITransaction txn10 = new Transaction("VBG345", 2000.00m, DateTime.Now, "JKH567", 20000, ClaimType.TotalLoss);
            ITransaction txn11 = new Transaction("XCF234", 3000.00m, DateTime.Now, "DH23ED", 30000, ClaimType.TotalLoss);
            ITransaction txn12 = new Transaction("CBHD45", 4000.00m, DateTime.Now, "DH34K6", 40000, ClaimType.TotalLoss);
            ITransaction txn13 = new Transaction("AJD345", 5000.00m, DateTime.Now, "28FNF4", 50000, ClaimType.TotalLoss);
            ITransaction txn14 = new Transaction("QAX367", 6000.00m, DateTime.Now, "FJK676", 60000, ClaimType.TotalLoss);
            ITransaction txn15 = new Transaction("CGO444", 7000.00m, DateTime.Now, "LKU234", 70000, ClaimType.TotalLoss);
            ITransaction txn16 = new Transaction("PLO254", 8000.00m, DateTime.Now, "VBN456", 80000, ClaimType.TotalLoss);


            IBlock block1 = new Block(0);
            IBlock block2 = new Block(1);
            IBlock block3 = new Block(2);
            IBlock block4 = new Block(3);

            block1.AddTransaction(txn1);
            block1.AddTransaction(txn2);
            block1.AddTransaction(txn3);
            block1.AddTransaction(txn4);

            block2.AddTransaction(txn5);
            block2.AddTransaction(txn6);
            block2.AddTransaction(txn7);
            block2.AddTransaction(txn8);

            block3.AddTransaction(txn9);
            block3.AddTransaction(txn10);
            block3.AddTransaction(txn11);
            block3.AddTransaction(txn12);

            block4.AddTransaction(txn13);
            block4.AddTransaction(txn14);
            block4.AddTransaction(txn15);
            block4.AddTransaction(txn16);

            block1.SetBlockHash(null);
            block2.SetBlockHash(block1);
            block3.SetBlockHash(block2);
            block4.SetBlockHash(block3);


            BlockChain chain = new BlockChain();

            chain.AcceptBlock(block1);
            chain.AcceptBlock(block2);
            chain.AcceptBlock(block3);
            chain.AcceptBlock(block4);


            chain.VerifyChain();

            Console.WriteLine("");
            Console.WriteLine("");

            txn5.ClaimNumber = "weqwewe";
            chain.VerifyChain();

            Console.WriteLine();
        }
Exemplo n.º 2
0
        ///
        /// Single block with a single transaction, in an immutable chain.
        /// Standard SHA-256 Hashing
        ///
        static void Main(string[] args)
        {
            //BlockChain chain = new BlockChain();
            //IBlock block1 = new Block(0, "ABC123", 1000.00m, DateTime.Now, "QWE123", 10000, ClaimType.TotalLoss, null);
            //IBlock block2 = new Block(1, "VBG345", 2000.00m, DateTime.Now, "JKH567", 20000, ClaimType.TotalLoss, block1);
            //IBlock block3 = new Block(2, "XCF234", 3000.00m, DateTime.Now, "DH23ED", 30000, ClaimType.TotalLoss, block2);
            //IBlock block4 = new Block(3, "CBHD45", 4000.00m, DateTime.Now, "DH34K6", 40000, ClaimType.TotalLoss, block3);
            //IBlock block5 = new Block(4, "AJD345", 5000.00m, DateTime.Now, "28FNF4", 50000, ClaimType.TotalLoss, block4);
            //IBlock block6 = new Block(5, "QAX367", 6000.00m, DateTime.Now, "FJK676", 60000, ClaimType.TotalLoss, block5);
            //IBlock block7 = new Block(6, "CGO444", 7000.00m, DateTime.Now, "LKU234", 70000, ClaimType.TotalLoss, block6);
            //IBlock block8 = new Block(7, "PLO254", 8000.00m, DateTime.Now, "VBN456", 80000, ClaimType.TotalLoss, block7);

            //chain.AcceptBlock(block1);
            //chain.AcceptBlock(block2);
            //chain.AcceptBlock(block3);
            //chain.AcceptBlock(block4);
            //chain.AcceptBlock(block5);
            //chain.AcceptBlock(block6);
            //chain.AcceptBlock(block7);
            //chain.AcceptBlock(block8);

            //chain.VerifyChain();

            //Console.WriteLine("");
            //Console.WriteLine("");

            //block4.CreatedDate = new DateTime(2017, 09, 20);

            //chain.VerifyChain();

            //Console.WriteLine();

            // ITransaction txn1 = new Transaction("ABC123", 1000.00m, DateTime.Now, "QWE123", 10000, ClaimType.TotalLoss);
            // ITransaction txn2 = new Transaction("VBG345", 2000.00m, DateTime.Now, "JKH567", 20000, ClaimType.TotalLoss);
            // ITransaction txn3 = new Transaction("XCF234", 3000.00m, DateTime.Now, "DH23ED", 30000, ClaimType.TotalLoss);
            // ITransaction txn4 = new Transaction("CBHD45", 4000.00m, DateTime.Now, "DH34K6", 40000, ClaimType.TotalLoss);
            // ITransaction txn5 = new Transaction("AJD345", 5000.00m, DateTime.Now, "28FNF4", 50000, ClaimType.TotalLoss);
            // ITransaction txn6 = new Transaction("QAX367", 6000.00m, DateTime.Now, "FJK676", 60000, ClaimType.TotalLoss);
            // ITransaction txn7 = new Transaction("CGO444", 7000.00m, DateTime.Now, "LKU234", 70000, ClaimType.TotalLoss);
            // ITransaction txn8 = new Transaction("PLO254", 8000.00m, DateTime.Now, "VBN456", 80000, ClaimType.TotalLoss);
            // ITransaction txn9 = new Transaction("ABC123", 1000.00m, DateTime.Now, "QWE123", 10000, ClaimType.TotalLoss);
            // ITransaction txn10 = new Transaction("VBG345", 2000.00m, DateTime.Now, "JKH567", 20000, ClaimType.TotalLoss);
            // ITransaction txn11 = new Transaction("XCF234", 3000.00m, DateTime.Now, "DH23ED", 30000, ClaimType.TotalLoss);
            // ITransaction txn12 = new Transaction("CBHD45", 4000.00m, DateTime.Now, "DH34K6", 40000, ClaimType.TotalLoss);
            // ITransaction txn13 = new Transaction("AJD345", 5000.00m, DateTime.Now, "28FNF4", 50000, ClaimType.TotalLoss);
            // ITransaction txn14 = new Transaction("QAX367", 6000.00m, DateTime.Now, "FJK676", 60000, ClaimType.TotalLoss);
            // ITransaction txn15 = new Transaction("CGO444", 7000.00m, DateTime.Now, "LKU234", 70000, ClaimType.TotalLoss);
            // ITransaction txn16 = new Transaction("PLO254", 8000.00m, DateTime.Now, "VBN456", 80000, ClaimType.TotalLoss);


            // IBlock block1 = new BlockWithMultipleTransactions.Block(0);
            // IBlock block2 = new BlockWithMultipleTransactions.Block(1);
            // IBlock block3 = new BlockWithMultipleTransactions.Block(2);
            // IBlock block4 = new BlockWithMultipleTransactions.Block(3);

            // block1.AddTransaction(txn1);
            // block1.AddTransaction(txn2);
            // block1.AddTransaction(txn3);
            // block1.AddTransaction(txn4);

            // block2.AddTransaction(txn5);
            // block2.AddTransaction(txn6);
            // block2.AddTransaction(txn7);
            // block2.AddTransaction(txn8);

            // block3.AddTransaction(txn9);
            // block3.AddTransaction(txn10);
            // block3.AddTransaction(txn11);
            // block3.AddTransaction(txn12);

            // block4.AddTransaction(txn13);
            // block4.AddTransaction(txn14);
            // block4.AddTransaction(txn15);
            // block4.AddTransaction(txn16);

            // block1.SetBlockHash(null);
            // block2.SetBlockHash(block1);
            // block3.SetBlockHash(block2);
            // block4.SetBlockHash(block3);


            //BlockWithMultipleTransactions.BlockChain chain = new BlockWithMultipleTransactions.BlockChain();
            // chain.AcceptBlock(block1);
            // chain.AcceptBlock(block2);
            // chain.AcceptBlock(block3);
            // chain.AcceptBlock(block4);


            // chain.VerifyChain();

            // Console.WriteLine("");
            // Console.WriteLine("");

            // txn5.ClaimNumber = "weqwewe";
            // chain.VerifyChain();

            // Console.WriteLine();

            ITransaction txn5     = SetupTransactions();
            IKeyStore    keyStore = new KeyStore(Hmac.GenerateKey());

            IBlock block1 = new Block(0, keyStore);
            IBlock block2 = new Block(1, keyStore);
            IBlock block3 = new Block(2, keyStore);
            IBlock block4 = new Block(3, keyStore);

            AddTransactionsToBlocksAndCalculateHashes(block1, block2, block3, block4);

            BlockChain chain = new BlockChain();

            chain.AcceptBlock(block1);
            chain.AcceptBlock(block2);
            chain.AcceptBlock(block3);
            chain.AcceptBlock(block4);

            chain.VerifyChain();

            Console.WriteLine("");
            Console.WriteLine("");

            txn5.ClaimNumber = "weqwewe";
            chain.VerifyChain();

            Console.WriteLine();
        }