code: func (ethash *Ethash) VerifyHeader(chain consensus.ChainReader, header *types.Header, seal bool) error {
  	// If we're running a full engine faking, accept any input as valid
  	if ethash.config.PowMode == ModeFullFake {
  		return nil
  	}
  	// Short circuit if the header is known, or it's parent not
  	number := header.Number.Uint64()
  	if chain.GetHeader(header.Hash(), number) != nil {
  		return nil
  	}
  	parent := chain.GetHeader(header.ParentHash, number-1)
  	if parent == nil {
  		return consensus.ErrUnknownAncestor
  	}
  	// Sanity checks passed, do a proper verification
  	return ethash.verifyHeader(chain, header, parent, false, seal)
  }
docs: // VerifyHeader checks whether a header conforms to the consensus rules of the
  // stock Ethereum ethash engine.