code: func NewChannelCreateConfigUpdate(channelID string, conf *genesisconfig.Profile, templateConfig *cb.ConfigGroup) (*cb.ConfigUpdate, error) {
  	if conf.Application == nil {
  		return nil, errors.New("cannot define a new channel with no Application section")
  	}
  
  	if conf.Consortium == "" {
  		return nil, errors.New("cannot define a new channel with no Consortium value")
  	}
  
  	newChannelGroup, err := NewChannelGroup(conf)
  	if err != nil {
  		return nil, errors.Wrapf(err, "could not turn parse profile into channel group")
  	}
  
  	updt, err := update.Compute(&cb.Config{ChannelGroup: templateConfig}, &cb.Config{ChannelGroup: newChannelGroup})
  	if err != nil {
  		return nil, errors.Wrapf(err, "could not compute update")
  	}
  
  	// Add the consortium name to create the channel for into the write set as required.
  	updt.ChannelId = channelID
  	updt.ReadSet.Values[channelconfig.ConsortiumKey] = &cb.ConfigValue{Version: 0}
  	updt.WriteSet.Values[channelconfig.ConsortiumKey] = &cb.ConfigValue{
  		Version: 0,
  		Value: utils.MarshalOrPanic(&cb.Consortium{
  			Name: conf.Consortium,
  		}),
  	}
  
  	return updt, nil
  }
docs: // NewChannelCreateConfigUpdate generates a ConfigUpdate which can be sent to the orderer to create a new channel.  Optionally, the channel group of the
  // ordering system channel may be passed in, and the resulting ConfigUpdate will extract the appropriate versions from this file.