84 lines
3.1 KiB
Protocol Buffer
84 lines
3.1 KiB
Protocol Buffer
|
syntax = "proto3";
|
||
|
|
||
|
package amino;
|
||
|
|
||
|
import "google/protobuf/descriptor.proto";
|
||
|
|
||
|
// TODO(fdymylja): once we fully migrate to protov2 the go_package needs to be updated.
|
||
|
// We need this right now because gogoproto codegen needs to import the extension.
|
||
|
option go_package = "github.com/cosmos/cosmos-sdk/types/tx/amino";
|
||
|
|
||
|
extend google.protobuf.MessageOptions {
|
||
|
// 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.
|
||
|
string name = 11110001;
|
||
|
|
||
|
// 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.
|
||
|
string message_encoding = 11110002;
|
||
|
}
|
||
|
|
||
|
extend google.protobuf.FieldOptions {
|
||
|
// 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.
|
||
|
string encoding = 11110003;
|
||
|
|
||
|
// 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"}`
|
||
|
string field_name = 11110004;
|
||
|
|
||
|
// 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":""}
|
||
|
bool dont_omitempty = 11110005;
|
||
|
|
||
|
// 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.
|
||
|
string oneof_name = 11110006;
|
||
|
}
|