HybridCodec provides hybrid protobuf binary marshaling and amino JSON marshaling in a single type. It seemed like a good idea to me when we first did the state migration because it allows queriers to still use amino JSON. But it's just messy in other ways because the CLI and genesis should use the same encoding as everything else (either proto or amino). And it just feels wrong.
So I propose we remove HybridCodec and just always pass an amino JSON marshaler into the legacy querier and REST endpoints and let everything else that is non-legacy (genesis and CLI) just use either ProtoCodec or AminoCodec.
Needed for #5917.
AppModule NewQuerierHandler() sdk.Querier -> LegacyQuerierHandler(JSONMarshaler) sdk.Querier #6838BinaryMarshaler interface with just the MarshalBinary*** methods to be used in keepers so that legacy queriers don't accidentally try to use the keeper's codec #6838JSONMarshaler from LegacyQuerierHandler in all queriers instead of the Marshaler on the keeperHybridCodecACK
Ack
We should also make sure to remove references to HybridCodec from ADR019, and make sure the changes here are reflected in the ADR.
Most helpful comment
We should also make sure to remove references to HybridCodec from ADR019, and make sure the changes here are reflected in the ADR.