hyperledger/fabric · error
expected key %s/fields/%s/%s to encode a value of type Strin
Error message
expected key %s/fields/%s/%s to encode a value of type String, but was %T
What it means
Returned by Serializer.DeserializeFieldAsString when the stored StateData oneof is set but is not the String variant — e.g. an Int64 or Bytes was stored where the struct field expects a string. A type mismatch between the Go field and the encoded state.
Source
Thrown at core/chaincode/lifecycle/serializer.go:426
err = proto.Unmarshal(value, stateData)
if err != nil {
return nil, errors.Wrapf(err, "could not unmarshal state for key %s", keyName)
}
return stateData, nil
}
func (s *Serializer) DeserializeFieldAsString(namespace, name, field string, state ReadableState) (string, error) {
value, err := s.DeserializeField(namespace, name, field, state)
if err != nil {
return "", err
}
if value.Type == nil {
return "", nil
}
oneOf, ok := value.Type.(*lb.StateData_String_)
if !ok {
return "", errors.Errorf("expected key %s/fields/%s/%s to encode a value of type String, but was %T", namespace, name, field, value.Type)
}
return oneOf.String_, nil
}
func (s *Serializer) DeserializeFieldAsBytes(namespace, name, field string, state ReadableState) ([]byte, error) {
value, err := s.DeserializeField(namespace, name, field, state)
if err != nil {
return nil, err
}
if value.Type == nil {
return nil, nil
}
oneOf, ok := value.Type.(*lb.StateData_Bytes)
if !ok {
return nil, errors.Errorf("expected key %s to encode a value of type []byte, but was %T", FieldKey(namespace, name, field), value.Type)
}
return oneOf.Bytes, nil
}View on GitHub (pinned to 2736b63f8f)
Solutions
- Ensure the field was committed as a string value
- Re-commit the chaincode definition with the correct field type
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at core/chaincode/lifecycle/serializer.go:426 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/5843e403d3506788.
Report an issue: GitHub.