Skip to content

tendermint/amino_rs

Repository files navigation

Rust Amino

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.