package rosetta import ( "github.com/cosmos/gogoproto/proto" "cosmossdk.io/x/tx/signing" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec/address" codectypes "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" sdk "github.com/cosmos/cosmos-sdk/types" authcodec "github.com/cosmos/cosmos-sdk/x/auth/types" bankcodec "github.com/cosmos/cosmos-sdk/x/bank/types" ) // MakeCodec generates the codec required to interact // with the cosmos APIs used by the rosetta gateway func MakeCodec() (*codec.ProtoCodec, codectypes.InterfaceRegistry) { ir, err := codectypes.NewInterfaceRegistryWithOptions( codectypes.InterfaceRegistryOptions{ ProtoFiles: proto.HybridResolver, SigningOptions: signing.Options{ AddressCodec: address.Bech32Codec{ Bech32Prefix: sdk.GetConfig().GetBech32AccountAddrPrefix(), }, ValidatorAddressCodec: address.Bech32Codec{ Bech32Prefix: sdk.GetConfig().GetBech32ValidatorAddrPrefix(), }, }, }, ) if err != nil { panic(err) } cdc := codec.NewProtoCodec(ir) authcodec.RegisterInterfaces(ir) bankcodec.RegisterInterfaces(ir) cryptocodec.RegisterInterfaces(ir) return cdc, ir }