code: func (c *Client) QueryTransaction(transactionID fab.TransactionID, options ...RequestOption) (*pb.ProcessedTransaction, error) {
  
  	targets, opts, err := c.prepareRequestParams(options...)
  	if err != nil {
  		return nil, errors.WithMessage(err, "QueryTransaction failed to prepare request parameters")
  	}
  	reqCtx, cancel := c.createRequestContext(opts)
  	defer cancel()
  
  	responses, err := c.ledger.QueryTransaction(reqCtx, transactionID, peersToTxnProcessors(targets), c.verifier)
  	if err != nil && len(responses) == 0 {
  		return nil, errors.WithMessage(err, "QueryTransaction failed")
  	}
  
  	if len(responses) < opts.MinTargets {
  		return nil, errors.Errorf("QueryTransaction: Number of responses %d is less than MinTargets %d", len(responses), opts.MinTargets)
  	}
  
  	response := responses[0]
  	for i, r := range responses {
  		if i == 0 {
  			continue
  		}
  
  		// All payloads have to match
  		if !proto.Equal(response, r) {
  			return nil, errors.New("Payloads for QueryTransaction do not match")
  		}
  	}
  
  	return response, nil
  }
docs: // QueryTransaction queries the ledger for processed transaction by transaction ID.
  //  Parameters:
  //  txID is required transaction ID
  //  options hold optional request options
  //
  //  Returns:
  //  processed transaction information