hyperledger/fabric · error

no peers available to evaluate chaincode %s in channel %s

Error message

no peers available to evaluate chaincode %s in channel %s

What it means

Gateway evaluator: after collecting endorsers across all orgs for the chaincode on the channel, the list is empty — no peers are known/discovered to evaluate the chaincode, so no endorsement plan can be created.

Source

Thrown at internal/pkg/gateway/registry.go:278

				localOrgEndorsers = es
			} else {
				otherOrgEndorsers = append(otherOrgEndorsers, es...)
			}
		}
	}
	// sort all the 'other orgs' endorsers by decreasing block height
	sort.Slice(otherOrgEndorsers, sorter(otherOrgEndorsers, ""))

	var allEndorsers []*endorser
	for _, e := range append(localOrgEndorsers, otherOrgEndorsers...) {
		allEndorsers = append(allEndorsers, e.endorser)
	}
	if len(allEndorsers) > 0 {
		layout := []*layout{{required: map[string]int{"g1": 1}}} // single layout, one group, one endorsement
		groupEndorsers := map[string][]*endorser{"g1": allEndorsers}
		return newPlan(layout, groupEndorsers), nil
	}
	return nil, fmt.Errorf("no peers available to evaluate chaincode %s in channel %s", chaincode, channel)
}

func sorter(e []*endorserState, host string) func(i, j int) bool {
	return func(i, j int) bool {
		if e[i].height == e[j].height {
			// prefer host peer
			return e[i].endorser.address == host
		}
		return e[i].height > e[j].height
	}
}

// Returns a set of broadcastClients that can order a transaction for the given channel.
func (reg *registry) orderers(channel string) ([]*orderer, int, error) {
	var orderers []*orderer
	var ordererEndpoints []*endpointConfig
	addr, exists := reg.channelOrderers.Load(channel)
	// if it doesn't exist, get the orderers config for this channel

View on GitHub (pinned to 2736b63f8f)

Solutions

  1. Confirm the chaincode is deployed on the channel
  2. Ensure the peer has joined the channel and discovery data is populated
  3. Retry after peers come online
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at internal/pkg/gateway/registry.go:278 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/69b96dd8d3cca737. Report an issue: GitHub.