// RegisterSysCC registers the given system chaincode with the peer func RegisterSysCC(syscc *SystemChaincode) error { if peer.SecurityEnabled() { sysccLogger.Warning(fmt.Sprintf("Currently system chaincode does support security(%s,%s)", syscc.Name, syscc.Path)) return nil } if !syscc.Enabled || !isWhitelisted(syscc) { sysccLogger.Info(fmt.Sprintf("system chaincode (%s,%s) disabled", syscc.Name, syscc.Path)) return nil } err := inproccontroller.Register(syscc.Path, syscc.Chaincode) if err != nil { errStr := fmt.Sprintf("could not register (%s,%v): %s", syscc.Path, syscc, err) sysccLogger.Error(errStr) return fmt.Errorf(errStr) } chaincodeID := &protos.ChaincodeID{Path: syscc.Path, Name: syscc.Name} spec := protos.ChaincodeSpec{Type: protos.ChaincodeSpec_Type(protos.ChaincodeSpec_Type_value["GOLANG"]), ChaincodeID: chaincodeID, CtorMsg: &protos.ChaincodeInput{Args: syscc.InitArgs}} if deployErr := deploySysCC(context.Background(), &spec); deployErr != nil { errStr := fmt.Sprintf("deploy chaincode failed: %s", deployErr) sysccLogger.Error(errStr) return fmt.Errorf(errStr) } sysccLogger.Info("system chaincode %s(%s) registered", syscc.Name, syscc.Path) return err }
func RegisterSysCC(path string, o interface{}) error { syscc := o.(shim.Chaincode) if syscc == nil { sysccLogger.Warning(fmt.Sprintf("invalid chaincode %v", o)) return fmt.Errorf(fmt.Sprintf("invalid chaincode %v", o)) } err := inproc.Register(path, syscc) if err != nil { return fmt.Errorf(fmt.Sprintf("could not register (%s,%v): %s", path, syscc, err)) } sysccLogger.Debug("system chaincode %s registered", path) return err }
// RegisterSysCC registers the given system chaincode with the peer func RegisterSysCC(syscc *SystemChaincode) error { if !syscc.Enabled || !isWhitelisted(syscc) { sysccLogger.Info(fmt.Sprintf("system chaincode (%s,%s) disabled", syscc.Name, syscc.Path)) return nil } err := inproccontroller.Register(syscc.Path, syscc.Chaincode) if err != nil { //if the type is registered, the instance may not be... keep going if _, ok := err.(inproccontroller.SysCCRegisteredErr); !ok { errStr := fmt.Sprintf("could not register (%s,%v): %s", syscc.Path, syscc, err) sysccLogger.Error(errStr) return fmt.Errorf(errStr) } } sysccLogger.Infof("system chaincode %s(%s) registered", syscc.Name, syscc.Path) return err }