code: func handleGetCFilterHeader(s *rpcServer, cmd interface{}, closeChan <-chan struct{}) (interface{}, error) {
  	if s.cfg.CfIndex == nil {
  		return nil, &btcjson.RPCError{
  			Code:    btcjson.ErrRPCNoCFIndex,
  			Message: "The CF index must be enabled for this command",
  		}
  	}
  
  	c := cmd.(*btcjson.GetCFilterHeaderCmd)
  	hash, err := chainhash.NewHashFromStr(c.Hash)
  	if err != nil {
  		return nil, rpcDecodeHexError(c.Hash)
  	}
  
  	headerBytes, err := s.cfg.CfIndex.FilterHeaderByBlockHash(hash, c.FilterType)
  	if len(headerBytes) > 0 {
  		rpcsLog.Debugf("Found header of committed filter for %v", hash)
  	} else {
  		rpcsLog.Debugf("Could not find header of committed filter for %v: %v",
  			hash, err)
  		return nil, &btcjson.RPCError{
  			Code:    btcjson.ErrRPCBlockNotFound,
  			Message: "Block not found",
  		}
  	}
  
  	hash.SetBytes(headerBytes)
  	return hash.String(), nil
  }
docs: // handleGetCFilterHeader implements the getcfilterheader command.