code: func (hc *HeaderChain) GetBlockHashesFromHash(hash common.Hash, max uint64) []common.Hash {
  	// Get the origin header from which to fetch
  	header := hc.GetHeaderByHash(hash)
  	if header == nil {
  		return nil
  	}
  	// Iterate the headers until enough is collected or the genesis reached
  	chain := make([]common.Hash, 0, max)
  	for i := uint64(0); i < max; i++ {
  		next := header.ParentHash
  		if header = hc.GetHeader(next, header.Number.Uint64()-1); header == nil {
  			break
  		}
  		chain = append(chain, next)
  		if header.Number.Sign() == 0 {
  			break
  		}
  	}
  	return chain
  }
docs: // GetBlockHashesFromHash retrieves a number of block hashes starting at a given
  // hash, fetching towards the genesis block.