code: func IsNewChannelBlock(block *common.Block) (string, error) {
  	if block == nil {
  		return "", errors.New("nil block")
  	}
  	env, err := utils.ExtractEnvelope(block, 0)
  	if err != nil {
  		return "", err
  	}
  	payload, err := utils.ExtractPayload(env)
  	if err != nil {
  		return "", err
  	}
  	if payload.Header == nil {
  		return "", errors.New("nil header in payload")
  	}
  	chdr, err := utils.UnmarshalChannelHeader(payload.Header.ChannelHeader)
  	if err != nil {
  		return "", err
  	}
  	// The transaction is an orderer transaction
  	if common.HeaderType(chdr.Type) != common.HeaderType_ORDERER_TRANSACTION {
  		return "", nil
  	}
  	systemChannelName := chdr.ChannelId
  	innerEnvelope, err := utils.UnmarshalEnvelope(payload.Data)
  	if err != nil {
  		return "", err
  	}
  	innerPayload, err := utils.UnmarshalPayload(innerEnvelope.Payload)
  	if err != nil {
  		return "", err
  	}
  	if innerPayload.Header == nil {
  		return "", errors.New("inner payload's header is nil")
  	}
  	chdr, err = utils.UnmarshalChannelHeader(innerPayload.Header.ChannelHeader)
  	if err != nil {
  		return "", err
  	}
  	// The inner payload's header is a config transaction
  	if common.HeaderType(chdr.Type) != common.HeaderType_CONFIG {
  		return "", nil
  	}
  	// In any case, exclude all system channel transactions
  	if chdr.ChannelId == systemChannelName {
  		return "", nil
  	}
  	return chdr.ChannelId, nil
  }
docs: // IsNewChannelBlock returns a name of the channel in case
  // it holds a channel create transaction, or empty string otherwise.