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

  1. Pass *BCCSPNewOpts or *IdemixNewOpts to msp.New
  2. 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.