hyperledger/fabric · error
block validation policy is not found in the policies of 'Ord
Error message
block validation policy is not found in the policies of 'Orderer' group
What it means
checkConsentersMatchPolicy guard: the Orderer group's Policies map has no 'BlockValidation' entry. The verifier recomputes the expected BlockValidation policy from the consenter mapping and needs to compare it against the configured one; its absence is a malformed orderer config.
Source
Thrown at orderer/consensus/smartbft/configverifier.go:160
}
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")
}
consensusTypeValue := &protosorderer.ConsensusType{}
if err := proto.Unmarshal(consensusTypeConfigValue.Value, consensusTypeValue); err != nil {
return fmt.Errorf("invalid consensus type property in config: %v", err)
}View on GitHub (pinned to 2736b63f8f)
Solutions
- Restore the BlockValidation policy in the Orderer group
- Re-create the config update without deleting orderer policies
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at orderer/consensus/smartbft/configverifier.go:160 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/81e1fecb87de62ce.
Report an issue: GitHub.