Encoder (Pulp)
Pulp
Source: https://github.com/maticnetwork/heimdall/blob/master/auth/types/pulp.go
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 GetPulpHash
method.
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 name
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).
More here: https://docs.cosmos.network/master/core/encoding.html