code: func (tprv *TransactionProposalResponseVerifier) Match(transactionProposalResponses []*fab.TransactionProposalResponse) error {
  	if tprv.MinResponses <= 0 {
  		return errors.New("minimum Responses has to be greater than zero")
  	}
  
  	if len(transactionProposalResponses) < tprv.MinResponses {
  		return errors.Errorf("required minimum %d endorsments got %d", tprv.MinResponses, len(transactionProposalResponses))
  	}
  
  	block, err := createCommonBlock(transactionProposalResponses[0])
  	if err != nil {
  		return err
  	}
  
  	if block.Data == nil || block.Data.Data == nil {
  		return errors.New("config block data is nil")
  	}
  
  	if len(block.Data.Data) != 1 {
  		return errors.New("config block must contain one transaction")
  	}
  
  	// Compare block data from  remaining responses
  	for _, tpr := range transactionProposalResponses[1:] {
  		b, err := createCommonBlock(tpr)
  		if err != nil {
  			return err
  		}
  
  		if !proto.Equal(block.Data, b.Data) {
  			return errors.WithStack(status.New(status.EndorserClientStatus, status.EndorsementMismatch.ToInt32(), "payloads for config block do not match", nil))
  		}
  	}
  
  	return nil
  }
docs: // Match verifies and matches transaction proposal responses