Wrong enemy is taking damage when i shoot enemy

I have 20 asteroids on the field and i want them all to have there own health. The problem is when i shoot the asteroid it takes damage off the asteroid i didnt even shoot. I read some stuff online about findobjectsoftype but it gives me an error:

NullReferenceException: Object reference not set to an instance of an object
scriptWarheads.OnTriggerEnter (UnityEngine.Collider collider) (at Assets/Scripts/scriptWarheads.cs:31)

CODE:

	private scriptPlayer player;
	private scriptAst asteroid;
	
	
	void Start(){
		player = FindObjectOfType(typeof(scriptPlayer)) as scriptPlayer;
		scriptAst[] asteroids = FindObjectsOfType(typeof(scriptAst)) as scriptAst[];
	}
	
	void Update () {
		transform.Translate (0,0,speed * Time.deltaTime);
		
		Destroy(gameObject,life);
	}	
	
	void OnTriggerEnter(Collider collider){
		
		if(collider.gameObject.CompareTag ("Asteroid")){
				asteroid.health -= damage;
				Instantiate(explosion[0], transform.position,transform.rotation);	
		}

It is unclear how you have things setup. Typically you would have a ‘scriptAst’ attached to each asteroid, and each would have a non-static health variable. Then you would do:

void OnTriggerEnter(Collider collider){
 
       if(collider.gameObject.CompareTag ("Asteroid")){
          scriptAst asteroid = collider.gameObject.GetComponent<scriptAst>();
          asteroid.health -= damage;
          Instantiate(explosion[0], transform.position,transform.rotation);   
       }