{"record":{"id":"29fb678537f21f33","repo":"hyperledger/fabric","slug":"unsupported-msp-type","errorCode":null,"errorMessage":"Unsupported msp type ","messagePattern":"Unsupported msp type ","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"internal/peer/node/start.go","lineNumber":218,"sourceCode":"\t}\n\tlogger.Infof(\"Peer config with combined core.yaml settings and environment variable overrides:\\n%s\", settingsYaml)\n\n\t// Debug logging for peer environment variables\n\tlogger.Debugf(\"Environment variables:\")\n\tenvVars := os.Environ()\n\tfor _, envVar := range envVars {\n\t\tlogger.Debug(envVar)\n\t}\n\n\t// currently the peer only works with the standard MSP\n\t// because in certain scenarios the MSP has to make sure\n\t// that from a single credential you only have a single 'identity'.\n\t// Idemix does not support this *YET* but it can be easily\n\t// fixed to support it. For now, we just make sure that\n\t// the peer only comes up with the standard MSP\n\tmspType := mgmt.GetLocalMSP(factory.GetDefault()).GetType()\n\tif mspType != msp.FABRIC {\n\t\tpanic(\"Unsupported msp type \" + msp.ProviderTypeToString(mspType))\n\t}\n\n\t// Trace RPCs with the golang.org/x/net/trace package. This was moved out of\n\t// the deliver service connection factory as it has process wide implications\n\t// and was racy with respect to initialization of gRPC clients and servers.\n\tgrpc.EnableTracing = true\n\n\t// obtain coreConfiguration\n\tcoreConfig, err := peer.GlobalConfig()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tplatformRegistry := platforms.NewRegistry(platforms.SupportedPlatforms...)\n\n\topsSystem := newOperationsSystem(coreConfig)\n\terr = opsSystem.Start()\n\tif err != nil {","sourceCodeStart":200,"sourceCodeEnd":236,"githubUrl":"https://github.com/hyperledger/fabric/blob/2736b63f8fd5932511d56fe68b7039d15977f7f6/internal/peer/node/start.go#L200-L236","documentation":"During peer startup, serve() checks the local MSP's type and panics unless it is the standard FABRIC (X.509) MSP. Fabric's peer does not support running with an Idemix (or other) MSP as the local MSP, so an unsupported configuration crashes the process with this panic message including the provider type string.","triggerScenarios":"Starting the peer when CORE_PEER_LOCALMSPID / msp config points to a non-FABRIC MSP type, e.g. an Idemix MSP directory configured as the peer's local MSP via msp.GetLocalMSP.","commonSituations":"Pointing the peer's local MSP at an Idemix provider (Idemix is only valid as a client/channel MSP config, not the peer's local MSP); copying MSP config from an idemix example; misconfigured msp provider type in core.yaml or msp config.yaml.","solutions":["Set the peer's local MSP (peer.mspConfigPath / CORE_PEER_MSPCONFIGPATH) to a standard X.509 FABRIC MSP directory.","Remove any NodeOUs/provider overrides that make the local MSP register as idemix; ensure config.yaml of the MSP is a Fabric MSP.","Use Idemix identities only via channel/join configuration (e.g. for clients), never as the peer's local MSP, then restart the peer."],"exampleFix":"// before (core.yaml / env)\nCORE_PEER_MSPCONFIGPATH=/path/to/idemix-msp\n// after\nCORE_PEER_MSPCONFIGPATH=/path/to/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp","handlingStrategy":"validation","validationCode":"// before starting the peer, assert the local MSP is a Fabric X.509 MSP\nif !strings.HasSuffix(os.Getenv(\"CORE_PEER_MSPCONFIGPATH\"), \"/msp\") || idemixConfigPresent() {\n    return errors.New(\"peer local MSP must be a FABRIC (X.509) MSP\")\n}","typeGuard":null,"tryCatchPattern":"// this is a panic, not an error return — recover at the process supervisor level\nfunc main() {\n    defer func() { if r := recover(); r != nil { if s, ok := r.(string); ok && strings.HasPrefix(s, \"Unsupported msp type\") { log.Fatalf(\"fix CORE_PEER_MSPCONFIGPATH: %s\", s) } ; panic(r) } }()\n    _ = serve(nil)\n}","preventionTips":["Never point CORE_PEER_MSPCONFIGPATH at an Idemix MSP directory.","Keep Idemix only for client/channel identity configs, not the peer's local MSP.","Validate the MSP config.yaml provider type in deployment tooling before launch."],"tags":["fabric","msp","startup","panic"],"backgroundTag":"unsupported-msp-type","analyzedSha":"2736b63f8fd5932511d56fe68b7039d15977f7f6","analyzedAt":"2026-09-04T08:52:36.465Z","contentChangedAt":"2026-09-04T08:52:36.465Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}