{"record":{"id":"683841dbf3d08031","repo":"hyperledger/fabric","slug":"invalid-msp-newopts-instance-it-must-be-either-b","errorCode":null,"errorMessage":"Invalid msp.NewOpts instance. It must be either *BCCSPNewOpts or *IdemixNewOpts. It was [%v]","messagePattern":"Invalid msp\\.NewOpts instance\\. It must be either \\*BCCSPNewOpts or \\*IdemixNewOpts\\. It was \\[(.+?)\\]","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"msp/factory.go","lineNumber":80,"sourceCode":"\t\tcase MSPv1_3, MSPv1_4_3:\n\t\t\tmsp, err := idemix.NewIdemixMsp(MSPv1_3)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\treturn &idemixMSPWrapper{msp.(*idemix.Idemixmsp)}, nil\n\t\tcase MSPv1_1:\n\t\t\tmsp, err := idemix.NewIdemixMsp(MSPv1_1)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\treturn &idemixMSPWrapper{msp.(*idemix.Idemixmsp)}, nil\n\t\tdefault:\n\t\t\treturn nil, errors.Errorf(\"Invalid *IdemixNewOpts. Version not recognized [%v]\", opts.GetVersion())\n\t\t}\n\tdefault:\n\t\treturn nil, errors.Errorf(\"Invalid msp.NewOpts instance. It must be either *BCCSPNewOpts or *IdemixNewOpts. It was [%v]\", opts)\n\t}\n}\n","sourceCodeStart":62,"sourceCodeEnd":83,"githubUrl":"https://github.com/hyperledger/fabric/blob/2736b63f8fd5932511d56fe68b7039d15977f7f6/msp/factory.go#L62-L83","documentation":"msp factory New: the opts argument is neither *BCCSPNewOpts nor *IdemixNewOpts, so the factory cannot determine which MSP implementation to build; the message prints the actual type. A programming-error guard rather than a runtime condition.","triggerScenarios":"Thrown at msp/factory.go:80 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass *BCCSPNewOpts or *IdemixNewOpts to msp.New","Fix custom callers constructing MSPs with ad-hoc opts types"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}