This is a work in progress implementation of the Amino serialization for Tendermint/Cosmos in the Rust Language. For details on amino, see: https://github.com/tendermint/go-amino.
It is based on the Protocol Buffers implementation prost! by @danburkert.
Like prost! for protobuf, it uses Rust's type-directed metaprogramming to add support for amino's registered types.
Registered types can be annotated via
#[aminoName="registered/name/goes/here"]
to derive encoding and decoding.
As amino allows to register type aliases of primitive types (e.g.
bytes via
ed25519.Pubkey), you can also annotate fields.
You can find a complete example which uses both, a registered type (or message) and a registered scalar type
(bytes
or Vec<u8>
) in the kms repository.