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(); }
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(); }
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(); }
public void VerifyGenesisCount() { var chain = new Core.Blockchain(); Assert.AreEqual(1, chain.Blocks.Count); }
public void VerifyGenesisHash() { var chain = new Core.Blockchain(); Assert.AreEqual("499b06c6d39b4c1fe9305962a4cb858be2a172b3c51dbea02836f1235a0e4906", chain.Blocks[0].Hash); }