Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            var chain = new Core.Blockchain();

            var client1 = new Address();
            var client2 = new Address();

            var transaction = new Transaction()
            {
                Inputs = new List <TransactionInput>
                {
                    new TransactionInput()
                    {
                        Address = client1, Amount = 1000
                    }
                },
                Outputs = new List <TransactionOutput>
                {
                    new TransactionOutput()
                    {
                        Address = client2, Amount = 400
                    },
                    new TransactionOutput()
                    {
                        Address = client1, Amount = 600
                    }                                                           // UTXO
                },
                Timestamp = DateTime.Now
            };

            chain.PendingTransactions.Add(transaction);

            var block = new Block();

            block.Index = chain.LatestBlock.Index + 1;
            foreach (var tx in chain.PendingTransactions)
            {
                block.Transactions.Add(tx);
            }

            block.ParentHash = chain.LatestBlock.Hash;

            block.Hash = Block.CreateHash(block);

            chain.AddBlock(block);

            var json = JsonSerializer.Serialize(chain);

            System.Console.WriteLine(json);

            System.Diagnostics.Debugger.Break();
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            var blockchain = new Core.Blockchain();

            blockchain.AddBlock(new { Souce = "Douglas", Target = "Magda", Amount = 10.00 });
            blockchain.AddBlock(new { Souce = "Magda", Target = "Ilir", Amount = 5.00 });

            System.Console.WriteLine(blockchain);

            System.Console.WriteLine($"Is blockchain valid? {blockchain.Isvalid()}");

            System.Console.ReadLine();
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            Transaction transaction1 = new Transaction()
            {
                Sender    = "user1",
                Recipient = "user2",
                Amount    = 69.0M
            };
            Transaction transaction2 = new Transaction()
            {
                Sender    = "user1",
                Recipient = "user3",
                Amount    = 100.0M
            };
            Transaction transaction3 = new Transaction()
            {
                Sender    = "user2",
                Recipient = "user3",
                Amount    = 15.5M
            };
            Transaction transaction4 = new Transaction()
            {
                Sender    = "user3",
                Recipient = "user1",
                Amount    = 20.8M
            };

            int  index        = -1;
            bool isValidChain = false;
            bool isNewChain   = false;

            Console.WriteLine("Starting Blockchain");
            Core.Blockchain blockchain = new Core.Blockchain();

            Console.WriteLine("Creating a node...");
            Node node1 = new Node()
            {
                Address = "10.0.0.1"
            };

            blockchain.RegisterNode(node1);
            Console.WriteLine();

            //Console.WriteLine("Creating a node...");
            //Node node2 = new Node() { Address = "10.0.0.2" };
            //blockchain.RegisterNode(node1);
            //Console.WriteLine();

            Console.WriteLine("Mining...");
            Block block1 = blockchain.Mine();

            Console.WriteLine(block1.ToString());
            Console.WriteLine();

            Console.WriteLine("Mining...");
            Block block2 = blockchain.Mine();

            Console.WriteLine(block2.ToString());
            Console.WriteLine();

            Console.WriteLine("Post New Transaction...");
            index = blockchain.NewTransaction(transaction1);
            Console.WriteLine(String.Format("Transaction1 added [block index: {0}]", index));
            Console.WriteLine();

            Console.WriteLine("Post New Transaction...");
            index = blockchain.NewTransaction(transaction2);
            Console.WriteLine(String.Format("Transaction2 added [block index: {0}]", index));
            Console.WriteLine();

            Console.WriteLine("Post New Transaction...");
            index = blockchain.NewTransaction(transaction3);
            Console.WriteLine(String.Format("Transaction3 added [block index: {0}]", index));
            Console.WriteLine();

            Console.WriteLine("Mining...");
            Block block3 = blockchain.Mine();

            Console.WriteLine(block3.ToString());
            Console.WriteLine();

            Console.WriteLine("Current Chain:");
            Console.WriteLine(blockchain.ToString());

            Console.WriteLine("Validating Chain...");
            isValidChain = blockchain.ValidChain();
            Console.WriteLine(String.Format("  Chain is valid: {0}", isValidChain));
            Console.WriteLine();

            Console.WriteLine("Resolving conflicts...");
            isNewChain = blockchain.ResolveConflicts();
            Console.WriteLine(String.Format("  Chain was replaced: {0}", isNewChain));
            Console.WriteLine();

            Console.WriteLine("done");
            Console.ReadLine();
        }
Ejemplo n.º 4
0
        public void VerifyGenesisCount()
        {
            var chain = new Core.Blockchain();

            Assert.AreEqual(1, chain.Blocks.Count);
        }
Ejemplo n.º 5
0
        public void VerifyGenesisHash()
        {
            var chain = new Core.Blockchain();

            Assert.AreEqual("499b06c6d39b4c1fe9305962a4cb858be2a172b3c51dbea02836f1235a0e4906", chain.Blocks[0].Hash);
        }