code: func (rc *Client) getCCProposalTargets(channelID string, opts requestOptions) ([]fab.Peer, error) {
  
  	chCtx, err := contextImpl.NewChannel(
  		func() (context.Client, error) {
  			return rc.ctx, nil
  		},
  		channelID,
  	)
  	if err != nil {
  		return nil, errors.WithMessage(err, "failed to create channel context")
  	}
  
  	// per channel discovery service
  	discovery, err := chCtx.ChannelService().Discovery()
  	if err != nil {
  		return nil, errors.WithMessage(err, "failed to get discovery service")
  	}
  
  	//Default targets when targets are not provided in options
  	if len(opts.Targets) == 0 {
  		opts.Targets, err = rc.getDefaultTargets(discovery)
  		if err != nil {
  			return nil, errors.WithMessage(err, "failed to get default targets for cc proposal")
  		}
  	}
  
  	targets, err := rc.calculateTargets(opts.Targets, opts.TargetFilter)
  	if err != nil {
  		return nil, errors.WithMessage(err, "failed to determine target peers for cc proposal")
  	}
  
  	if len(targets) == 0 {
  		return nil, errors.WithStack(status.New(status.ClientStatus, status.NoPeersFound.ToInt32(), "no targets available", nil))
  	}
  	return targets, nil
  }
docs: // validateSendCCProposal