hyperledger/fabric · error
node %d is not member of channel %s
Error message
node %d is not member of channel %s
What it means
VerifyAuthRequest guard: the request's FromId or ToId has no entry in the channel's MemberMapping, so the sending or receiving node ID is not part of the etcdraft/BFT consenters set for that channel. The node ID-to-identity mapping derived from the channel config does not contain that ID.
Source
Thrown at orderer/common/cluster/clusterservice.go:158
Version: int64(authReq.Version),
Timestamp: EncodeTimestamp(authReq.Timestamp),
FromId: strconv.FormatUint(authReq.FromId, 10),
ToId: strconv.FormatUint(authReq.ToId, 10),
SessionBinding: tlsBinding,
Channel: authReq.Channel,
})
if err != nil {
return nil, errors.Wrap(err, "ASN encoding failed")
}
membership := s.MembershipByChannel[authReq.Channel]
if membership == nil {
return nil, errors.Errorf("channel %s not found in config", authReq.Channel)
}
fromIdentity := membership.MemberMapping[authReq.FromId]
if fromIdentity == nil {
return nil, errors.Errorf("node %d is not member of channel %s", authReq.FromId, authReq.Channel)
}
toIdentity := membership.MemberMapping[authReq.ToId]
if toIdentity == nil {
return nil, errors.Errorf("node %d is not member of channel %s", authReq.ToId, authReq.Channel)
}
equal, err := CompareCertPublicKeys(toIdentity, s.NodeIdentity)
if err != nil {
return nil, errors.Wrap(err, "failed to compare cert public keys")
}
if !equal {
s.Logger.Debugf("node id mismatch for node %d, toIdentity: %s, s.NodeIdentity: %s", authReq.FromId, string(toIdentity), string(s.NodeIdentity))
return nil, errors.Errorf("node id mismatch")
}
err = VerifySignature(fromIdentity, SHA256Digest(msg), authReq.Signature)
if err != nil {View on GitHub (pinned to 2736b63f8f)
Solutions
- Check the consenters set in the channel config includes both nodes
- Ensure node IDs are not stale after a consenter set update
- Verify TLS certificates match the ones configured in the channel
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at orderer/common/cluster/clusterservice.go:158 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/8f488715e89a84c5.
Report an issue: GitHub.