code: func (vm *InprocVM) Start(ccid ccintf.CCID, args []string, env []string, filesToUpload map[string][]byte, builder container.Builder) error {
  	path := ccid.GetName()
  
  	ipctemplate := vm.registry.getType(path)
  	if ipctemplate == nil {
  		return fmt.Errorf(fmt.Sprintf("%s not registered", path))
  	}
  
  	instName := vm.GetVMName(ccid)
  
  	ipc, err := vm.getInstance(ipctemplate, instName, args, env)
  
  	if err != nil {
  		return fmt.Errorf(fmt.Sprintf("could not create instance for %s", instName))
  	}
  
  	if ipc.running {
  		return fmt.Errorf(fmt.Sprintf("chaincode running %s", path))
  	}
  
  	ipc.running = true
  
  	go func() {
  		defer func() {
  			if r := recover(); r != nil {
  				inprocLogger.Criticalf("caught panic from chaincode  %s", instName)
  			}
  		}()
  		ipc.launchInProc(instName, args, env)
  	}()
  
  	return nil
  }
docs: //Start starts a previously registered system codechain