Open
Description
opened on Nov 3, 2021
Our deterministic marshalling implementation enforces canonical marshalling for messages.
This is achieved because we generated that code with pulsar codegen.
But what happens when we import a message that was not generated with cosmos-proto?
Ex:
message GeneratedWithCosmosProto {
google.Protobuf.FileDescriptor not_generated_with_cosmos_proto = 1;
string field = 1;
map<string, int64> map_field = 2;
...
}
How do we detect that the import is not generated with pulsar from marshal codegen, and then how do we marshal it in a canonical way without impacting performance much?
Use cases:
- ORM will most likely save objects protobuf file descriptors into state using the
google.Protobuf.FileDescriptor
message. - Timestamp and Duration proto
NOTE:
We can enforce deterministic marshalling for imported objects, protobuf marshal options supports this, but there is no guarantee that that deterministic marshalling follows https://github.com/cosmos/cosmos-sdk/blob/master/docs/architecture/adr-027-deterministic-protobuf-serialization.md
Metadata
Assignees
Type
Projects
Status
📋 Backlog
Activity