amino

Table of Contents

amino/amino.proto

Top

File-level Extensions

ExtensionTypeBaseNumberDescription
dont_omitempty bool .google.protobuf.FieldOptions 11110005

dont_omitempty sets the field in the JSON object even if its value is empty, i.e. equal to the Golang zero value. To learn what the zero values are, see https://go.dev/ref/spec#The_zero_value. Fields default to `omitempty`, which is the default behavior when this annotation is unset. When set to true, then the field value in the JSON object will be set, i.e. not `undefined`. Example: message Foo { string bar = 1; string baz = 2 [(amino.dont_omitempty) = true]; } f := Foo{}; out := AminoJSONEncoder(&f); out == {"baz":""}

encoding string .google.protobuf.FieldOptions 11110003

encoding describes the encoding format used by Amino for the given field. The field type is chosen to be a string for flexibility, but it should ideally be short and expected to be machine-readable, for example "base64" or "utf8_json". We highly recommend to use underscores for word separation instead of spaces. If left empty, then the Amino encoding is expected to be the same as the Protobuf one. This annotation should not be confused with the `message_encoding` one which operates on the message level.

field_name string .google.protobuf.FieldOptions 11110004

field_name sets a different field name (i.e. key name) in the amino JSON object for the given field. Example: message Foo { string bar = 1 [(amino.field_name) = "baz"]; } Then the Amino encoding of Foo will be: `{"baz":"some value"}`

oneof_name string .google.protobuf.FieldOptions 11110006

oneof_name sets the type name for the given field oneof field. This is used by the Amino JSON encoder to encode the type of the oneof field, and must be the same string in the RegisterConcrete() method usage used to register the concrete type.

message_encoding string .google.protobuf.MessageOptions 11110002

encoding describes the encoding format used by Amino for the given message. The field type is chosen to be a string for flexibility, but it should ideally be short and expected to be machine-readable, for example "base64" or "utf8_json". We highly recommend to use underscores for word separation instead of spaces. If left empty, then the Amino encoding is expected to be the same as the Protobuf one. This annotation should not be confused with the `encoding` one which operates on the field level.

name string .google.protobuf.MessageOptions 11110001

name is the string used when registering a concrete type into the Amino type registry, via the Amino codec's `RegisterConcrete()` method. This string MUST be at most 39 characters long, or else the message will be rejected by the Ledger hardware device.

Scalar Value Types

.proto Type Notes Python Type
double float
float float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int/long
uint32 Uses variable-length encoding. int/long
uint64 Uses variable-length encoding. int/long
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int/long
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. int
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. int/long
sfixed32 Always four bytes. int
sfixed64 Always eight bytes. int/long
bool boolean
string A string must always contain UTF-8 encoded or 7-bit ASCII text. str/unicode
bytes May contain any arbitrary sequence of bytes. str