code: func (rc *Client) InstantiateCC(channelID string, req InstantiateCCRequest, options ...RequestOption) (InstantiateCCResponse, error) {
  
  	opts, err := rc.prepareRequestOpts(options...)
  	if err != nil {
  		return InstantiateCCResponse{}, errors.WithMessage(err, "failed to get opts for InstantiateCC")
  	}
  
  	reqCtx, cancel := rc.createRequestContext(opts, fab.ResMgmt)
  	defer cancel()
  
  	txID, err := rc.sendCCProposal(reqCtx, InstantiateChaincode, channelID, req, opts)
  	return InstantiateCCResponse{TransactionID: txID}, err
  }
docs: // InstantiateCC instantiates chaincode with optional custom options (specific peers, filtered peers, timeout). If peer(s) are not specified
  // in options it will default to all channel peers.
  //  Parameters:
  //  channel is manadatory channel name
  //  req holds info about mandatory chaincode name, path, version and policy
  //  options holds optional request options
  //
  //  Returns:
  //  instantiate chaincode response with transaction ID