Heimdall needs to verify the transactions of Heimdall on the Ethereum chain. For that it uses RLP encoding to produce special transactions, like checkpoint.
This special transaction uses
pulp (RLP based) encoding instead of default amino encoding.
Pulp uses a prefix-based simple encoding mechanism to solve interface decoding. Check
The below returns prefix-bytes for a given
msg. Here is an example on how to register an object for pulp encoding.
Encoding is just RLP encoding and prepending hash of
GetPulpHash of the
Decoding works like following:
For more Information:
The Cosmos SDK utilizes two binary wire encoding protocols, Amino and Protocol Buffers, where Amino is an object encoding specification. It is a subset of Proto3 with an extension for interface support. See the Proto3 spec for more information on Proto3, which Amino is largely compatible with (but not with Proto2).