code: func (c *Client) QueryBlockByHash(blockHash []byte, options ...RequestOption) (*common.Block, error) {
  
  	targets, opts, err := c.prepareRequestParams(options...)
  	if err != nil {
  		return nil, errors.WithMessage(err, "QueryBlockByHash failed to prepare request parameters")
  	}
  	reqCtx, cancel := c.createRequestContext(opts)
  	defer cancel()
  
  	responses, err := c.ledger.QueryBlockByHash(reqCtx, blockHash, peersToTxnProcessors(targets), c.verifier)
  	if err != nil && len(responses) == 0 {
  		return nil, errors.WithMessage(err, "QueryBlockByHash failed")
  	}
  
  	return matchBlockData(responses, opts.MinTargets)
  }
docs: // QueryBlockByHash queries the ledger for block by block hash.
  //  Parameters:
  //  blockHash is required block hash
  //  options hold optional request options
  //
  //  Returns:
  //  block information