hyperledger/fabric · error

empty policies in 'Orderer' group

Error message

empty policies in 'Orderer' group

What it means

checkConsentersMatchPolicy guard: the Orderer group in the config has an empty Policies map. The smartbft verifier needs at least the BlockValidation policy to compare against the expected BFT quorum policy, so an orderer group without policies is rejected.

Source

Thrown at orderer/consensus/smartbft/configverifier.go:156

		identities = append(identities, &msp.MSPPrincipal{
			PrincipalClassification: msp.MSPPrincipal_IDENTITY,
			Principal:               protoutil.MarshalOrPanic(&msp.SerializedIdentity{Mspid: consenter.MspId, IdBytes: consenter.Identity}),
		})
	}

	quorumSize := policies.ComputeBFTQuorum(n, f)
	sp := &common.SignaturePolicyEnvelope{
		Rule:       policydsl.NOutOf(int32(quorumSize), pols),
		Identities: identities,
	}

	expectedConfigPol := &common.Policy{
		Type:  int32(common.Policy_SIGNATURE),
		Value: protoutil.MarshalOrPanic(sp),
	}

	if len(conf.ChannelGroup.Groups["Orderer"].Policies) == 0 {
		return fmt.Errorf("empty policies in 'Orderer' group")
	}

	if conf.ChannelGroup.Groups["Orderer"].Policies["BlockValidation"] == nil {
		return fmt.Errorf("block validation policy is not found in the policies of 'Orderer' group")
	}

	actualPolicy := conf.ChannelGroup.Groups["Orderer"].Policies["BlockValidation"].Policy

	if !proto.Equal(expectedConfigPol, actualPolicy) {
		return fmt.Errorf("block validation policy should be a signature policy: %v but it is %v instead", expectedConfigPol, actualPolicy)
	}

	consensusTypeConfigValue := conf.ChannelGroup.Groups["Orderer"].Values["ConsensusType"]

	if consensusTypeConfigValue == nil {
		return fmt.Errorf("missing consensus type property in config")
	}

View on GitHub (pinned to 2736b63f8f)

Solutions

  1. Ensure the config update preserves the Orderer group's policies
  2. Regenerate the config from a known-good current config
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at orderer/consensus/smartbft/configverifier.go:156 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/a4cfbcdc19d83a02. Report an issue: GitHub.