public bool IsValidNewBlock(Block previousBlock, Block newBlock) { if (previousBlock.Index + 1 != newBlock.Index) { return(false); } if (!previousBlock.Hash.Equals(newBlock.PreviousHash)) { return(false); } // Calculate the hash for the given block and make sure its correct if (!Enumerable.SequenceEqual(CalculateBlockHash(newBlock), newBlock.Hash)) { return(false); } // Make sure the data only contains a valid torrent file if (!BlockUtils.IsDataValidTorrent(newBlock.BlockData)) { return(false); } return(true); }