hyperledger/fabric · error

signed proposal must not be nil from caller [%s]

Error message

signed proposal must not be nil from caller [%s]

What it means

Returned by the chaincode Handler's checkACL when the signed proposal is nil while validating a chaincode-to-chaincode invocation. The ACL check needs the caller's signed proposal to authenticate the invoker; a nil one means the calling chaincode shim sent an incomplete invocation context.

Source

Thrown at core/chaincode/handler.go:390

	}()
}

// Check if the transactor is allow to call this chaincode on this channel
func (h *Handler) checkACL(signedProp *pb.SignedProposal, proposal *pb.Proposal, ccIns *sysccprovider.ChaincodeInstance) error {
	// if we are here, all we know is that the invoked chaincode is either
	// - a system chaincode that *is* invokable through a cc2cc
	//   (but we may still have to determine whether the invoker can perform this invocation)
	// - an application chaincode
	//   (and we still need to determine whether the invoker can invoke it)

	if h.BuiltinSCCs.IsSysCC(ccIns.ChaincodeName) {
		// Allow this call
		return nil
	}

	// A Nil signedProp will be rejected for non-system chaincodes
	if signedProp == nil {
		return errors.Errorf("signed proposal must not be nil from caller [%s]", ccIns.String())
	}

	return h.ACLProvider.CheckACL(resources.Peer_ChaincodeToChaincode, ccIns.ChannelID, signedProp)
}

func (h *Handler) deregister() {
	h.Registry.Deregister(h.chaincodeID)
}

func (h *Handler) streamDone() <-chan struct{} {
	h.mutex.Lock()
	defer h.mutex.Unlock()
	return h.streamDoneChan
}

func (h *Handler) ProcessStream(stream ccintf.ChaincodeStream) error {
	defer h.deregister()

View on GitHub (pinned to 2736b63f8f)

Solutions

  1. Ensure clients submit a properly signed proposal for chaincode-to-chaincode invocations
  2. Fix the client SDK/proxy that dropped the signed proposal before submission
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at core/chaincode/handler.go:390 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/92eeaf1eeaf04080. Report an issue: GitHub.