hyperledger/fabric · error
Invalid msp.NewOpts instance. It must be either *BCCSPNewOpt
Error message
Invalid msp.NewOpts instance. It must be either *BCCSPNewOpts or *IdemixNewOpts. It was [%v]
What it means
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.
Source
Thrown at msp/factory.go:80
case MSPv1_3, MSPv1_4_3:
msp, err := idemix.NewIdemixMsp(MSPv1_3)
if err != nil {
return nil, err
}
return &idemixMSPWrapper{msp.(*idemix.Idemixmsp)}, nil
case MSPv1_1:
msp, err := idemix.NewIdemixMsp(MSPv1_1)
if err != nil {
return nil, err
}
return &idemixMSPWrapper{msp.(*idemix.Idemixmsp)}, nil
default:
return nil, errors.Errorf("Invalid *IdemixNewOpts. Version not recognized [%v]", opts.GetVersion())
}
default:
return nil, errors.Errorf("Invalid msp.NewOpts instance. It must be either *BCCSPNewOpts or *IdemixNewOpts. It was [%v]", opts)
}
}
View on GitHub (pinned to 2736b63f8f)
Solutions
- Pass *BCCSPNewOpts or *IdemixNewOpts to msp.New
- Fix custom callers constructing MSPs with ad-hoc opts types
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at msp/factory.go:80 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of hyperledger/fabric@2736b63f8f (2026-09-04).
Data as JSON: /api/errors/683841dbf3d08031.
Report an issue: GitHub.