code: func (b *BlockChain) HaveBlock(hash *chainhash.Hash) (bool, error) {
  	exists, err := b.blockExists(hash)
  	if err != nil {
  		return false, err
  	}
  	return exists || b.IsKnownOrphan(hash), nil
  }
docs: // HaveBlock returns whether or not the chain instance has the block represented
  // by the passed hash.  This includes checking the various places a block can
  // be like part of the main chain, on a side chain, or in the orphan pool.
  //
  // This function is safe for concurrent access.