private void ReceiveBlock(PacketHeader packetHeader, Connection connection, string blk) { // Deserialize JSON data that is received Block block = Serialize.DeserializeBlock(blk); // Testing MessageBox.Show("Block Received with Hash: \n\n" + block.HashBlock()); // TODO: If it is the same height, disregard. if (block.getIndex() == blockHeight - 1) { //MessageBox.Show("Block received has same height as current block, disregarding..."); } else if (block.getIndex() > blockHeight) { //MessageBox.Show("Block received is more than one block ahead. Finish syncing blockchain..."); // Load method to sync missing blocks // Request block from random peer } else if (block.getIndex() == blockHeight) { if (block.previousHash == previousBlock.HashBlock()) { Serialize.WriteBlock(block); chain.Add(block); blockHeight++; network.blockheight = blockHeight; previousBlock = chain.ElementAt(blockHeight - 1); SendBlock(block); currentBlock = new Block(); currentBlock.NewBlock(blockHeight, previousBlock.HashBlock()); } else { // Block not valid //MessageBox.Show("Hashes do not match, disregarding block..."); } } }