diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b6b390fff32..cb69d6070d4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,7 +62,8 @@ older clients. * (client/keys) [\#5889](https://github.com/cosmos/cosmos-sdk/pull/5889) Remove `keys update` command. * (x/evidence) [\#5952](https://github.com/cosmos/cosmos-sdk/pull/5952) Remove CLI and REST handlers for querying `x/evidence` parameters. * (server) [\#5982](https://github.com/cosmos/cosmos-sdk/pull/5982) `--pruning` now must be set to `custom` if you want to customise the granular options. -* (x/gov) [\#7000](https://github.com/cosmos/cosmos-sdk/pull/7000) `ProposalStatus` is now JSON serialized using its protobuf name, so expect names like `PROPOSAL_STATUS_DEPOSIT_PERIOD` as opposed to `DepositPeriod`. +* (x/gov) [\#7000](https://github.com/cosmos/cosmos-sdk/pull/7000) [\#6859](https://github.com/cosmos/cosmos-sdk/pull/6859) `ProposalStatus` and `VoteOption` are now JSON serialized using its protobuf name, so expect names like `PROPOSAL_STATUS_DEPOSIT_PERIOD` as opposed to `DepositPeriod`. +* (x/auth/vesting) [\#6859](https://github.com/cosmos/cosmos-sdk/pull/6859) Custom JSON marshaling of vesting accounts was removed. Vesting accounts are now marshaled using their default proto or amino JSON representation. ### API Breaking Changes diff --git a/codec/hybrid_codec.go b/codec/hybrid_codec.go deleted file mode 100644 index 5e9667c70816..000000000000 --- a/codec/hybrid_codec.go +++ /dev/null @@ -1,69 +0,0 @@ -package codec - -import "github.com/cosmos/cosmos-sdk/codec/types" - -// HybridCodec defines a codec that utilizes Protobuf for binary encoding -// and Amino for JSON encoding. -type HybridCodec struct { - proto Marshaler - amino Marshaler -} - -func NewHybridCodec(amino *LegacyAmino, unpacker types.AnyUnpacker) Marshaler { - return &HybridCodec{ - proto: NewProtoCodec(unpacker), - amino: NewAminoCodec(amino), - } -} - -func (hc *HybridCodec) MarshalBinaryBare(o ProtoMarshaler) ([]byte, error) { - return hc.proto.MarshalBinaryBare(o) -} - -func (hc *HybridCodec) MustMarshalBinaryBare(o ProtoMarshaler) []byte { - return hc.proto.MustMarshalBinaryBare(o) -} - -func (hc *HybridCodec) MarshalBinaryLengthPrefixed(o ProtoMarshaler) ([]byte, error) { - return hc.proto.MarshalBinaryLengthPrefixed(o) -} - -func (hc *HybridCodec) MustMarshalBinaryLengthPrefixed(o ProtoMarshaler) []byte { - return hc.proto.MustMarshalBinaryLengthPrefixed(o) -} - -func (hc *HybridCodec) UnmarshalBinaryBare(bz []byte, ptr ProtoMarshaler) error { - return hc.proto.UnmarshalBinaryBare(bz, ptr) -} - -func (hc *HybridCodec) MustUnmarshalBinaryBare(bz []byte, ptr ProtoMarshaler) { - hc.proto.MustUnmarshalBinaryBare(bz, ptr) -} - -func (hc *HybridCodec) UnmarshalBinaryLengthPrefixed(bz []byte, ptr ProtoMarshaler) error { - return hc.proto.UnmarshalBinaryLengthPrefixed(bz, ptr) -} - -func (hc *HybridCodec) MustUnmarshalBinaryLengthPrefixed(bz []byte, ptr ProtoMarshaler) { - hc.proto.MustUnmarshalBinaryLengthPrefixed(bz, ptr) -} - -func (hc *HybridCodec) MarshalJSON(o interface{}) ([]byte, error) { - return hc.amino.MarshalJSON(o) -} - -func (hc *HybridCodec) MustMarshalJSON(o interface{}) []byte { - return hc.amino.MustMarshalJSON(o) -} - -func (hc *HybridCodec) UnmarshalJSON(bz []byte, ptr interface{}) error { - return hc.amino.UnmarshalJSON(bz, ptr) -} - -func (hc *HybridCodec) MustUnmarshalJSON(bz []byte, ptr interface{}) { - hc.amino.MustUnmarshalJSON(bz, ptr) -} - -func (hc *HybridCodec) UnpackAny(any *types.Any, iface interface{}) error { - return hc.proto.UnpackAny(any, iface) -} diff --git a/codec/hybrid_codec_test.go b/codec/hybrid_codec_test.go deleted file mode 100644 index bb02c17d838a..000000000000 --- a/codec/hybrid_codec_test.go +++ /dev/null @@ -1,108 +0,0 @@ -package codec_test - -import ( - "testing" - - "github.com/stretchr/testify/require" - - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/testutil/testdata" -) - -func TestHybridCodec(t *testing.T) { - testCases := []struct { - name string - codec codec.Marshaler - input codec.ProtoMarshaler - recv codec.ProtoMarshaler - marshalErr bool - unmarshalErr bool - }{ - { - "valid encoding and decoding", - codec.NewHybridCodec(createTestCodec(), createTestInterfaceRegistry()), - &testdata.Dog{Name: "rufus"}, - &testdata.Dog{}, - false, - false, - }, - { - "invalid decode type", - codec.NewHybridCodec(createTestCodec(), createTestInterfaceRegistry()), - &testdata.Dog{Name: "rufus"}, - &testdata.Cat{}, - false, - true, - }, - } - - for _, tc := range testCases { - tc := tc - - t.Run(tc.name, func(t *testing.T) { - bz, err := tc.codec.MarshalBinaryBare(tc.input) - - if tc.marshalErr { - require.Error(t, err) - require.Panics(t, func() { tc.codec.MustMarshalBinaryBare(tc.input) }) - } else { - var bz2 []byte - require.NoError(t, err) - require.NotPanics(t, func() { bz2 = tc.codec.MustMarshalBinaryBare(tc.input) }) - require.Equal(t, bz, bz2) - - err := tc.codec.UnmarshalBinaryBare(bz, tc.recv) - if tc.unmarshalErr { - require.Error(t, err) - require.Panics(t, func() { tc.codec.MustUnmarshalBinaryBare(bz, tc.recv) }) - } else { - require.NoError(t, err) - require.NotPanics(t, func() { tc.codec.MustUnmarshalBinaryBare(bz, tc.recv) }) - require.Equal(t, tc.input, tc.recv) - } - } - - bz, err = tc.codec.MarshalBinaryLengthPrefixed(tc.input) - if tc.marshalErr { - require.Error(t, err) - require.Panics(t, func() { tc.codec.MustMarshalBinaryLengthPrefixed(tc.input) }) - } else { - var bz2 []byte - require.NoError(t, err) - require.NotPanics(t, func() { bz2 = tc.codec.MustMarshalBinaryLengthPrefixed(tc.input) }) - require.Equal(t, bz, bz2) - - err := tc.codec.UnmarshalBinaryLengthPrefixed(bz, tc.recv) - if tc.unmarshalErr { - require.Error(t, err) - require.Panics(t, func() { tc.codec.MustUnmarshalBinaryLengthPrefixed(bz, tc.recv) }) - } else { - require.NoError(t, err) - require.NotPanics(t, func() { tc.codec.MustUnmarshalBinaryLengthPrefixed(bz, tc.recv) }) - require.Equal(t, tc.input, tc.recv) - } - } - - bz, err = tc.codec.MarshalJSON(tc.input) - if tc.marshalErr { - require.Error(t, err) - require.Panics(t, func() { tc.codec.MustMarshalJSON(tc.input) }) - } else { - var bz2 []byte - require.NoError(t, err) - require.NotPanics(t, func() { bz2 = tc.codec.MustMarshalJSON(tc.input) }) - require.Equal(t, bz, bz2) - - err := tc.codec.UnmarshalJSON(bz, tc.recv) - if tc.unmarshalErr { - require.Error(t, err) - require.Panics(t, func() { tc.codec.MustUnmarshalJSON(bz, tc.recv) }) - } else { - require.NoError(t, err) - require.NotPanics(t, func() { tc.codec.MustUnmarshalJSON(bz, tc.recv) }) - require.Equal(t, tc.input, tc.recv) - } - } - }) - } -} diff --git a/codec/json.go b/codec/json.go index cab6993cae5d..044a6ae2b87e 100644 --- a/codec/json.go +++ b/codec/json.go @@ -12,7 +12,9 @@ import ( // ProtoMarshalJSON provides an auxiliary function to return Proto3 JSON encoded // bytes of a message. func ProtoMarshalJSON(msg proto.Message) ([]byte, error) { - jm := &jsonpb.Marshaler{OrigName: true} + // We use the OrigName because camel casing fields just doesn't make sense. + // EmitDefaults is also often the more expected behavior for CLI users + jm := &jsonpb.Marshaler{OrigName: true, EmitDefaults: true} err := types.UnpackInterfaces(msg, types.ProtoJSONPacker{JSONPBMarshaler: jm}) if err != nil { return nil, err diff --git a/proto/cosmos/gov/v1beta1/gov.proto b/proto/cosmos/gov/v1beta1/gov.proto index baa2e643363c..0389f05f2af2 100644 --- a/proto/cosmos/gov/v1beta1/gov.proto +++ b/proto/cosmos/gov/v1beta1/gov.proto @@ -15,8 +15,6 @@ option (gogoproto.goproto_getters_all) = false; // VoteOption defines a vote option enum VoteOption { - option (gogoproto.enum_stringer) = false; - option (gogoproto.goproto_enum_stringer) = false; option (gogoproto.goproto_enum_prefix) = false; // VOTE_OPTION_UNSPECIFIED defines a no-op vote option. diff --git a/server/start.go b/server/start.go index 64dba2d3c6c6..925f6793003a 100644 --- a/server/start.go +++ b/server/start.go @@ -106,7 +106,8 @@ which accepts a path for the resulting pprof file. serverCtx.Logger.Info("starting ABCI with Tendermint") - err := startInProcess(serverCtx, clientCtx.JSONMarshaler, appCreator) + // amino is needed here for backwards compatibility of REST routes + err := startInProcess(serverCtx, clientCtx.LegacyAmino, appCreator) return err }, } @@ -177,7 +178,8 @@ func startStandAlone(ctx *Context, appCreator types.AppCreator) error { select {} } -func startInProcess(ctx *Context, cdc codec.JSONMarshaler, appCreator types.AppCreator) error { +// legacyAminoCdc is used for the legacy REST API +func startInProcess(ctx *Context, legacyAminoCdc *codec.LegacyAmino, appCreator types.AppCreator) error { cfg := ctx.Config home := cfg.RootDir @@ -230,7 +232,9 @@ func startInProcess(ctx *Context, cdc codec.JSONMarshaler, appCreator types.AppC clientCtx := client.Context{}. WithHomeDir(home). WithChainID(genDoc.ChainID). - WithJSONMarshaler(cdc). + WithJSONMarshaler(legacyAminoCdc). + // amino is needed here for backwards compatibility of REST routes + WithLegacyAmino(legacyAminoCdc). WithClient(local.New(tmNode)) apiSrv = api.New(clientCtx, ctx.Logger.With("module", "api-server")) diff --git a/simapp/app.go b/simapp/app.go index c8f81ea62f8f..5187e040e338 100644 --- a/simapp/app.go +++ b/simapp/app.go @@ -202,7 +202,7 @@ func NewSimApp( memKeys: memKeys, } - app.ParamsKeeper = initParamsKeeper(appCodec, keys[paramstypes.StoreKey], tkeys[paramstypes.TStoreKey]) + app.ParamsKeeper = initParamsKeeper(appCodec, cdc, keys[paramstypes.StoreKey], tkeys[paramstypes.TStoreKey]) // set the BaseApp's parameter store bApp.SetParamStore(app.ParamsKeeper.Subspace(baseapp.Paramspace).WithKeyTable(std.ConsensusParamsKeyTable())) @@ -503,9 +503,12 @@ func (app *SimApp) SimulationManager() *module.SimulationManager { // RegisterAPIRoutes registers all application module routes with the provided // API server. func (app *SimApp) RegisterAPIRoutes(apiSvr *api.Server) { - rpc.RegisterRoutes(apiSvr.ClientCtx, apiSvr.Router) - authrest.RegisterTxRoutes(apiSvr.ClientCtx, apiSvr.Router) - ModuleBasics.RegisterRESTRoutes(apiSvr.ClientCtx, apiSvr.Router) + clientCtx := apiSvr.ClientCtx + // amino is needed here for backwards compatibility of REST routes + clientCtx = clientCtx.WithJSONMarshaler(clientCtx.LegacyAmino) + rpc.RegisterRoutes(clientCtx, apiSvr.Router) + authrest.RegisterTxRoutes(clientCtx, apiSvr.Router) + ModuleBasics.RegisterRESTRoutes(clientCtx, apiSvr.Router) } // GetMaccPerms returns a copy of the module account permissions @@ -518,8 +521,8 @@ func GetMaccPerms() map[string][]string { } // initParamsKeeper init params keeper and its subspaces -func initParamsKeeper(appCodec codec.Marshaler, key, tkey sdk.StoreKey) paramskeeper.Keeper { - paramsKeeper := paramskeeper.NewKeeper(appCodec, key, tkey) +func initParamsKeeper(appCodec codec.BinaryMarshaler, legacyAmino *codec.LegacyAmino, key, tkey sdk.StoreKey) paramskeeper.Keeper { + paramsKeeper := paramskeeper.NewKeeper(appCodec, legacyAmino, key, tkey) paramsKeeper.Subspace(authtypes.ModuleName) paramsKeeper.Subspace(banktypes.ModuleName) diff --git a/simapp/app_test.go b/simapp/app_test.go index 6d593f176fd1..84ba317d716d 100644 --- a/simapp/app_test.go +++ b/simapp/app_test.go @@ -1,6 +1,7 @@ package simapp import ( + "encoding/json" "os" "testing" @@ -8,8 +9,6 @@ import ( "github.com/tendermint/tendermint/libs/log" dbm "github.com/tendermint/tm-db" - "github.com/cosmos/cosmos-sdk/codec" - abci "github.com/tendermint/tendermint/abci/types" ) @@ -18,7 +17,7 @@ func TestSimAppExport(t *testing.T) { app := NewSimApp(log.NewTMLogger(log.NewSyncWriter(os.Stdout)), db, nil, true, map[int64]bool{}, DefaultNodeHome, 0, MakeEncodingConfig()) genesisState := NewDefaultGenesisState() - stateBytes, err := codec.MarshalJSONIndent(app.LegacyAmino(), genesisState) + stateBytes, err := json.MarshalIndent(genesisState, "", " ") require.NoError(t, err) // Initialize the chain diff --git a/simapp/params/amino.go b/simapp/params/amino.go index 5c327b187352..e5d540888769 100644 --- a/simapp/params/amino.go +++ b/simapp/params/amino.go @@ -12,8 +12,7 @@ import ( func MakeEncodingConfig() EncodingConfig { cdc := codec.New() interfaceRegistry := types.NewInterfaceRegistry() - // TODO: switch to using AminoCodec here once amino compatibility is fixed - marshaler := codec.NewHybridCodec(cdc, interfaceRegistry) + marshaler := codec.NewAminoCodec(cdc) return EncodingConfig{ InterfaceRegistry: interfaceRegistry, diff --git a/simapp/params/proto.go b/simapp/params/proto.go index ba360511c8ff..919ef949b669 100644 --- a/simapp/params/proto.go +++ b/simapp/params/proto.go @@ -13,8 +13,8 @@ import ( func MakeEncodingConfig() EncodingConfig { amino := codec.New() interfaceRegistry := types.NewInterfaceRegistry() - marshaler := codec.NewHybridCodec(amino, interfaceRegistry) - txCfg := tx.NewTxConfig(codec.NewProtoCodec(interfaceRegistry), std.DefaultPublicKeyCodec{}, tx.DefaultSignModes) + marshaler := codec.NewProtoCodec(interfaceRegistry) + txCfg := tx.NewTxConfig(marshaler, std.DefaultPublicKeyCodec{}, tx.DefaultSignModes) return EncodingConfig{ InterfaceRegistry: interfaceRegistry, diff --git a/simapp/sim_bench_test.go b/simapp/sim_bench_test.go index 902e6184b850..20a89e94b46a 100644 --- a/simapp/sim_bench_test.go +++ b/simapp/sim_bench_test.go @@ -30,8 +30,8 @@ func BenchmarkFullAppSimulation(b *testing.B) { // run randomized simulation _, simParams, simErr := simulation.SimulateFromSeed( - b, os.Stdout, app.BaseApp, AppStateFn(app.LegacyAmino(), app.SimulationManager()), - SimulationOperations(app, app.LegacyAmino(), config), + b, os.Stdout, app.BaseApp, AppStateFn(app.AppCodec(), app.SimulationManager()), + SimulationOperations(app, app.AppCodec(), config), app.ModuleAccountAddrs(), config, ) @@ -69,8 +69,8 @@ func BenchmarkInvariants(b *testing.B) { // run randomized simulation _, simParams, simErr := simulation.SimulateFromSeed( - b, os.Stdout, app.BaseApp, AppStateFn(app.LegacyAmino(), app.SimulationManager()), - SimulationOperations(app, app.LegacyAmino(), config), + b, os.Stdout, app.BaseApp, AppStateFn(app.AppCodec(), app.SimulationManager()), + SimulationOperations(app, app.AppCodec(), config), app.ModuleAccountAddrs(), config, ) diff --git a/simapp/sim_test.go b/simapp/sim_test.go index 217446baaaa3..2fac8adb5eec 100644 --- a/simapp/sim_test.go +++ b/simapp/sim_test.go @@ -72,8 +72,8 @@ func TestFullAppSimulation(t *testing.T) { // run randomized simulation _, simParams, simErr := simulation.SimulateFromSeed( - t, os.Stdout, app.BaseApp, AppStateFn(app.LegacyAmino(), app.SimulationManager()), - SimulationOperations(app, app.LegacyAmino(), config), + t, os.Stdout, app.BaseApp, AppStateFn(app.AppCodec(), app.SimulationManager()), + SimulationOperations(app, app.AppCodec(), config), app.ModuleAccountAddrs(), config, ) @@ -104,8 +104,8 @@ func TestAppImportExport(t *testing.T) { // Run randomized simulation _, simParams, simErr := simulation.SimulateFromSeed( - t, os.Stdout, app.BaseApp, AppStateFn(app.LegacyAmino(), app.SimulationManager()), - SimulationOperations(app, app.LegacyAmino(), config), + t, os.Stdout, app.BaseApp, AppStateFn(app.AppCodec(), app.SimulationManager()), + SimulationOperations(app, app.AppCodec(), config), app.ModuleAccountAddrs(), config, ) @@ -137,12 +137,12 @@ func TestAppImportExport(t *testing.T) { require.Equal(t, "SimApp", newApp.Name()) var genesisState GenesisState - err = app.LegacyAmino().UnmarshalJSON(appState, &genesisState) + err = json.Unmarshal(appState, &genesisState) require.NoError(t, err) ctxA := app.NewContext(true, abci.Header{Height: app.LastBlockHeight()}) ctxB := newApp.NewContext(true, abci.Header{Height: app.LastBlockHeight()}) - newApp.mm.InitGenesis(ctxB, app.LegacyAmino(), genesisState) + newApp.mm.InitGenesis(ctxB, app.AppCodec(), genesisState) newApp.StoreConsensusParams(ctxB, consensusParams) fmt.Printf("comparing stores...\n") @@ -195,8 +195,8 @@ func TestAppSimulationAfterImport(t *testing.T) { // Run randomized simulation stopEarly, simParams, simErr := simulation.SimulateFromSeed( - t, os.Stdout, app.BaseApp, AppStateFn(app.LegacyAmino(), app.SimulationManager()), - SimulationOperations(app, app.LegacyAmino(), config), + t, os.Stdout, app.BaseApp, AppStateFn(app.AppCodec(), app.SimulationManager()), + SimulationOperations(app, app.AppCodec(), config), app.ModuleAccountAddrs(), config, ) @@ -237,8 +237,8 @@ func TestAppSimulationAfterImport(t *testing.T) { }) _, _, err = simulation.SimulateFromSeed( - t, os.Stdout, newApp.BaseApp, AppStateFn(app.LegacyAmino(), app.SimulationManager()), - SimulationOperations(newApp, newApp.LegacyAmino(), config), + t, os.Stdout, newApp.BaseApp, AppStateFn(app.AppCodec(), app.SimulationManager()), + SimulationOperations(newApp, newApp.AppCodec(), config), newApp.ModuleAccountAddrs(), config, ) require.NoError(t, err) @@ -282,8 +282,8 @@ func TestAppStateDeterminism(t *testing.T) { ) _, _, err := simulation.SimulateFromSeed( - t, os.Stdout, app.BaseApp, AppStateFn(app.LegacyAmino(), app.SimulationManager()), - SimulationOperations(app, app.LegacyAmino(), config), + t, os.Stdout, app.BaseApp, AppStateFn(app.AppCodec(), app.SimulationManager()), + SimulationOperations(app, app.AppCodec(), config), app.ModuleAccountAddrs(), config, ) require.NoError(t, err) diff --git a/simapp/simd/cmd/root.go b/simapp/simd/cmd/root.go index 1257648040ff..563e77e96b73 100644 --- a/simapp/simd/cmd/root.go +++ b/simapp/simd/cmd/root.go @@ -54,7 +54,7 @@ var ( WithTxConfig(encodingConfig.TxConfig). WithLegacyAmino(encodingConfig.Amino). WithInput(os.Stdin). - WithAccountRetriever(types.NewAccountRetriever(encodingConfig.Marshaler)). + WithAccountRetriever(types.NewAccountRetriever(encodingConfig.Amino)). WithBroadcastMode(flags.BroadcastBlock). WithHomeDir(simapp.DefaultNodeHome) ) @@ -79,12 +79,12 @@ func init() { authclient.Codec = encodingConfig.Marshaler rootCmd.AddCommand( - withProtoJSON(genutilcli.InitCmd(simapp.ModuleBasics, simapp.DefaultNodeHome)), - withProtoJSON(genutilcli.CollectGenTxsCmd(banktypes.GenesisBalancesIterator{}, simapp.DefaultNodeHome)), + genutilcli.InitCmd(simapp.ModuleBasics, simapp.DefaultNodeHome), + genutilcli.CollectGenTxsCmd(banktypes.GenesisBalancesIterator{}, simapp.DefaultNodeHome), genutilcli.MigrateGenesisCmd(), - withProtoJSON(genutilcli.GenTxCmd(simapp.ModuleBasics, encodingConfig.TxConfig, banktypes.GenesisBalancesIterator{}, simapp.DefaultNodeHome)), - withProtoJSON(genutilcli.ValidateGenesisCmd(simapp.ModuleBasics, encodingConfig.TxConfig)), - withProtoJSON(AddGenesisAccountCmd(simapp.DefaultNodeHome)), + genutilcli.GenTxCmd(simapp.ModuleBasics, encodingConfig.TxConfig, banktypes.GenesisBalancesIterator{}, simapp.DefaultNodeHome), + genutilcli.ValidateGenesisCmd(simapp.ModuleBasics, encodingConfig.TxConfig), + AddGenesisAccountCmd(simapp.DefaultNodeHome), tmcli.NewCompletionCmd(rootCmd, true), testnetCmd(simapp.ModuleBasics, banktypes.GenesisBalancesIterator{}), debug.Cmd(), @@ -202,27 +202,3 @@ func exportAppStateAndTMValidators( return simApp.ExportAppStateAndValidators(forZeroHeight, jailWhiteList) } - -// This is a temporary command middleware to enable proto JSON marshaling for testing. -// Once proto JSON works everywhere we can remove this and set ProtoCodec as default -func withProtoJSON(command *cobra.Command) *cobra.Command { - existing := command.PersistentPreRunE - if existing != nil { - command.PersistentPreRunE = func(cmd *cobra.Command, args []string) error { - err := existing(cmd, args) - if err != nil { - return err - } - return setProtoJSON(cmd, args) - } - } else { - command.PersistentPreRunE = setProtoJSON - } - return command -} - -func setProtoJSON(cmd *cobra.Command, _ []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - clientCtx = clientCtx.WithJSONMarshaler(codec.NewProtoCodec(clientCtx.InterfaceRegistry)) - return client.SetCmdClientContext(cmd, clientCtx) -} diff --git a/simapp/state.go b/simapp/state.go index 1411fcc9ecc0..9d646461c43f 100644 --- a/simapp/state.go +++ b/simapp/state.go @@ -21,7 +21,7 @@ import ( // AppStateFn returns the initial application state using a genesis or the simulation parameters. // It panics if the user provides files for both of them. // If a file is not given for the genesis or the sim params, it creates a randomized one. -func AppStateFn(cdc *codec.LegacyAmino, simManager *module.SimulationManager) simtypes.AppStateFn { +func AppStateFn(cdc codec.JSONMarshaler, simManager *module.SimulationManager) simtypes.AppStateFn { return func(r *rand.Rand, accs []simtypes.Account, config simtypes.Config, ) (appState json.RawMessage, simAccs []simtypes.Account, chainID string, genesisTimestamp time.Time) { @@ -71,7 +71,7 @@ func AppStateFn(cdc *codec.LegacyAmino, simManager *module.SimulationManager) si // AppStateRandomizedFn creates calls each module's GenesisState generator function // and creates the simulation params func AppStateRandomizedFn( - simManager *module.SimulationManager, r *rand.Rand, cdc *codec.LegacyAmino, + simManager *module.SimulationManager, r *rand.Rand, cdc codec.JSONMarshaler, accs []simtypes.Account, genesisTimestamp time.Time, appParams simtypes.AppParams, ) (json.RawMessage, []simtypes.Account) { numAccs := int64(len(accs)) @@ -115,7 +115,7 @@ func AppStateRandomizedFn( simManager.GenerateGenesisStates(simState) - appState, err := cdc.MarshalJSON(genesisState) + appState, err := json.Marshal(genesisState) if err != nil { panic(err) } @@ -125,7 +125,7 @@ func AppStateRandomizedFn( // AppStateFromGenesisFileFn util function to generate the genesis AppState // from a genesis.json file. -func AppStateFromGenesisFileFn(r io.Reader, cdc *codec.LegacyAmino, genesisFile string) (tmtypes.GenesisDoc, []simtypes.Account) { +func AppStateFromGenesisFileFn(r io.Reader, cdc codec.JSONMarshaler, genesisFile string) (tmtypes.GenesisDoc, []simtypes.Account) { bytes, err := ioutil.ReadFile(genesisFile) if err != nil { panic(err) diff --git a/simapp/test_helpers.go b/simapp/test_helpers.go index 0ec48a9bef5e..cd76827cff10 100644 --- a/simapp/test_helpers.go +++ b/simapp/test_helpers.go @@ -19,7 +19,6 @@ import ( bam "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/simapp/helpers" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" @@ -53,7 +52,7 @@ func Setup(isCheckTx bool) *SimApp { if !isCheckTx { // init chain must be called to stop deliverState from being nil genesisState := NewDefaultGenesisState() - stateBytes, err := codec.MarshalJSONIndent(app.LegacyAmino(), genesisState) + stateBytes, err := json.MarshalIndent(genesisState, "", " ") if err != nil { panic(err) } @@ -83,7 +82,7 @@ func SetupWithGenesisValSet(t *testing.T, valSet *tmtypes.ValidatorSet, genAccs // set genesis accounts authGenesis := authtypes.NewGenesisState(authtypes.DefaultParams(), genAccs) - genesisState[authtypes.ModuleName] = app.LegacyAmino().MustMarshalJSON(authGenesis) + genesisState[authtypes.ModuleName] = app.AppCodec().MustMarshalJSON(authGenesis) validators := make([]stakingtypes.Validator, 0, len(valSet.Validators)) delegations := make([]stakingtypes.Delegation, 0, len(valSet.Validators)) @@ -111,7 +110,7 @@ func SetupWithGenesisValSet(t *testing.T, valSet *tmtypes.ValidatorSet, genAccs // set validators and delegations stakingGenesis := stakingtypes.NewGenesisState(stakingtypes.DefaultParams(), validators, delegations) - genesisState[stakingtypes.ModuleName] = app.LegacyAmino().MustMarshalJSON(stakingGenesis) + genesisState[stakingtypes.ModuleName] = app.AppCodec().MustMarshalJSON(stakingGenesis) totalSupply := sdk.NewCoins() for _, b := range balances { @@ -121,9 +120,9 @@ func SetupWithGenesisValSet(t *testing.T, valSet *tmtypes.ValidatorSet, genAccs // update total supply bankGenesis := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, totalSupply, []banktypes.Metadata{}) - genesisState[banktypes.ModuleName] = app.LegacyAmino().MustMarshalJSON(bankGenesis) + genesisState[banktypes.ModuleName] = app.AppCodec().MustMarshalJSON(bankGenesis) - stateBytes, err := codec.MarshalJSONIndent(app.LegacyAmino(), genesisState) + stateBytes, err := json.MarshalIndent(genesisState, "", " ") require.NoError(t, err) // init chain will set the validator set and initialize the genesis accounts diff --git a/simapp/utils.go b/simapp/utils.go index 7591010ae946..1409310a0439 100644 --- a/simapp/utils.go +++ b/simapp/utils.go @@ -49,7 +49,7 @@ func SetupSimulation(dirPrefix, dbName string) (simtypes.Config, dbm.DB, string, // SimulationOperations retrieves the simulation params from the provided file path // and returns all the modules weighted operations -func SimulationOperations(app App, cdc *codec.LegacyAmino, config simtypes.Config) []simtypes.WeightedOperation { +func SimulationOperations(app App, cdc codec.JSONMarshaler, config simtypes.Config) []simtypes.WeightedOperation { simState := module.SimulationState{ AppParams: make(simtypes.AppParams), Cdc: cdc, @@ -61,7 +61,10 @@ func SimulationOperations(app App, cdc *codec.LegacyAmino, config simtypes.Confi panic(err) } - app.LegacyAmino().MustUnmarshalJSON(bz, &simState.AppParams) + err = json.Unmarshal(bz, &simState.AppParams) + if err != nil { + panic(err) + } } simState.ParamChanges = app.SimulationManager().GenerateParamChanges(config.Seed) diff --git a/testutil/network/network.go b/testutil/network/network.go index 192c05a1da80..fe8a3eb19ca0 100644 --- a/testutil/network/network.go +++ b/testutil/network/network.go @@ -92,7 +92,7 @@ func DefaultConfig() Config { Codec: encCfg.Marshaler, TxConfig: encCfg.TxConfig, LegacyAmino: encCfg.Amino, - AccountRetriever: authtypes.NewAccountRetriever(encCfg.Marshaler), + AccountRetriever: authtypes.NewAccountRetriever(encCfg.Amino), AppConstructor: NewSimApp, GenesisState: simapp.ModuleBasics.DefaultGenesis(encCfg.Marshaler), TimeoutCommit: 2 * time.Second, diff --git a/types/module/simulation.go b/types/module/simulation.go index c3e01066e46a..e01277f457a4 100644 --- a/types/module/simulation.go +++ b/types/module/simulation.go @@ -99,7 +99,7 @@ func (sm *SimulationManager) WeightedOperations(simState SimulationState) []simu // GenesisState generator function type SimulationState struct { AppParams simulation.AppParams - Cdc *codec.LegacyAmino // application codec + Cdc codec.JSONMarshaler // application codec Rand *rand.Rand // random number GenState map[string]json.RawMessage // genesis state Accounts []simulation.Account // simulation accounts diff --git a/types/query/pagination_test.go b/types/query/pagination_test.go index a6eb24c20ae6..6c66fdf7fbf8 100644 --- a/types/query/pagination_test.go +++ b/types/query/pagination_test.go @@ -170,7 +170,7 @@ func ExamplePaginate() { accountStore := prefix.NewStore(balancesStore, addr1.Bytes()) pageRes, err := query.Paginate(accountStore, request.Pagination, func(key []byte, value []byte) error { var tempRes sdk.Coin - err := app.LegacyAmino().UnmarshalBinaryBare(value, &tempRes) + err := app.AppCodec().UnmarshalBinaryBare(value, &tempRes) if err != nil { return err } diff --git a/types/rest/rest.go b/types/rest/rest.go index 7eb29e36b959..66ed3e5d3931 100644 --- a/types/rest/rest.go +++ b/types/rest/rest.go @@ -45,7 +45,7 @@ func NewResponseWithHeight(height int64, result json.RawMessage) ResponseWithHei // ParseResponseWithHeight returns the raw result from a JSON-encoded // ResponseWithHeight object. -func ParseResponseWithHeight(cdc codec.JSONMarshaler, bz []byte) ([]byte, error) { +func ParseResponseWithHeight(cdc *codec.LegacyAmino, bz []byte) ([]byte, error) { r := ResponseWithHeight{} if err := cdc.UnmarshalJSON(bz, &r); err != nil { return nil, err @@ -279,7 +279,7 @@ func PostProcessResponseBare(w http.ResponseWriter, ctx client.Context, body int resp = b default: - resp, err = ctx.JSONMarshaler.MarshalJSON(body) + resp, err = ctx.LegacyAmino.MarshalJSON(body) if CheckInternalServerError(w, err) { return } @@ -303,15 +303,8 @@ func PostProcessResponse(w http.ResponseWriter, ctx client.Context, resp interfa return } - // TODO: Remove once PubKey Protobuf migration has been completed. - // ref: https://github.com/cosmos/cosmos-sdk/issues/6886 - var marshaler codec.JSONMarshaler - - if ctx.JSONMarshaler != nil { - marshaler = ctx.JSONMarshaler - } else { - marshaler = ctx.LegacyAmino - } + // LegacyAmino used intentionally for REST + marshaler := ctx.LegacyAmino switch res := resp.(type) { case []byte: diff --git a/types/rest/rest_test.go b/types/rest/rest_test.go index 3a57caa4726e..e05deb18771d 100644 --- a/types/rest/rest_test.go +++ b/types/rest/rest_test.go @@ -310,7 +310,8 @@ func TestPostProcessResponseBare(t *testing.T) { encodingConfig := simappparams.MakeEncodingConfig() clientCtx := client.Context{}. WithTxConfig(encodingConfig.TxConfig). - WithJSONMarshaler(encodingConfig.Marshaler) + WithJSONMarshaler(encodingConfig.Amino). // amino used intentionally here + WithLegacyAmino(encodingConfig.Amino) // amino used intentionally here // write bytes w := httptest.NewRecorder() bs := []byte("text string") diff --git a/types/simulation/types.go b/types/simulation/types.go index be4027c9fa44..0474d616308b 100644 --- a/types/simulation/types.go +++ b/types/simulation/types.go @@ -135,7 +135,7 @@ type AppParams map[string]json.RawMessage // object. If it exists, it'll be decoded and returned. Otherwise, the provided // ParamSimulator is used to generate a random value or default value (eg: in the // case of operation weights where Rand is not used). -func (sp AppParams) GetOrGenerate(cdc *codec.LegacyAmino, key string, ptr interface{}, r *rand.Rand, ps ParamSimulator) { +func (sp AppParams) GetOrGenerate(cdc codec.JSONMarshaler, key string, ptr interface{}, r *rand.Rand, ps ParamSimulator) { if v, ok := sp[key]; ok && v != nil { cdc.MustUnmarshalJSON(v, ptr) return diff --git a/x/auth/client/cli/tx_multisign.go b/x/auth/client/cli/tx_multisign.go index 39c28e28391a..523153e5b3ff 100644 --- a/x/auth/client/cli/tx_multisign.go +++ b/x/auth/client/cli/tx_multisign.go @@ -19,7 +19,6 @@ import ( "github.com/cosmos/cosmos-sdk/version" authclient "github.com/cosmos/cosmos-sdk/x/auth/client" "github.com/cosmos/cosmos-sdk/x/auth/signing" - "github.com/cosmos/cosmos-sdk/x/auth/types" ) // GetSignCommand returns the sign command @@ -101,7 +100,7 @@ func makeMultiSignCmd() func(cmd *cobra.Command, args []string) error { multisigPub := multisigInfo.GetPubKey().(multisig.PubKeyMultisigThreshold) multisigSig := multisig.NewMultisig(len(multisigPub.PubKeys)) if !clientCtx.Offline { - accnum, seq, err := types.NewAccountRetriever(clientCtx.JSONMarshaler).GetAccountNumberSequence(clientCtx, multisigInfo.GetAddress()) + accnum, seq, err := clientCtx.AccountRetriever.GetAccountNumberSequence(clientCtx, multisigInfo.GetAddress()) if err != nil { return err } diff --git a/x/auth/client/rest/query.go b/x/auth/client/rest/query.go index 07c440e6935d..764c1841bb45 100644 --- a/x/auth/client/rest/query.go +++ b/x/auth/client/rest/query.go @@ -32,7 +32,7 @@ func QueryAccountRequestHandlerFn(storeName string, clientCtx client.Context) ht return } - accGetter := types.NewAccountRetriever(authclient.Codec) + accGetter := types.NewAccountRetriever(clientCtx.LegacyAmino) account, height, err := accGetter.GetAccountWithHeight(clientCtx, addr) if err != nil { diff --git a/x/auth/simulation/genesis.go b/x/auth/simulation/genesis.go index b35f43f31049..e1b3b293a5e9 100644 --- a/x/auth/simulation/genesis.go +++ b/x/auth/simulation/genesis.go @@ -89,7 +89,7 @@ func RandomizedGenState(simState *module.SimulationState) { authGenesis := types.NewGenesisState(params, genesisAccs) - fmt.Printf("Selected randomly generated auth parameters:\n%s\n", codec.MustMarshalJSONIndent(simState.Cdc, authGenesis.Params)) + fmt.Printf("Selected randomly generated auth parameters:\n%s\n", codec.MustMarshalJSONIndent(simState.Cdc, &authGenesis.Params)) simState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(authGenesis) } diff --git a/x/auth/types/account_retriever.go b/x/auth/types/account_retriever.go index 78a8df6dc9d1..96b762962015 100644 --- a/x/auth/types/account_retriever.go +++ b/x/auth/types/account_retriever.go @@ -11,11 +11,11 @@ import ( // AccountRetriever defines the properties of a type that can be used to // retrieve accounts. type AccountRetriever struct { - codec codec.JSONMarshaler + codec *codec.LegacyAmino } // NewAccountRetriever initialises a new AccountRetriever instance. -func NewAccountRetriever(codec codec.JSONMarshaler) AccountRetriever { +func NewAccountRetriever(codec *codec.LegacyAmino) AccountRetriever { return AccountRetriever{codec: codec} } diff --git a/x/auth/types/account_retriever_test.go b/x/auth/types/account_retriever_test.go index 1b3c7660139b..127dd719703c 100644 --- a/x/auth/types/account_retriever_test.go +++ b/x/auth/types/account_retriever_test.go @@ -19,9 +19,9 @@ func TestAccountRetriever(t *testing.T) { defer mockCtrl.Finish() mockNodeQuerier := mocks.NewMockNodeQuerier(mockCtrl) - accRetr := types.NewAccountRetriever(appCodec) + accRetr := types.NewAccountRetriever(legacyAmino) addr := []byte("test") - bs, err := appCodec.MarshalJSON(types.QueryAccountRequest{Address: addr}) + bs, err := legacyAmino.MarshalJSON(types.QueryAccountRequest{Address: addr}) require.NoError(t, err) route := fmt.Sprintf("custom/%s/%s", types.QuerierRoute, types.QueryAccount) diff --git a/x/auth/vesting/types/vesting_account.go b/x/auth/vesting/types/vesting_account.go index 5354189a13a0..80c1b5f8d6c0 100644 --- a/x/auth/vesting/types/vesting_account.go +++ b/x/auth/vesting/types/vesting_account.go @@ -6,12 +6,9 @@ import ( yaml "gopkg.in/yaml.v2" - "github.com/cosmos/cosmos-sdk/codec/legacy" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" vestexported "github.com/cosmos/cosmos-sdk/x/auth/vesting/exported" - - "github.com/tendermint/tendermint/crypto" ) // Compile-time type assertions @@ -179,21 +176,6 @@ type vestingAccountYAML struct { VestingPeriods Periods `json:"vesting_periods,omitempty" yaml:"vesting_periods,omitempty"` } -type vestingAccountJSON struct { - Address sdk.AccAddress `json:"address" yaml:"address"` - PubKey crypto.PubKey `json:"public_key" yaml:"public_key"` - AccountNumber uint64 `json:"account_number" yaml:"account_number"` - Sequence uint64 `json:"sequence" yaml:"sequence"` - OriginalVesting sdk.Coins `json:"original_vesting" yaml:"original_vesting"` - DelegatedFree sdk.Coins `json:"delegated_free" yaml:"delegated_free"` - DelegatedVesting sdk.Coins `json:"delegated_vesting" yaml:"delegated_vesting"` - EndTime int64 `json:"end_time" yaml:"end_time"` - - // custom fields based on concrete vesting type which can be omitted - StartTime int64 `json:"start_time,omitempty" yaml:"start_time,omitempty"` - VestingPeriods Periods `json:"vesting_periods,omitempty" yaml:"vesting_periods,omitempty"` -} - func (bva BaseVestingAccount) String() string { out, _ := bva.MarshalYAML() return out.(string) @@ -229,38 +211,6 @@ func (bva BaseVestingAccount) MarshalYAML() (interface{}, error) { return string(bz), err } -// MarshalJSON returns the JSON representation of a BaseVestingAccount. -func (bva BaseVestingAccount) MarshalJSON() ([]byte, error) { - alias := vestingAccountJSON{ - Address: bva.Address, - PubKey: bva.GetPubKey(), - AccountNumber: bva.AccountNumber, - Sequence: bva.Sequence, - OriginalVesting: bva.OriginalVesting, - DelegatedFree: bva.DelegatedFree, - DelegatedVesting: bva.DelegatedVesting, - EndTime: bva.EndTime, - } - - return legacy.Cdc.MarshalJSON(alias) -} - -// UnmarshalJSON unmarshals raw JSON bytes into a BaseVestingAccount. -func (bva *BaseVestingAccount) UnmarshalJSON(bz []byte) error { - var alias vestingAccountJSON - if err := legacy.Cdc.UnmarshalJSON(bz, &alias); err != nil { - return err - } - - bva.BaseAccount = authtypes.NewBaseAccount(alias.Address, alias.PubKey, alias.AccountNumber, alias.Sequence) - bva.OriginalVesting = alias.OriginalVesting - bva.DelegatedFree = alias.DelegatedFree - bva.DelegatedVesting = alias.DelegatedVesting - bva.EndTime = alias.EndTime - - return nil -} - //----------------------------------------------------------------------------- // Continuous Vesting Account @@ -385,42 +335,6 @@ func (cva ContinuousVestingAccount) MarshalYAML() (interface{}, error) { return string(bz), err } -// MarshalJSON returns the JSON representation of a ContinuousVestingAccount. -func (cva ContinuousVestingAccount) MarshalJSON() ([]byte, error) { - alias := vestingAccountJSON{ - Address: cva.Address, - PubKey: cva.GetPubKey(), - AccountNumber: cva.AccountNumber, - Sequence: cva.Sequence, - OriginalVesting: cva.OriginalVesting, - DelegatedFree: cva.DelegatedFree, - DelegatedVesting: cva.DelegatedVesting, - EndTime: cva.EndTime, - StartTime: cva.StartTime, - } - - return legacy.Cdc.MarshalJSON(alias) -} - -// UnmarshalJSON unmarshals raw JSON bytes into a ContinuousVestingAccount. -func (cva *ContinuousVestingAccount) UnmarshalJSON(bz []byte) error { - var alias vestingAccountJSON - if err := legacy.Cdc.UnmarshalJSON(bz, &alias); err != nil { - return err - } - - cva.BaseVestingAccount = &BaseVestingAccount{ - BaseAccount: authtypes.NewBaseAccount(alias.Address, alias.PubKey, alias.AccountNumber, alias.Sequence), - OriginalVesting: alias.OriginalVesting, - DelegatedFree: alias.DelegatedFree, - DelegatedVesting: alias.DelegatedVesting, - EndTime: alias.EndTime, - } - cva.StartTime = alias.StartTime - - return nil -} - //----------------------------------------------------------------------------- // Periodic Vesting Account @@ -575,44 +489,6 @@ func (pva PeriodicVestingAccount) MarshalYAML() (interface{}, error) { return string(bz), err } -// MarshalJSON returns the JSON representation of a PeriodicVestingAccount. -func (pva PeriodicVestingAccount) MarshalJSON() ([]byte, error) { - alias := vestingAccountJSON{ - Address: pva.Address, - PubKey: pva.GetPubKey(), - AccountNumber: pva.AccountNumber, - Sequence: pva.Sequence, - OriginalVesting: pva.OriginalVesting, - DelegatedFree: pva.DelegatedFree, - DelegatedVesting: pva.DelegatedVesting, - EndTime: pva.EndTime, - StartTime: pva.StartTime, - VestingPeriods: pva.VestingPeriods, - } - - return legacy.Cdc.MarshalJSON(alias) -} - -// UnmarshalJSON unmarshals raw JSON bytes into a PeriodicVestingAccount. -func (pva *PeriodicVestingAccount) UnmarshalJSON(bz []byte) error { - var alias vestingAccountJSON - if err := legacy.Cdc.UnmarshalJSON(bz, &alias); err != nil { - return err - } - - pva.BaseVestingAccount = &BaseVestingAccount{ - BaseAccount: authtypes.NewBaseAccount(alias.Address, alias.PubKey, alias.AccountNumber, alias.Sequence), - OriginalVesting: alias.OriginalVesting, - DelegatedFree: alias.DelegatedFree, - DelegatedVesting: alias.DelegatedVesting, - EndTime: alias.EndTime, - } - pva.StartTime = alias.StartTime - pva.VestingPeriods = alias.VestingPeriods - - return nil -} - //----------------------------------------------------------------------------- // Delayed Vesting Account @@ -679,37 +555,3 @@ func (dva DelayedVestingAccount) String() string { out, _ := dva.MarshalYAML() return out.(string) } - -// MarshalJSON returns the JSON representation of a DelayedVestingAccount. -func (dva DelayedVestingAccount) MarshalJSON() ([]byte, error) { - alias := vestingAccountJSON{ - Address: dva.Address, - PubKey: dva.GetPubKey(), - AccountNumber: dva.AccountNumber, - Sequence: dva.Sequence, - OriginalVesting: dva.OriginalVesting, - DelegatedFree: dva.DelegatedFree, - DelegatedVesting: dva.DelegatedVesting, - EndTime: dva.EndTime, - } - - return legacy.Cdc.MarshalJSON(alias) -} - -// UnmarshalJSON unmarshals raw JSON bytes into a DelayedVestingAccount. -func (dva *DelayedVestingAccount) UnmarshalJSON(bz []byte) error { - var alias vestingAccountJSON - if err := legacy.Cdc.UnmarshalJSON(bz, &alias); err != nil { - return err - } - - dva.BaseVestingAccount = &BaseVestingAccount{ - BaseAccount: authtypes.NewBaseAccount(alias.Address, alias.PubKey, alias.AccountNumber, alias.Sequence), - OriginalVesting: alias.OriginalVesting, - DelegatedFree: alias.DelegatedFree, - DelegatedVesting: alias.DelegatedVesting, - EndTime: alias.EndTime, - } - - return nil -} diff --git a/x/auth/vesting/types/vesting_account_test.go b/x/auth/vesting/types/vesting_account_test.go index d5652bef458c..eb6e13412b0c 100644 --- a/x/auth/vesting/types/vesting_account_test.go +++ b/x/auth/vesting/types/vesting_account_test.go @@ -1,7 +1,6 @@ package types_test import ( - "encoding/json" "testing" "time" @@ -645,26 +644,6 @@ func TestGenesisAccountValidate(t *testing.T) { } } -func TestBaseVestingAccountJSON(t *testing.T) { - pubkey := secp256k1.GenPrivKey().PubKey() - addr := sdk.AccAddress(pubkey.Address()) - coins := sdk.NewCoins(sdk.NewInt64Coin("test", 5)) - baseAcc := authtypes.NewBaseAccount(addr, pubkey, 10, 50) - - acc := types.NewBaseVestingAccount(baseAcc, coins, time.Now().Unix()) - - bz, err := json.Marshal(acc) - require.NoError(t, err) - - bz1, err := acc.MarshalJSON() - require.NoError(t, err) - require.Equal(t, string(bz1), string(bz)) - - var a types.BaseVestingAccount - require.NoError(t, json.Unmarshal(bz, &a)) - require.Equal(t, acc.String(), a.String()) -} - func TestContinuousVestingAccountMarshal(t *testing.T) { pubkey := secp256k1.GenPrivKey().PubKey() addr := sdk.AccAddress(pubkey.Address()) @@ -687,27 +666,6 @@ func TestContinuousVestingAccountMarshal(t *testing.T) { require.NotNil(t, err) } -func TestContinuousVestingAccountJSON(t *testing.T) { - pubkey := secp256k1.GenPrivKey().PubKey() - addr := sdk.AccAddress(pubkey.Address()) - coins := sdk.NewCoins(sdk.NewInt64Coin("test", 5)) - baseAcc := authtypes.NewBaseAccount(addr, pubkey, 10, 50) - - baseVesting := types.NewBaseVestingAccount(baseAcc, coins, time.Now().Unix()) - acc := types.NewContinuousVestingAccountRaw(baseVesting, baseVesting.EndTime) - - bz, err := json.Marshal(acc) - require.NoError(t, err) - - bz1, err := acc.MarshalJSON() - require.NoError(t, err) - require.Equal(t, string(bz1), string(bz)) - - var a types.ContinuousVestingAccount - require.NoError(t, json.Unmarshal(bz, &a)) - require.Equal(t, acc.String(), a.String()) -} - func TestPeriodicVestingAccountMarshal(t *testing.T) { pubkey := secp256k1.GenPrivKey().PubKey() addr := sdk.AccAddress(pubkey.Address()) @@ -729,26 +687,6 @@ func TestPeriodicVestingAccountMarshal(t *testing.T) { require.NotNil(t, err) } -func TestPeriodicVestingAccountJSON(t *testing.T) { - pubkey := secp256k1.GenPrivKey().PubKey() - addr := sdk.AccAddress(pubkey.Address()) - coins := sdk.NewCoins(sdk.NewInt64Coin("test", 5)) - baseAcc := authtypes.NewBaseAccount(addr, pubkey, 10, 50) - - acc := types.NewPeriodicVestingAccount(baseAcc, coins, time.Now().Unix(), types.Periods{types.Period{3600, coins}}) - - bz, err := json.Marshal(acc) - require.NoError(t, err) - - bz1, err := acc.MarshalJSON() - require.NoError(t, err) - require.Equal(t, string(bz1), string(bz)) - - var a types.PeriodicVestingAccount - require.NoError(t, json.Unmarshal(bz, &a)) - require.Equal(t, acc.String(), a.String()) -} - func TestDelayedVestingAccountMarshal(t *testing.T) { pubkey := secp256k1.GenPrivKey().PubKey() addr := sdk.AccAddress(pubkey.Address()) @@ -769,23 +707,3 @@ func TestDelayedVestingAccountMarshal(t *testing.T) { _, err = app.AccountKeeper.UnmarshalAccount(bz[:len(bz)/2]) require.NotNil(t, err) } - -func TestDelayedVestingAccountJSON(t *testing.T) { - pubkey := secp256k1.GenPrivKey().PubKey() - addr := sdk.AccAddress(pubkey.Address()) - coins := sdk.NewCoins(sdk.NewInt64Coin("test", 5)) - baseAcc := authtypes.NewBaseAccount(addr, pubkey, 10, 50) - - acc := types.NewDelayedVestingAccount(baseAcc, coins, time.Now().Unix()) - - bz, err := json.Marshal(acc) - require.NoError(t, err) - - bz1, err := acc.MarshalJSON() - require.NoError(t, err) - require.Equal(t, string(bz1), string(bz)) - - var a types.DelayedVestingAccount - require.NoError(t, json.Unmarshal(bz, &a)) - require.Equal(t, acc.String(), a.String()) -} diff --git a/x/bank/client/cli/cli_test.go b/x/bank/client/cli/cli_test.go index d8c1b8b4b223..e51ee19b7119 100644 --- a/x/bank/client/cli/cli_test.go +++ b/x/bank/client/cli/cli_test.go @@ -195,6 +195,34 @@ func (s *IntegrationTestSuite) TestGetCmdQueryTotalSupply() { } } +func (s *IntegrationTestSuite) TestNewSendTxCmdGenOnly() { + val := s.network.Validators[0] + + clientCtx := val.ClientCtx + + ctx := context.Background() + ctx = context.WithValue(ctx, client.ClientContextKey, &clientCtx) + + from := val.Address + to := val.Address + amount := sdk.NewCoins( + sdk.NewCoin(fmt.Sprintf("%stoken", val.Moniker), sdk.NewInt(10)), + sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10)), + ) + args := []string{ + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=true", flags.FlagGenerateOnly), + } + + bz, err := banktestutil.MsgSendExec(clientCtx, from, to, amount, args...) + s.Require().NoError(err) + tx, err := s.cfg.TxConfig.TxJSONDecoder()(bz.Bytes()) + s.Require().NoError(err) + s.Require().Equal([]sdk.Msg{types.NewMsgSend(from, to, amount)}, tx.GetMsgs()) +} + func (s *IntegrationTestSuite) TestNewSendTxCmd() { val := s.network.Validators[0] @@ -207,24 +235,6 @@ func (s *IntegrationTestSuite) TestNewSendTxCmd() { respType fmt.Stringer expectedCode uint32 }{ - { - "valid transaction (gen-only)", - val.Address, - val.Address, - sdk.NewCoins( - sdk.NewCoin(fmt.Sprintf("%stoken", val.Moniker), sdk.NewInt(10)), - sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10)), - ), - []string{ - fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), - fmt.Sprintf("--%s=true", flags.FlagGenerateOnly), - }, - false, - &sdk.TxResponse{}, - 0, - }, { "valid transaction", val.Address, diff --git a/x/bank/client/rest/query_test.go b/x/bank/client/rest/query_test.go index 8f9c1241b130..3705606a7d68 100644 --- a/x/bank/client/rest/query_test.go +++ b/x/bank/client/rest/query_test.go @@ -75,9 +75,9 @@ func (s *IntegrationTestSuite) TestQueryBalancesRequestHandlerFn() { resp, err := rest.GetRequest(tc.url) s.Require().NoError(err) - bz, err := rest.ParseResponseWithHeight(val.ClientCtx.JSONMarshaler, resp) + bz, err := rest.ParseResponseWithHeight(val.ClientCtx.LegacyAmino, resp) s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.JSONMarshaler.UnmarshalJSON(bz, tc.respType)) + s.Require().NoError(val.ClientCtx.LegacyAmino.UnmarshalJSON(bz, tc.respType)) s.Require().Equal(tc.expected.String(), tc.respType.String()) }) } @@ -122,9 +122,9 @@ func (s *IntegrationTestSuite) TestTotalSupplyHandlerFn() { resp, err := rest.GetRequest(tc.url) s.Require().NoError(err) - bz, err := rest.ParseResponseWithHeight(val.ClientCtx.JSONMarshaler, resp) + bz, err := rest.ParseResponseWithHeight(val.ClientCtx.LegacyAmino, resp) s.Require().NoError(err) - s.Require().NoError(val.ClientCtx.JSONMarshaler.UnmarshalJSON(bz, tc.respType)) + s.Require().NoError(val.ClientCtx.LegacyAmino.UnmarshalJSON(bz, tc.respType)) s.Require().Equal(tc.expected.String(), tc.respType.String()) }) } diff --git a/x/bank/client/rest/tx_test.go b/x/bank/client/rest/tx_test.go index 9d8bf43e0c63..1fc73916a6ee 100644 --- a/x/bank/client/rest/tx_test.go +++ b/x/bank/client/rest/tx_test.go @@ -93,13 +93,13 @@ func getAccountInfo(val *network.Validator) (authtypes.AccountI, error) { return nil, err } - bz, err := rest.ParseResponseWithHeight(val.ClientCtx.JSONMarshaler, resp) + bz, err := rest.ParseResponseWithHeight(val.ClientCtx.LegacyAmino, resp) if err != nil { return nil, err } var acc authtypes.AccountI - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(bz, &acc) + err = val.ClientCtx.LegacyAmino.UnmarshalJSON(bz, &acc) if err != nil { return nil, err } diff --git a/x/bank/simulation/genesis.go b/x/bank/simulation/genesis.go index 4d3d9dfe63b5..61a28932815c 100644 --- a/x/bank/simulation/genesis.go +++ b/x/bank/simulation/genesis.go @@ -77,6 +77,6 @@ func RandomizedGenState(simState *module.SimulationState) { Supply: supply, } - fmt.Printf("Selected randomly generated bank parameters:\n%s\n", codec.MustMarshalJSONIndent(simState.Cdc, bankGenesis.Params)) - simState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(bankGenesis) + fmt.Printf("Selected randomly generated bank parameters:\n%s\n", codec.MustMarshalJSONIndent(simState.Cdc, &bankGenesis.Params)) + simState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(&bankGenesis) } diff --git a/x/bank/simulation/operations.go b/x/bank/simulation/operations.go index 13d23d5338cb..30f3859fc796 100644 --- a/x/bank/simulation/operations.go +++ b/x/bank/simulation/operations.go @@ -24,7 +24,7 @@ const ( // WeightedOperations returns all the operations from the module with their respective weights func WeightedOperations( - appParams simtypes.AppParams, cdc *codec.LegacyAmino, ak types.AccountKeeper, bk keeper.Keeper, + appParams simtypes.AppParams, cdc codec.JSONMarshaler, ak types.AccountKeeper, bk keeper.Keeper, ) simulation.WeightedOperations { var weightMsgSend, weightMsgMultiSend int diff --git a/x/bank/simulation/operations_test.go b/x/bank/simulation/operations_test.go index 948912ec95a2..8e4f8b298e31 100644 --- a/x/bank/simulation/operations_test.go +++ b/x/bank/simulation/operations_test.go @@ -31,7 +31,7 @@ func (suite *SimTestSuite) SetupTest() { // TestWeightedOperations tests the weights of the operations. func (suite *SimTestSuite) TestWeightedOperations() { - cdc := suite.app.LegacyAmino() + cdc := suite.app.AppCodec() appParams := make(simtypes.AppParams) weightesOps := simulation.WeightedOperations(appParams, cdc, suite.app.AccountKeeper, suite.app.BankKeeper) diff --git a/x/bank/types/codec.go b/x/bank/types/codec.go index c7f4e73d494c..5b869df74610 100644 --- a/x/bank/types/codec.go +++ b/x/bank/types/codec.go @@ -39,7 +39,7 @@ var ( // // The actual codec used for serialization should be provided to x/staking and // defined at the application level. - ModuleCdc = codec.NewHybridCodec(amino, types.NewInterfaceRegistry()) + ModuleCdc = codec.NewAminoCodec(amino) ) func init() { diff --git a/x/capability/simulation/genesis.go b/x/capability/simulation/genesis.go index 9a8dee5f5bdf..465a9aa47245 100644 --- a/x/capability/simulation/genesis.go +++ b/x/capability/simulation/genesis.go @@ -31,6 +31,6 @@ func RandomizedGenState(simState *module.SimulationState) { capabilityGenesis := types.GenesisState{Index: idx} - fmt.Printf("Selected randomly generated %s parameters:\n%s\n", types.ModuleName, codec.MustMarshalJSONIndent(simState.Cdc, capabilityGenesis)) - simState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(capabilityGenesis) + fmt.Printf("Selected randomly generated %s parameters:\n%s\n", types.ModuleName, codec.MustMarshalJSONIndent(simState.Cdc, &capabilityGenesis)) + simState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(&capabilityGenesis) } diff --git a/x/crisis/types/codec.go b/x/crisis/types/codec.go index c87b55e8eb3f..57732fa0dadd 100644 --- a/x/crisis/types/codec.go +++ b/x/crisis/types/codec.go @@ -28,7 +28,7 @@ var ( // // The actual codec used for serialization should be provided to x/crisis and // defined at the application level. - ModuleCdc = codec.NewHybridCodec(amino, codectypes.NewInterfaceRegistry()) + ModuleCdc = codec.NewAminoCodec(amino) ) func init() { diff --git a/x/distribution/client/cli/cli_test.go b/x/distribution/client/cli/cli_test.go index 9ac907dd42bc..8d76c3ee4335 100644 --- a/x/distribution/client/cli/cli_test.go +++ b/x/distribution/client/cli/cli_test.go @@ -299,7 +299,7 @@ func (s *IntegrationTestSuite) TestGetCmdQueryValidatorSlashes() { fmt.Sprintf("--%s=json", tmcli.OutputFlag), }, false, - "{\"slashes\":null,\"pagination\":{}}", + "{\"slashes\":[],\"pagination\":{\"next_key\":null,\"total\":\"0\"}}", }, { "text output", @@ -309,7 +309,7 @@ func (s *IntegrationTestSuite) TestGetCmdQueryValidatorSlashes() { sdk.ValAddress(val.Address).String(), "1", "3", }, false, - "pagination: {}\nslashes: null", + "pagination:\n next_key: null\n total: \"0\"\nslashes: []", }, } diff --git a/x/distribution/client/common/common.go b/x/distribution/client/common/common.go index f18f0d7756f9..c7034a8761b0 100644 --- a/x/distribution/client/common/common.go +++ b/x/distribution/client/common/common.go @@ -36,7 +36,7 @@ func QueryDelegationRewards(clientCtx client.Context, delAddr, valAddr string) ( func QueryDelegatorValidators(clientCtx client.Context, delegatorAddr sdk.AccAddress) ([]byte, error) { res, _, err := clientCtx.QueryWithData( fmt.Sprintf("custom/%s/%s", types.QuerierRoute, types.QueryDelegatorValidators), - clientCtx.JSONMarshaler.MustMarshalJSON(types.NewQueryDelegatorParams(delegatorAddr)), + clientCtx.LegacyAmino.MustMarshalJSON(types.NewQueryDelegatorParams(delegatorAddr)), ) return res, err } @@ -61,7 +61,7 @@ func WithdrawAllDelegatorRewards(clientCtx client.Context, delegatorAddr sdk.Acc } var validators []sdk.ValAddress - if err := clientCtx.JSONMarshaler.UnmarshalJSON(bz, &validators); err != nil { + if err := clientCtx.LegacyAmino.UnmarshalJSON(bz, &validators); err != nil { return nil, err } diff --git a/x/distribution/simulation/genesis.go b/x/distribution/simulation/genesis.go index 9bc9df198c8b..e4b79bdbb639 100644 --- a/x/distribution/simulation/genesis.go +++ b/x/distribution/simulation/genesis.go @@ -77,6 +77,6 @@ func RandomizedGenState(simState *module.SimulationState) { }, } - fmt.Printf("Selected randomly generated distribution parameters:\n%s\n", codec.MustMarshalJSONIndent(simState.Cdc, distrGenesis)) - simState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(distrGenesis) + fmt.Printf("Selected randomly generated distribution parameters:\n%s\n", codec.MustMarshalJSONIndent(simState.Cdc, &distrGenesis)) + simState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(&distrGenesis) } diff --git a/x/distribution/simulation/operations.go b/x/distribution/simulation/operations.go index 92b744a96a1c..812982e1ea1d 100644 --- a/x/distribution/simulation/operations.go +++ b/x/distribution/simulation/operations.go @@ -26,7 +26,7 @@ const ( // WeightedOperations returns all the operations from the module with their respective weights func WeightedOperations( - appParams simtypes.AppParams, cdc *codec.LegacyAmino, ak types.AccountKeeper, + appParams simtypes.AppParams, cdc codec.JSONMarshaler, ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper, sk stakingkeeper.Keeper, ) simulation.WeightedOperations { diff --git a/x/distribution/simulation/operations_test.go b/x/distribution/simulation/operations_test.go index 99c92f2f4b3f..397eebecf259 100644 --- a/x/distribution/simulation/operations_test.go +++ b/x/distribution/simulation/operations_test.go @@ -20,7 +20,7 @@ import ( // TestWeightedOperations tests the weights of the operations. func (suite *SimTestSuite) TestWeightedOperations() { - cdc := suite.app.LegacyAmino() + cdc := suite.app.AppCodec() appParams := make(simtypes.AppParams) weightesOps := simulation.WeightedOperations(appParams, cdc, suite.app.AccountKeeper, diff --git a/x/distribution/types/codec.go b/x/distribution/types/codec.go index 4a1d3ab3c9b9..08d7ad9d0d6a 100644 --- a/x/distribution/types/codec.go +++ b/x/distribution/types/codec.go @@ -41,7 +41,7 @@ var ( // // The actual codec used for serialization should be provided to x/distribution and // defined at the application level. - ModuleCdc = codec.NewHybridCodec(amino, types.NewInterfaceRegistry()) + ModuleCdc = codec.NewAminoCodec(amino) ) func init() { diff --git a/x/evidence/keeper/querier_test.go b/x/evidence/keeper/querier_test.go index 2d80be1b2681..58a1ff81bb3e 100644 --- a/x/evidence/keeper/querier_test.go +++ b/x/evidence/keeper/querier_test.go @@ -18,7 +18,7 @@ const ( func (suite *KeeperTestSuite) TestQuerier_QueryEvidence_Existing() { ctx := suite.ctx.WithIsCheckTx(false) numEvidence := 100 - cdc, _ := simapp.MakeCodecs() + _, cdc := simapp.MakeCodecs() evidence := suite.populateEvidence(ctx, numEvidence) query := abci.RequestQuery{ @@ -53,7 +53,7 @@ func (suite *KeeperTestSuite) TestQuerier_QueryEvidence_NonExisting() { func (suite *KeeperTestSuite) TestQuerier_QueryAllEvidence() { ctx := suite.ctx.WithIsCheckTx(false) - cdc, _ := simapp.MakeCodecs() + _, cdc := simapp.MakeCodecs() numEvidence := 100 suite.populateEvidence(ctx, numEvidence) @@ -73,7 +73,7 @@ func (suite *KeeperTestSuite) TestQuerier_QueryAllEvidence() { func (suite *KeeperTestSuite) TestQuerier_QueryAllEvidence_InvalidPagination() { ctx := suite.ctx.WithIsCheckTx(false) - cdc, _ := simapp.MakeCodecs() + _, cdc := simapp.MakeCodecs() numEvidence := 100 suite.populateEvidence(ctx, numEvidence) diff --git a/x/evidence/types/codec.go b/x/evidence/types/codec.go index 60d9a5b99850..ce8f81ed0963 100644 --- a/x/evidence/types/codec.go +++ b/x/evidence/types/codec.go @@ -34,7 +34,7 @@ var ( // // The actual codec used for serialization should be provided to x/evidence and // defined at the application level. - ModuleCdc = codec.NewHybridCodec(amino, types.NewInterfaceRegistry()) + ModuleCdc = codec.NewAminoCodec(amino) ) func init() { diff --git a/x/evidence/types/evidence.go b/x/evidence/types/evidence.go index 471b5b145603..0f5235ee6ac6 100644 --- a/x/evidence/types/evidence.go +++ b/x/evidence/types/evidence.go @@ -34,7 +34,11 @@ func (e *Equivocation) String() string { // Hash returns the hash of an Equivocation object. func (e *Equivocation) Hash() tmbytes.HexBytes { - return tmhash.Sum(ModuleCdc.MustMarshalBinaryBare(e)) + bz, err := e.Marshal() + if err != nil { + panic(err) + } + return tmhash.Sum(bz) } // ValidateBasic performs basic stateless validation checks on an Equivocation object. diff --git a/x/gov/client/utils/utils.go b/x/gov/client/utils/utils.go index 50982cd1f7bd..84c2884d1a7f 100644 --- a/x/gov/client/utils/utils.go +++ b/x/gov/client/utils/utils.go @@ -18,7 +18,7 @@ func NormalizeVoteOption(option string) string { return types.OptionNoWithVeto.String() default: - return "" + return option } } diff --git a/x/gov/keeper/querier_test.go b/x/gov/keeper/querier_test.go index 95e6e8dca289..0c04995fc4ee 100644 --- a/x/gov/keeper/querier_test.go +++ b/x/gov/keeper/querier_test.go @@ -146,8 +146,8 @@ func getQueriedVotes(t *testing.T, ctx sdk.Context, cdc codec.JSONMarshaler, que func TestQueries(t *testing.T) { app := simapp.Setup(false) ctx := app.BaseApp.NewContext(false, abci.Header{}) - appCodec := app.AppCodec() legacyQuerierCdc := codec.NewAminoCodec(app.LegacyAmino()) + appCodec := legacyQuerierCdc querier := keeper.NewQuerier(app.GovKeeper, legacyQuerierCdc) TestAddrs := simapp.AddTestAddrsIncremental(app, ctx, 2, sdk.NewInt(20000001)) @@ -294,7 +294,7 @@ func TestQueries(t *testing.T) { func TestPaginatedVotesQuery(t *testing.T) { app := simapp.Setup(false) ctx := app.BaseApp.NewContext(false, abci.Header{}) - appCodec := app.AppCodec() + legacyQuerierCdc := app.LegacyAmino() proposal := types.Proposal{ ProposalID: 100, @@ -317,11 +317,10 @@ func TestPaginatedVotesQuery(t *testing.T) { app.GovKeeper.SetVote(ctx, vote) } - legacyQuerierCdc := codec.NewAminoCodec(app.LegacyAmino()) querier := keeper.NewQuerier(app.GovKeeper, legacyQuerierCdc) // keeper preserves consistent order for each query, but this is not the insertion order - all := getQueriedVotes(t, ctx, appCodec, querier, proposal.ProposalID, 1, 0) + all := getQueriedVotes(t, ctx, legacyQuerierCdc, querier, proposal.ProposalID, 1, 0) require.Equal(t, len(all), len(votes)) type testCase struct { @@ -355,7 +354,7 @@ func TestPaginatedVotesQuery(t *testing.T) { } { tc := tc t.Run(tc.description, func(t *testing.T) { - votes := getQueriedVotes(t, ctx, appCodec, querier, proposal.ProposalID, tc.page, tc.limit) + votes := getQueriedVotes(t, ctx, legacyQuerierCdc, querier, proposal.ProposalID, tc.page, tc.limit) require.Equal(t, len(tc.votes), len(votes)) for i := range votes { require.Equal(t, tc.votes[i], votes[i]) diff --git a/x/gov/simulation/operations.go b/x/gov/simulation/operations.go index 9534e47d3c4d..13c8bbab4a3a 100644 --- a/x/gov/simulation/operations.go +++ b/x/gov/simulation/operations.go @@ -26,7 +26,7 @@ const ( // WeightedOperations returns all the operations from the module with their respective weights func WeightedOperations( - appParams simtypes.AppParams, cdc *codec.LegacyAmino, ak types.AccountKeeper, + appParams simtypes.AppParams, cdc codec.JSONMarshaler, ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper, wContents []simtypes.WeightedProposalContent, ) simulation.WeightedOperations { diff --git a/x/gov/simulation/operations_test.go b/x/gov/simulation/operations_test.go index e42e2a75afdd..393986995aa1 100644 --- a/x/gov/simulation/operations_test.go +++ b/x/gov/simulation/operations_test.go @@ -58,7 +58,7 @@ func TestWeightedOperations(t *testing.T) { app, ctx := createTestApp(false) ctx.WithChainID("test-chain") - cdc := app.LegacyAmino() + cdc := app.AppCodec() appParams := make(simtypes.AppParams) weightesOps := simulation.WeightedOperations(appParams, cdc, app.AccountKeeper, @@ -202,7 +202,7 @@ func TestSimulateMsgVote(t *testing.T) { require.True(t, operationMsg.OK) require.Equal(t, uint64(1), msg.ProposalID) require.Equal(t, "cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r", msg.Voter.String()) - require.Equal(t, "Yes", msg.Option.String()) + require.Equal(t, types.OptionYes, msg.Option) require.Equal(t, "gov", msg.Route()) require.Equal(t, types.TypeMsgVote, msg.Type()) diff --git a/x/gov/types/codec.go b/x/gov/types/codec.go index e38fedeeee83..6abb77d9feb0 100644 --- a/x/gov/types/codec.go +++ b/x/gov/types/codec.go @@ -49,7 +49,7 @@ var ( // // The actual codec used for serialization should be provided to x/gov and // defined at the application level. - ModuleCdc = codec.NewHybridCodec(amino, types.NewInterfaceRegistry()) + ModuleCdc = codec.NewAminoCodec(amino) ) func init() { diff --git a/x/gov/types/gov.pb.go b/x/gov/types/gov.pb.go index c12c65832f37..59e6fc3e66ca 100644 --- a/x/gov/types/gov.pb.go +++ b/x/gov/types/gov.pb.go @@ -65,6 +65,10 @@ var VoteOption_value = map[string]int32{ "VOTE_OPTION_NO_WITH_VETO": 4, } +func (x VoteOption) String() string { + return proto.EnumName(VoteOption_name, int32(x)) +} + func (VoteOption) EnumDescriptor() ([]byte, []int) { return fileDescriptor_6e82113c1a9a4b7c, []int{0} } @@ -452,95 +456,94 @@ func init() { func init() { proto.RegisterFile("cosmos/gov/v1beta1/gov.proto", fileDescriptor_6e82113c1a9a4b7c) } var fileDescriptor_6e82113c1a9a4b7c = []byte{ - // 1395 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x41, 0x6c, 0xdb, 0xd4, - 0x1b, 0x8f, 0xd3, 0xb4, 0x5d, 0x5f, 0xd2, 0xd6, 0x7b, 0xed, 0xbf, 0x4d, 0xfd, 0x1f, 0xb6, 0x67, - 0x26, 0x54, 0x4d, 0x5b, 0xba, 0x15, 0x09, 0x89, 0x4d, 0x42, 0x8b, 0x1b, 0x6f, 0x0b, 0x9a, 0x92, - 0xc8, 0xf1, 0x32, 0x6d, 0x1c, 0x2c, 0x37, 0x7e, 0x4b, 0x0d, 0xb1, 0x5f, 0x88, 0x5f, 0x4a, 0x2b, - 0x2e, 0x1c, 0x38, 0x4c, 0x01, 0xa1, 0x1d, 0x91, 0x50, 0x24, 0x24, 0x76, 0x40, 0x9c, 0x38, 0x70, - 0xe6, 0x5c, 0x21, 0x0e, 0x13, 0xe2, 0x30, 0x71, 0xc8, 0x58, 0x77, 0x41, 0x3d, 0x70, 0xe8, 0x91, - 0x13, 0xb2, 0xdf, 0x73, 0xeb, 0x24, 0x15, 0x5d, 0x04, 0xa7, 0xda, 0xdf, 0xfb, 0x7e, 0xbf, 0xef, - 0x7b, 0xbf, 0xf7, 0x7e, 0x9f, 0x1b, 0x70, 0xae, 0x8e, 0x7d, 0x17, 0xfb, 0x6b, 0x0d, 0xbc, 0xbd, - 0xb6, 0x7d, 0x75, 0x13, 0x11, 0xeb, 0x6a, 0xf0, 0x9c, 0x6b, 0xb5, 0x31, 0xc1, 0x10, 0xd2, 0xd5, - 0x5c, 0x10, 0x61, 0xab, 0x82, 0xc8, 0x10, 0x9b, 0x96, 0x8f, 0x8e, 0x20, 0x75, 0xec, 0x78, 0x14, - 0x23, 0x2c, 0x36, 0x70, 0x03, 0x87, 0x8f, 0x6b, 0xc1, 0x13, 0x8b, 0xae, 0x50, 0x94, 0x49, 0x17, - 0x18, 0x2d, 0x5d, 0x92, 0x1a, 0x18, 0x37, 0x9a, 0x68, 0x2d, 0x7c, 0xdb, 0xec, 0x3c, 0x5c, 0x23, - 0x8e, 0x8b, 0x7c, 0x62, 0xb9, 0xad, 0x08, 0x3b, 0x9c, 0x60, 0x79, 0xbb, 0x6c, 0x49, 0x1c, 0x5e, - 0xb2, 0x3b, 0x6d, 0x8b, 0x38, 0x98, 0x35, 0xa3, 0xdc, 0x03, 0x19, 0x03, 0xed, 0x90, 0x4a, 0x1b, - 0xb7, 0xb0, 0x6f, 0x35, 0xe1, 0x22, 0x98, 0x24, 0x0e, 0x69, 0xa2, 0x2c, 0x27, 0x73, 0xab, 0x33, - 0x3a, 0x7d, 0x81, 0x32, 0x48, 0xdb, 0xc8, 0xaf, 0xb7, 0x9d, 0x56, 0x00, 0xcd, 0x26, 0xc3, 0xb5, - 0x78, 0xe8, 0xda, 0xfc, 0x1f, 0x5f, 0x4b, 0xdc, 0x2f, 0x3f, 0x5c, 0x9e, 0xde, 0xc0, 0x1e, 0x41, - 0x1e, 0x51, 0x3e, 0x4f, 0x82, 0xe9, 0x02, 0x6a, 0x61, 0xdf, 0x21, 0x50, 0x03, 0xe9, 0x16, 0x2b, - 0x60, 0x3a, 0x76, 0x48, 0x9d, 0x52, 0x2f, 0xec, 0xf7, 0x25, 0x10, 0xd5, 0x2d, 0x16, 0x0e, 0xfb, - 0x12, 0xdc, 0xb5, 0xdc, 0xe6, 0x35, 0x25, 0x96, 0xaa, 0xe8, 0x20, 0x7a, 0x2b, 0xda, 0xb0, 0x0c, - 0x66, 0x6c, 0xca, 0x88, 0xdb, 0x61, 0x0f, 0x19, 0xf5, 0xea, 0x5f, 0x7d, 0xe9, 0x72, 0xc3, 0x21, - 0x5b, 0x9d, 0xcd, 0x5c, 0x1d, 0xbb, 0x4c, 0x37, 0xf6, 0xe7, 0xb2, 0x6f, 0x7f, 0xb0, 0x46, 0x76, - 0x5b, 0xc8, 0xcf, 0xe5, 0xeb, 0xf5, 0xbc, 0x6d, 0xb7, 0x91, 0xef, 0xeb, 0xc7, 0x1c, 0xb0, 0x0e, - 0xa6, 0x2c, 0x17, 0x77, 0x3c, 0x92, 0x9d, 0x90, 0x27, 0x56, 0xd3, 0xeb, 0x2b, 0x39, 0xa6, 0x7b, - 0x70, 0x74, 0xd1, 0x79, 0xe6, 0x36, 0xb0, 0xe3, 0xa9, 0x57, 0xf6, 0xfa, 0x52, 0xe2, 0xbb, 0xe7, - 0xd2, 0xea, 0x2b, 0x14, 0x0b, 0x00, 0xbe, 0xce, 0xa8, 0xaf, 0xa5, 0x02, 0x65, 0x94, 0x4f, 0xa7, - 0xc1, 0x99, 0x23, 0x91, 0xd5, 0x93, 0xf4, 0x38, 0x3f, 0xa8, 0xc7, 0x41, 0x5f, 0x4a, 0x3a, 0xf6, - 0x61, 0x5f, 0x9a, 0xa1, 0xaa, 0x0c, 0x8b, 0x71, 0x1d, 0x4c, 0xd7, 0xa9, 0xd4, 0xa1, 0x14, 0xe9, - 0xf5, 0xc5, 0x1c, 0x3d, 0xea, 0x5c, 0x74, 0xd4, 0xb9, 0xbc, 0xb7, 0xab, 0xa6, 0x7f, 0x3a, 0x3e, - 0x13, 0x3d, 0x42, 0xc0, 0x1a, 0x98, 0xf2, 0x89, 0x45, 0x3a, 0x7e, 0x76, 0x42, 0xe6, 0x56, 0xe7, - 0xd6, 0x95, 0xdc, 0xe8, 0x3d, 0xce, 0x45, 0xbd, 0x54, 0xc3, 0x4c, 0x55, 0x38, 0xec, 0x4b, 0x4b, - 0x43, 0x27, 0x44, 0x49, 0x14, 0x9d, 0xb1, 0xc1, 0x16, 0x80, 0x0f, 0x1d, 0xcf, 0x6a, 0x9a, 0xc4, - 0x6a, 0x36, 0x77, 0xcd, 0x36, 0xf2, 0x3b, 0x4d, 0x92, 0x4d, 0x85, 0xfd, 0x49, 0x27, 0xd5, 0x30, - 0x82, 0x3c, 0x3d, 0x4c, 0x53, 0xcf, 0x07, 0x12, 0x1f, 0xf6, 0xa5, 0x15, 0x5a, 0x64, 0x94, 0x48, - 0xd1, 0xf9, 0x30, 0x18, 0x03, 0xc1, 0xf7, 0x40, 0xda, 0xef, 0x6c, 0xba, 0x0e, 0x31, 0x03, 0x53, - 0x64, 0x27, 0xc3, 0x52, 0xc2, 0x88, 0x14, 0x46, 0xe4, 0x18, 0x55, 0x64, 0x55, 0xd8, 0x65, 0x8b, - 0x81, 0x95, 0xc7, 0xcf, 0x25, 0x4e, 0x07, 0x34, 0x12, 0x00, 0xa0, 0x03, 0x78, 0x76, 0x59, 0x4c, - 0xe4, 0xd9, 0xb4, 0xc2, 0xd4, 0xa9, 0x15, 0x5e, 0x67, 0x15, 0x96, 0x69, 0x85, 0x61, 0x06, 0x5a, - 0x66, 0x8e, 0x85, 0x35, 0xcf, 0x0e, 0x4b, 0x3d, 0xe2, 0xc0, 0x2c, 0xc1, 0xc4, 0x6a, 0x9a, 0x6c, - 0x21, 0x3b, 0x7d, 0xda, 0x95, 0xbc, 0xcd, 0xea, 0x2c, 0xd2, 0x3a, 0x03, 0x68, 0x65, 0xac, 0xab, - 0x9a, 0x09, 0xb1, 0x91, 0x5b, 0x9b, 0xe0, 0xec, 0x36, 0x26, 0x8e, 0xd7, 0x08, 0x8e, 0xb7, 0xcd, - 0x84, 0x3d, 0x73, 0xea, 0xb6, 0x2f, 0xb0, 0x76, 0xb2, 0xb4, 0x9d, 0x11, 0x0a, 0xba, 0xef, 0x79, - 0x1a, 0xaf, 0x06, 0xe1, 0x70, 0xe3, 0x0f, 0x01, 0x0b, 0x1d, 0x4b, 0x3c, 0x73, 0x6a, 0x2d, 0x85, - 0xd5, 0x5a, 0x1a, 0xa8, 0x35, 0xa8, 0xf0, 0x2c, 0x8d, 0x32, 0x81, 0x99, 0x0d, 0xf7, 0x92, 0x20, - 0x1d, 0xbf, 0x3e, 0x37, 0xc0, 0xc4, 0x2e, 0xf2, 0xe9, 0xb0, 0x53, 0x73, 0x01, 0xeb, 0x6f, 0x7d, - 0xe9, 0x8d, 0x57, 0x10, 0xae, 0xe8, 0x11, 0x3d, 0x80, 0xc2, 0xdb, 0x60, 0xda, 0xda, 0xf4, 0x89, - 0xe5, 0xb0, 0xb1, 0x38, 0x36, 0x4b, 0x04, 0x87, 0xef, 0x80, 0xa4, 0x87, 0x43, 0x43, 0x8e, 0x4f, - 0x92, 0xf4, 0x30, 0x6c, 0x80, 0x8c, 0x87, 0xcd, 0x8f, 0x1c, 0xb2, 0x65, 0x6e, 0x23, 0x82, 0x43, - 0xdb, 0xcd, 0xa8, 0xda, 0x78, 0x4c, 0x87, 0x7d, 0x69, 0x81, 0x8a, 0x1a, 0xe7, 0x52, 0x74, 0xe0, - 0xe1, 0x7b, 0x0e, 0xd9, 0xaa, 0x21, 0x82, 0x99, 0x94, 0xbf, 0x72, 0x20, 0x55, 0xc3, 0x04, 0xfd, - 0x57, 0xd3, 0xfd, 0x16, 0x98, 0xdc, 0xc6, 0x04, 0xfd, 0x8b, 0xc9, 0x4e, 0xf1, 0xf0, 0x2d, 0x30, - 0x85, 0xe9, 0x77, 0x8a, 0x0e, 0x37, 0xf1, 0xa4, 0xc1, 0x13, 0x74, 0x5e, 0x0e, 0xb3, 0x74, 0x96, - 0xcd, 0xb6, 0xf5, 0x63, 0x12, 0xcc, 0x32, 0x27, 0x54, 0xac, 0xb6, 0xe5, 0xfa, 0xf0, 0x2b, 0x0e, - 0xa4, 0x5d, 0xc7, 0x3b, 0x32, 0x26, 0x77, 0x9a, 0x31, 0xcd, 0x40, 0xf2, 0x83, 0xbe, 0xf4, 0xbf, - 0x18, 0xea, 0x12, 0x76, 0x1d, 0x82, 0xdc, 0x16, 0xd9, 0x3d, 0x96, 0x22, 0xb6, 0x3c, 0x9e, 0x5f, - 0x81, 0xeb, 0x78, 0x91, 0x5b, 0xbf, 0xe0, 0x00, 0x74, 0xad, 0x9d, 0x88, 0xc8, 0x6c, 0xa1, 0xb6, - 0x83, 0x6d, 0xf6, 0x4d, 0x58, 0x19, 0xf1, 0x50, 0x81, 0x7d, 0xfe, 0xe9, 0xbd, 0x38, 0xe8, 0x4b, - 0xe7, 0x46, 0xc1, 0x03, 0xbd, 0xb2, 0x69, 0x3c, 0x9a, 0xa5, 0x7c, 0x19, 0xb8, 0x8c, 0x77, 0xad, - 0x9d, 0x48, 0x2e, 0x1a, 0xfe, 0x8c, 0x03, 0x99, 0x5a, 0x68, 0x3d, 0xa6, 0xdf, 0xc7, 0x80, 0x59, - 0x31, 0xea, 0x8d, 0x3b, 0xad, 0xb7, 0xeb, 0xac, 0xb7, 0xe5, 0x01, 0xdc, 0x40, 0x5b, 0x8b, 0x03, - 0xce, 0x8f, 0x77, 0x94, 0xa1, 0x31, 0xd6, 0xcd, 0x93, 0xc8, 0xf0, 0xac, 0x99, 0x07, 0x60, 0xea, - 0xc3, 0x0e, 0x6e, 0x77, 0xdc, 0xb0, 0x8b, 0x8c, 0xaa, 0x8e, 0x61, 0x8f, 0x02, 0xaa, 0x1f, 0xf4, - 0x25, 0x9e, 0xe2, 0x8f, 0xbb, 0xd1, 0x19, 0x23, 0xac, 0x83, 0x19, 0xb2, 0xd5, 0x46, 0xfe, 0x16, - 0x6e, 0xda, 0xec, 0x16, 0x6b, 0x63, 0xd3, 0x2f, 0x1c, 0x51, 0xc4, 0x2a, 0x1c, 0xf3, 0x42, 0x03, - 0xa4, 0x42, 0x77, 0x4f, 0x84, 0xfc, 0x37, 0xc6, 0xe6, 0x9f, 0x0b, 0xd0, 0x31, 0xea, 0x90, 0xed, - 0xe2, 0x9f, 0x1c, 0x00, 0xc7, 0x96, 0x80, 0x97, 0xc0, 0x72, 0xad, 0x6c, 0x68, 0x66, 0xb9, 0x62, - 0x14, 0xcb, 0x25, 0xf3, 0x6e, 0xa9, 0x5a, 0xd1, 0x36, 0x8a, 0x37, 0x8b, 0x5a, 0x81, 0x4f, 0x08, - 0xf3, 0xdd, 0x9e, 0x9c, 0xa6, 0x89, 0x5a, 0x40, 0x01, 0x15, 0x30, 0x1f, 0xcf, 0xbe, 0xaf, 0x55, - 0x79, 0x4e, 0x98, 0xed, 0xf6, 0xe4, 0x19, 0x9a, 0x75, 0x1f, 0xf9, 0xf0, 0x22, 0x58, 0x88, 0xe7, - 0xe4, 0xd5, 0xaa, 0x91, 0x2f, 0x96, 0xf8, 0xa4, 0x70, 0xb6, 0xdb, 0x93, 0x67, 0x69, 0x5e, 0x9e, - 0x0d, 0x42, 0x19, 0xcc, 0xc5, 0x73, 0x4b, 0x65, 0x7e, 0x42, 0xc8, 0x74, 0x7b, 0xf2, 0x19, 0x9a, - 0x56, 0xc2, 0x70, 0x1d, 0x64, 0x07, 0x33, 0xcc, 0x7b, 0x45, 0xe3, 0xb6, 0x59, 0xd3, 0x8c, 0x32, - 0x9f, 0x12, 0x16, 0xbb, 0x3d, 0x99, 0x8f, 0x72, 0xa3, 0xa9, 0x25, 0x64, 0x1e, 0x7d, 0x23, 0x26, - 0xbe, 0x7d, 0x22, 0x26, 0xbe, 0x7f, 0x22, 0x26, 0x2e, 0xfe, 0x9c, 0x04, 0x73, 0x83, 0xff, 0xe0, - 0xc0, 0x1c, 0xf8, 0x7f, 0x45, 0x2f, 0x57, 0xca, 0xd5, 0xfc, 0x1d, 0xb3, 0x6a, 0xe4, 0x8d, 0xbb, - 0xd5, 0xa1, 0x8d, 0x87, 0x5b, 0xa2, 0xc9, 0x25, 0xa7, 0x09, 0xaf, 0x03, 0x71, 0x38, 0xbf, 0xa0, - 0x55, 0xca, 0xd5, 0xa2, 0x61, 0x56, 0x34, 0xbd, 0x58, 0x2e, 0xf0, 0x9c, 0xb0, 0xdc, 0xed, 0xc9, - 0x0b, 0x14, 0x32, 0xe0, 0x12, 0xf8, 0x36, 0x78, 0x6d, 0x18, 0x5c, 0x2b, 0x1b, 0xc5, 0xd2, 0xad, - 0x08, 0x9b, 0x14, 0x96, 0xba, 0x3d, 0x19, 0x52, 0x6c, 0x2d, 0x76, 0xa5, 0xe1, 0x25, 0xb0, 0x34, - 0x0c, 0xad, 0xe4, 0xab, 0x55, 0xad, 0xc0, 0x4f, 0x08, 0x7c, 0xb7, 0x27, 0x67, 0x28, 0xa6, 0x62, - 0xf9, 0x3e, 0xb2, 0xe1, 0x15, 0x90, 0x1d, 0xce, 0xd6, 0xb5, 0x77, 0xb5, 0x0d, 0x43, 0x2b, 0xf0, - 0x29, 0x01, 0x76, 0x7b, 0xf2, 0x1c, 0xcd, 0xd7, 0xd1, 0xfb, 0xa8, 0x4e, 0xd0, 0x89, 0xfc, 0x37, - 0xf3, 0xc5, 0x3b, 0x5a, 0x81, 0x9f, 0x8c, 0xf3, 0xdf, 0xb4, 0x9c, 0x26, 0xb2, 0x85, 0x54, 0x20, - 0xab, 0x5a, 0xda, 0x7b, 0x21, 0x26, 0x9e, 0xbd, 0x10, 0x13, 0x9f, 0xec, 0x8b, 0x89, 0xbd, 0x7d, - 0x91, 0x7b, 0xba, 0x2f, 0x72, 0xbf, 0xef, 0x8b, 0xdc, 0xe3, 0x97, 0x62, 0xe2, 0xe9, 0x4b, 0x31, - 0xf1, 0xec, 0xa5, 0x98, 0x78, 0xf0, 0xcf, 0x13, 0x6e, 0x27, 0xfc, 0x8d, 0x15, 0xde, 0xd5, 0xcd, - 0xa9, 0x70, 0x28, 0xbc, 0xf9, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x4f, 0x85, 0xd1, 0x2a, 0x7e, - 0x0d, 0x00, 0x00, + // 1383 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x31, 0x6c, 0xdb, 0x46, + 0x17, 0x16, 0x65, 0xd9, 0x8e, 0x4f, 0xb2, 0xcd, 0x9c, 0xfd, 0xdb, 0x32, 0xff, 0xfc, 0x24, 0xc3, + 0x3f, 0x28, 0x8c, 0x20, 0x91, 0x13, 0x17, 0x28, 0xd0, 0x04, 0x28, 0x22, 0x5a, 0x4c, 0xa2, 0x22, + 0x90, 0x04, 0x8a, 0x51, 0x90, 0x74, 0x20, 0x68, 0xf1, 0x22, 0xb3, 0x15, 0x79, 0xaa, 0x78, 0x72, + 0x6d, 0x74, 0xe9, 0xd0, 0x21, 0x50, 0x8b, 0x22, 0x63, 0x81, 0x42, 0x40, 0x81, 0x76, 0xea, 0xdc, + 0xb9, 0xb3, 0x51, 0x74, 0x08, 0x8a, 0x0e, 0x41, 0x07, 0xa5, 0x71, 0x80, 0xa2, 0xf0, 0xe8, 0xb1, + 0x53, 0x41, 0xde, 0xd1, 0xa2, 0x24, 0xa3, 0x8e, 0xd0, 0x4e, 0x26, 0xdf, 0xbd, 0xef, 0x7b, 0xef, + 0xbe, 0xbb, 0xef, 0xd1, 0x02, 0x17, 0xea, 0xd8, 0x77, 0xb1, 0xbf, 0xd1, 0xc0, 0xbb, 0x1b, 0xbb, + 0xd7, 0xb7, 0x11, 0xb1, 0xae, 0x07, 0xcf, 0xb9, 0x56, 0x1b, 0x13, 0x0c, 0x21, 0x5d, 0xcd, 0x05, + 0x11, 0xb6, 0x2a, 0x88, 0x0c, 0xb1, 0x6d, 0xf9, 0xe8, 0x04, 0x52, 0xc7, 0x8e, 0x47, 0x31, 0xc2, + 0x72, 0x03, 0x37, 0x70, 0xf8, 0xb8, 0x11, 0x3c, 0xb1, 0xe8, 0x1a, 0x45, 0x99, 0x74, 0x81, 0xd1, + 0xd2, 0x25, 0xa9, 0x81, 0x71, 0xa3, 0x89, 0x36, 0xc2, 0xb7, 0xed, 0xce, 0xe3, 0x0d, 0xe2, 0xb8, + 0xc8, 0x27, 0x96, 0xdb, 0x8a, 0xb0, 0xa3, 0x09, 0x96, 0xb7, 0xcf, 0x96, 0xc4, 0xd1, 0x25, 0xbb, + 0xd3, 0xb6, 0x88, 0x83, 0x59, 0x33, 0xca, 0x03, 0x90, 0x31, 0xd0, 0x1e, 0xa9, 0xb4, 0x71, 0x0b, + 0xfb, 0x56, 0x13, 0x2e, 0x83, 0x69, 0xe2, 0x90, 0x26, 0xca, 0x72, 0x32, 0xb7, 0x3e, 0xa7, 0xd3, + 0x17, 0x28, 0x83, 0xb4, 0x8d, 0xfc, 0x7a, 0xdb, 0x69, 0x05, 0xd0, 0x6c, 0x32, 0x5c, 0x8b, 0x87, + 0x6e, 0x2c, 0xfe, 0xf1, 0xb5, 0xc4, 0xfd, 0xfc, 0xfd, 0xd5, 0xd9, 0x2d, 0xec, 0x11, 0xe4, 0x11, + 0xe5, 0xf3, 0x24, 0x98, 0x2d, 0xa0, 0x16, 0xf6, 0x1d, 0x02, 0x35, 0x90, 0x6e, 0xb1, 0x02, 0xa6, + 0x63, 0x87, 0xd4, 0x29, 0xf5, 0xd2, 0x61, 0x5f, 0x02, 0x51, 0xdd, 0x62, 0xe1, 0xb8, 0x2f, 0xc1, + 0x7d, 0xcb, 0x6d, 0xde, 0x50, 0x62, 0xa9, 0x8a, 0x0e, 0xa2, 0xb7, 0xa2, 0x0d, 0xcb, 0x60, 0xce, + 0xa6, 0x8c, 0xb8, 0x1d, 0xf6, 0x90, 0x51, 0xaf, 0xff, 0xd9, 0x97, 0xae, 0x36, 0x1c, 0xb2, 0xd3, + 0xd9, 0xce, 0xd5, 0xb1, 0xcb, 0x74, 0x63, 0x7f, 0xae, 0xfa, 0xf6, 0x07, 0x1b, 0x64, 0xbf, 0x85, + 0xfc, 0x5c, 0xbe, 0x5e, 0xcf, 0xdb, 0x76, 0x1b, 0xf9, 0xbe, 0x3e, 0xe0, 0x80, 0x75, 0x30, 0x63, + 0xb9, 0xb8, 0xe3, 0x91, 0xec, 0x94, 0x3c, 0xb5, 0x9e, 0xde, 0x5c, 0xcb, 0x31, 0xdd, 0x83, 0xa3, + 0x8b, 0xce, 0x33, 0xb7, 0x85, 0x1d, 0x4f, 0xbd, 0x76, 0xd0, 0x97, 0x12, 0xdf, 0xbd, 0x90, 0xd6, + 0x5f, 0xa3, 0x58, 0x00, 0xf0, 0x75, 0x46, 0x7d, 0x23, 0x15, 0x28, 0xa3, 0x7c, 0x3a, 0x0b, 0xce, + 0x9d, 0x88, 0xac, 0x9e, 0xa6, 0xc7, 0xc5, 0x61, 0x3d, 0x8e, 0xfa, 0x52, 0xd2, 0xb1, 0x8f, 0xfb, + 0xd2, 0x1c, 0x55, 0x65, 0x54, 0x8c, 0x9b, 0x60, 0xb6, 0x4e, 0xa5, 0x0e, 0xa5, 0x48, 0x6f, 0x2e, + 0xe7, 0xe8, 0x51, 0xe7, 0xa2, 0xa3, 0xce, 0xe5, 0xbd, 0x7d, 0x35, 0xfd, 0xe3, 0xe0, 0x4c, 0xf4, + 0x08, 0x01, 0x6b, 0x60, 0xc6, 0x27, 0x16, 0xe9, 0xf8, 0xd9, 0x29, 0x99, 0x5b, 0x5f, 0xd8, 0x54, + 0x72, 0xe3, 0xf7, 0x38, 0x17, 0xf5, 0x52, 0x0d, 0x33, 0x55, 0xe1, 0xb8, 0x2f, 0xad, 0x8c, 0x9c, + 0x10, 0x25, 0x51, 0x74, 0xc6, 0x06, 0x5b, 0x00, 0x3e, 0x76, 0x3c, 0xab, 0x69, 0x12, 0xab, 0xd9, + 0xdc, 0x37, 0xdb, 0xc8, 0xef, 0x34, 0x49, 0x36, 0x15, 0xf6, 0x27, 0x9d, 0x56, 0xc3, 0x08, 0xf2, + 0xf4, 0x30, 0x4d, 0xbd, 0x18, 0x48, 0x7c, 0xdc, 0x97, 0xd6, 0x68, 0x91, 0x71, 0x22, 0x45, 0xe7, + 0xc3, 0x60, 0x0c, 0x04, 0xdf, 0x03, 0x69, 0xbf, 0xb3, 0xed, 0x3a, 0xc4, 0x0c, 0x4c, 0x91, 0x9d, + 0x0e, 0x4b, 0x09, 0x63, 0x52, 0x18, 0x91, 0x63, 0x54, 0x91, 0x55, 0x61, 0x97, 0x2d, 0x06, 0x56, + 0x9e, 0xbe, 0x90, 0x38, 0x1d, 0xd0, 0x48, 0x00, 0x80, 0x0e, 0xe0, 0xd9, 0x65, 0x31, 0x91, 0x67, + 0xd3, 0x0a, 0x33, 0x67, 0x56, 0xf8, 0x3f, 0xab, 0xb0, 0x4a, 0x2b, 0x8c, 0x32, 0xd0, 0x32, 0x0b, + 0x2c, 0xac, 0x79, 0x76, 0x58, 0xea, 0x09, 0x07, 0xe6, 0x09, 0x26, 0x56, 0xd3, 0x64, 0x0b, 0xd9, + 0xd9, 0xb3, 0xae, 0xe4, 0x5d, 0x56, 0x67, 0x99, 0xd6, 0x19, 0x42, 0x2b, 0x13, 0x5d, 0xd5, 0x4c, + 0x88, 0x8d, 0xdc, 0xda, 0x04, 0xe7, 0x77, 0x31, 0x71, 0xbc, 0x46, 0x70, 0xbc, 0x6d, 0x26, 0xec, + 0xb9, 0x33, 0xb7, 0x7d, 0x89, 0xb5, 0x93, 0xa5, 0xed, 0x8c, 0x51, 0xd0, 0x7d, 0x2f, 0xd2, 0x78, + 0x35, 0x08, 0x87, 0x1b, 0x7f, 0x0c, 0x58, 0x68, 0x20, 0xf1, 0xdc, 0x99, 0xb5, 0x14, 0x56, 0x6b, + 0x65, 0xa8, 0xd6, 0xb0, 0xc2, 0xf3, 0x34, 0xca, 0x04, 0x66, 0x36, 0x3c, 0x48, 0x82, 0x74, 0xfc, + 0xfa, 0xdc, 0x02, 0x53, 0xfb, 0xc8, 0xa7, 0xc3, 0x4e, 0xcd, 0x05, 0xac, 0xbf, 0xf6, 0xa5, 0x37, + 0x5e, 0x43, 0xb8, 0xa2, 0x47, 0xf4, 0x00, 0x0a, 0xef, 0x82, 0x59, 0x6b, 0xdb, 0x27, 0x96, 0xc3, + 0xc6, 0xe2, 0xc4, 0x2c, 0x11, 0x1c, 0xbe, 0x03, 0x92, 0x1e, 0x0e, 0x0d, 0x39, 0x39, 0x49, 0xd2, + 0xc3, 0xb0, 0x01, 0x32, 0x1e, 0x36, 0x3f, 0x72, 0xc8, 0x8e, 0xb9, 0x8b, 0x08, 0x0e, 0x6d, 0x37, + 0xa7, 0x6a, 0x93, 0x31, 0x1d, 0xf7, 0xa5, 0x25, 0x2a, 0x6a, 0x9c, 0x4b, 0xd1, 0x81, 0x87, 0x1f, + 0x38, 0x64, 0xa7, 0x86, 0x08, 0x66, 0x52, 0xfe, 0xc2, 0x81, 0x54, 0x0d, 0x13, 0xf4, 0x6f, 0x4d, + 0xf7, 0x3b, 0x60, 0x7a, 0x17, 0x13, 0xf4, 0x0f, 0x26, 0x3b, 0xc5, 0xc3, 0xb7, 0xc0, 0x0c, 0xa6, + 0xdf, 0x29, 0x3a, 0xdc, 0xc4, 0xd3, 0x06, 0x4f, 0xd0, 0x79, 0x39, 0xcc, 0xd2, 0x59, 0x36, 0xdb, + 0xd6, 0x0f, 0x49, 0x30, 0xcf, 0x9c, 0x50, 0xb1, 0xda, 0x96, 0xeb, 0xc3, 0xaf, 0x38, 0x90, 0x76, + 0x1d, 0xef, 0xc4, 0x98, 0xdc, 0x59, 0xc6, 0x34, 0x03, 0xc9, 0x8f, 0xfa, 0xd2, 0x7f, 0x62, 0xa8, + 0x2b, 0xd8, 0x75, 0x08, 0x72, 0x5b, 0x64, 0x7f, 0x20, 0x45, 0x6c, 0x79, 0x32, 0xbf, 0x02, 0xd7, + 0xf1, 0x22, 0xb7, 0x7e, 0xc1, 0x01, 0xe8, 0x5a, 0x7b, 0x11, 0x91, 0xd9, 0x42, 0x6d, 0x07, 0xdb, + 0xec, 0x9b, 0xb0, 0x36, 0xe6, 0xa1, 0x02, 0xfb, 0xfc, 0xd3, 0x7b, 0x71, 0xd4, 0x97, 0x2e, 0x8c, + 0x83, 0x87, 0x7a, 0x65, 0xd3, 0x78, 0x3c, 0x4b, 0xf9, 0x32, 0x70, 0x19, 0xef, 0x5a, 0x7b, 0x91, + 0x5c, 0x34, 0xfc, 0x19, 0x07, 0x32, 0xb5, 0xd0, 0x7a, 0x4c, 0xbf, 0x8f, 0x01, 0xb3, 0x62, 0xd4, + 0x1b, 0x77, 0x56, 0x6f, 0x37, 0x59, 0x6f, 0xab, 0x43, 0xb8, 0xa1, 0xb6, 0x96, 0x87, 0x9c, 0x1f, + 0xef, 0x28, 0x43, 0x63, 0xac, 0x9b, 0x6f, 0x23, 0xc3, 0xb3, 0x66, 0x1e, 0x81, 0x99, 0x0f, 0x3b, + 0xb8, 0xdd, 0x71, 0xc3, 0x2e, 0x32, 0xaa, 0x3a, 0x81, 0x3d, 0x0a, 0xa8, 0x7e, 0xd4, 0x97, 0x78, + 0x8a, 0x1f, 0x74, 0xa3, 0x33, 0x46, 0x58, 0x07, 0x73, 0x64, 0xa7, 0x8d, 0xfc, 0x1d, 0xdc, 0xb4, + 0xd9, 0x2d, 0xd6, 0x26, 0xa6, 0x5f, 0x3a, 0xa1, 0x88, 0x55, 0x18, 0xf0, 0x42, 0x03, 0xa4, 0x42, + 0x77, 0x4f, 0x85, 0xfc, 0xb7, 0x26, 0xe6, 0x5f, 0x08, 0xd0, 0x31, 0xea, 0x90, 0xed, 0xf2, 0xef, + 0x1c, 0x00, 0x03, 0x4b, 0xc0, 0x2b, 0x60, 0xb5, 0x56, 0x36, 0x34, 0xb3, 0x5c, 0x31, 0x8a, 0xe5, + 0x92, 0x79, 0xbf, 0x54, 0xad, 0x68, 0x5b, 0xc5, 0xdb, 0x45, 0xad, 0xc0, 0x27, 0x84, 0xc5, 0x6e, + 0x4f, 0x4e, 0xd3, 0x44, 0x2d, 0xa0, 0x80, 0x0a, 0x58, 0x8c, 0x67, 0x3f, 0xd4, 0xaa, 0x3c, 0x27, + 0xcc, 0x77, 0x7b, 0xf2, 0x1c, 0xcd, 0x7a, 0x88, 0x7c, 0x78, 0x19, 0x2c, 0xc5, 0x73, 0xf2, 0x6a, + 0xd5, 0xc8, 0x17, 0x4b, 0x7c, 0x52, 0x38, 0xdf, 0xed, 0xc9, 0xf3, 0x34, 0x2f, 0xcf, 0x06, 0xa1, + 0x0c, 0x16, 0xe2, 0xb9, 0xa5, 0x32, 0x3f, 0x25, 0x64, 0xba, 0x3d, 0xf9, 0x1c, 0x4d, 0x2b, 0x61, + 0xb8, 0x09, 0xb2, 0xc3, 0x19, 0xe6, 0x83, 0xa2, 0x71, 0xd7, 0xac, 0x69, 0x46, 0x99, 0x4f, 0x09, + 0xcb, 0xdd, 0x9e, 0xcc, 0x47, 0xb9, 0xd1, 0xd4, 0x12, 0x52, 0x4f, 0xbe, 0x11, 0x13, 0x97, 0x7f, + 0x4a, 0x82, 0x85, 0xe1, 0x7f, 0x6c, 0x60, 0x0e, 0xfc, 0xb7, 0xa2, 0x97, 0x2b, 0xe5, 0x6a, 0xfe, + 0x9e, 0x59, 0x35, 0xf2, 0xc6, 0xfd, 0xea, 0xc8, 0x86, 0xc3, 0xad, 0xd0, 0xe4, 0x92, 0xd3, 0x84, + 0x37, 0x81, 0x38, 0x9a, 0x5f, 0xd0, 0x2a, 0xe5, 0x6a, 0xd1, 0x30, 0x2b, 0x9a, 0x5e, 0x2c, 0x17, + 0x78, 0x4e, 0x58, 0xed, 0xf6, 0xe4, 0x25, 0x0a, 0x19, 0x72, 0x07, 0x7c, 0x1b, 0xfc, 0x6f, 0x14, + 0x5c, 0x2b, 0x1b, 0xc5, 0xd2, 0x9d, 0x08, 0x9b, 0x14, 0x56, 0xba, 0x3d, 0x19, 0x52, 0x6c, 0x2d, + 0x76, 0x95, 0xe1, 0x15, 0xb0, 0x32, 0x0a, 0xad, 0xe4, 0xab, 0x55, 0xad, 0xc0, 0x4f, 0x09, 0x7c, + 0xb7, 0x27, 0x67, 0x28, 0xa6, 0x62, 0xf9, 0x3e, 0xb2, 0xe1, 0x35, 0x90, 0x1d, 0xcd, 0xd6, 0xb5, + 0x77, 0xb5, 0x2d, 0x43, 0x2b, 0xf0, 0x29, 0x01, 0x76, 0x7b, 0xf2, 0x02, 0xcd, 0xd7, 0xd1, 0xfb, + 0xa8, 0x4e, 0xd0, 0xa9, 0xfc, 0xb7, 0xf3, 0xc5, 0x7b, 0x5a, 0x81, 0x9f, 0x8e, 0xf3, 0xdf, 0xb6, + 0x9c, 0x26, 0xb2, 0xa9, 0x9c, 0x6a, 0xe9, 0xe0, 0xa5, 0x98, 0x78, 0xfe, 0x52, 0x4c, 0x7c, 0x72, + 0x28, 0x26, 0x0e, 0x0e, 0x45, 0xee, 0xd9, 0xa1, 0xc8, 0xfd, 0x76, 0x28, 0x72, 0x4f, 0x5f, 0x89, + 0x89, 0x67, 0xaf, 0xc4, 0xc4, 0xf3, 0x57, 0x62, 0xe2, 0xd1, 0xdf, 0x4f, 0xb6, 0xbd, 0xf0, 0xb7, + 0x55, 0x78, 0x47, 0xb7, 0x67, 0xc2, 0x61, 0xf0, 0xe6, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x46, + 0x4b, 0xfc, 0xfb, 0x76, 0x0d, 0x00, 0x00, } func (this *TextProposal) Equal(that interface{}) bool { diff --git a/x/gov/types/vote.go b/x/gov/types/vote.go index 3dea5de0dd1c..7b1c5611b37e 100644 --- a/x/gov/types/vote.go +++ b/x/gov/types/vote.go @@ -1,7 +1,6 @@ package types import ( - "encoding/json" "fmt" yaml "gopkg.in/yaml.v2" @@ -56,22 +55,11 @@ func (v Vote) Empty() bool { // VoteOptionFromString returns a VoteOption from a string. It returns an error // if the string is invalid. func VoteOptionFromString(str string) (VoteOption, error) { - switch str { - case "Yes": - return OptionYes, nil - - case "Abstain": - return OptionAbstain, nil - - case "No": - return OptionNo, nil - - case "NoWithVeto": - return OptionNoWithVeto, nil - - default: - return VoteOption(0xff), fmt.Errorf("'%s' is not a valid vote option", str) + option, ok := VoteOption_value[str] + if !ok { + return OptionEmpty, fmt.Errorf("'%s' is not a valid vote option", str) } + return VoteOption(option), nil } // ValidVoteOption returns true if the vote option is valid and false otherwise. @@ -96,49 +84,6 @@ func (vo *VoteOption) Unmarshal(data []byte) error { return nil } -// Marshals to JSON using string. -func (vo VoteOption) MarshalJSON() ([]byte, error) { - return json.Marshal(vo.String()) -} - -// UnmarshalJSON decodes from JSON assuming Bech32 encoding. -func (vo *VoteOption) UnmarshalJSON(data []byte) error { - var s string - err := json.Unmarshal(data, &s) - if err != nil { - return err - } - - if s == "" { - *vo = OptionEmpty - return nil - } - - bz2, err := VoteOptionFromString(s) - if err != nil { - return err - } - - *vo = bz2 - return nil -} - -// String implements the Stringer interface. -func (vo VoteOption) String() string { - switch vo { - case OptionYes: - return "Yes" - case OptionAbstain: - return "Abstain" - case OptionNo: - return "No" - case OptionNoWithVeto: - return "NoWithVeto" - default: - return "" - } -} - // Format implements the fmt.Formatter interface. func (vo VoteOption) Format(s fmt.State, verb rune) { switch verb { diff --git a/x/gov/types/vote_test.go b/x/gov/types/vote_test.go deleted file mode 100644 index 3e50a33ae9ee..000000000000 --- a/x/gov/types/vote_test.go +++ /dev/null @@ -1,36 +0,0 @@ -package types - -import ( - "encoding/json" - "fmt" - "testing" - - "github.com/stretchr/testify/require" -) - -func TestVoteUnMarshalJSON(t *testing.T) { - tests := []struct { - option string - isError bool - }{ - {"Yes", false}, - {"No", false}, - {"Abstain", false}, - {"NoWithVeto", false}, - {"", false}, - {"misc", true}, - } - for _, tt := range tests { - var vo VoteOption - data, err := json.Marshal(tt.option) - require.NoError(t, err) - - err = vo.UnmarshalJSON(data) - if tt.isError { - require.Error(t, err) - require.EqualError(t, err, fmt.Sprintf("'%s' is not a valid vote option", tt.option)) - } else { - require.NoError(t, err) - } - } -} diff --git a/x/ibc-transfer/simulation/genesis.go b/x/ibc-transfer/simulation/genesis.go index ea008681fd59..b191e3c6da80 100644 --- a/x/ibc-transfer/simulation/genesis.go +++ b/x/ibc-transfer/simulation/genesis.go @@ -26,6 +26,6 @@ func RandomizedGenState(simState *module.SimulationState) { PortID: portID, } - fmt.Printf("Selected randomly generated %s parameters:\n%s\n", types.ModuleName, codec.MustMarshalJSONIndent(simState.Cdc, transferGenesis)) - simState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(transferGenesis) + fmt.Printf("Selected randomly generated %s parameters:\n%s\n", types.ModuleName, codec.MustMarshalJSONIndent(simState.Cdc, &transferGenesis)) + simState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(&transferGenesis) } diff --git a/x/ibc/07-tendermint/types/codec.go b/x/ibc/07-tendermint/types/codec.go index eb262c1d6a76..70d37a7aaeab 100644 --- a/x/ibc/07-tendermint/types/codec.go +++ b/x/ibc/07-tendermint/types/codec.go @@ -41,7 +41,7 @@ var ( // // The actual codec used for serialization should be provided to x/ibc/07-tendermint and // defined at the application level. - SubModuleCdc = codec.NewHybridCodec(amino, codectypes.NewInterfaceRegistry()) + SubModuleCdc = codec.NewProtoCodec(codectypes.NewInterfaceRegistry()) ) func init() { diff --git a/x/ibc/23-commitment/types/codec.go b/x/ibc/23-commitment/types/codec.go index d7e4bbdc8bad..8a976ae560d0 100644 --- a/x/ibc/23-commitment/types/codec.go +++ b/x/ibc/23-commitment/types/codec.go @@ -66,7 +66,7 @@ var ( // // The actual codec used for serialization should be provided to x/ibc/23-commitmentl and // defined at the application level. - SubModuleCdc = codec.NewHybridCodec(amino, codectypes.NewInterfaceRegistry()) + SubModuleCdc = codec.NewProtoCodec(codectypes.NewInterfaceRegistry()) ) func init() { diff --git a/x/ibc/simulation/genesis.go b/x/ibc/simulation/genesis.go index 2b5baff9bb4c..3aff7ff6275d 100644 --- a/x/ibc/simulation/genesis.go +++ b/x/ibc/simulation/genesis.go @@ -55,6 +55,6 @@ func RandomizedGenState(simState *module.SimulationState) { ChannelGenesis: channelGenesisState, } - fmt.Printf("Selected randomly generated %s parameters:\n%s\n", host.ModuleName, codec.MustMarshalJSONIndent(simState.Cdc, ibcGenesis)) - simState.GenState[host.ModuleName] = simState.Cdc.MustMarshalJSON(ibcGenesis) + fmt.Printf("Selected randomly generated %s parameters:\n%s\n", host.ModuleName, codec.MustMarshalJSONIndent(simState.Cdc, &ibcGenesis)) + simState.GenState[host.ModuleName] = simState.Cdc.MustMarshalJSON(&ibcGenesis) } diff --git a/x/mint/client/cli/cli_test.go b/x/mint/client/cli/cli_test.go index 12fda75b5143..8aa4815198a5 100644 --- a/x/mint/client/cli/cli_test.go +++ b/x/mint/client/cli/cli_test.go @@ -40,7 +40,7 @@ func (s *IntegrationTestSuite) SetupSuite() { mintData.Params.InflationMin = inflation mintData.Params.InflationMax = inflation - mintDataBz, err := cfg.Codec.MarshalJSON(mintData) + mintDataBz, err := cfg.Codec.MarshalJSON(&mintData) s.Require().NoError(err) genesisState[minttypes.ModuleName] = mintDataBz cfg.GenesisState = genesisState diff --git a/x/params/keeper/common_test.go b/x/params/keeper/common_test.go index c6c151809c37..0520849d0526 100644 --- a/x/params/keeper/common_test.go +++ b/x/params/keeper/common_test.go @@ -5,21 +5,23 @@ import ( "github.com/tendermint/tendermint/libs/log" dbm "github.com/tendermint/tm-db" + "github.com/cosmos/cosmos-sdk/simapp" + "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/store" sdk "github.com/cosmos/cosmos-sdk/types" paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" - "github.com/cosmos/cosmos-sdk/x/params/types/proposal" ) -func testComponents() (codec.Marshaler, sdk.Context, sdk.StoreKey, sdk.StoreKey, paramskeeper.Keeper) { - cdc := createTestCodec() +func testComponents() (*codec.LegacyAmino, sdk.Context, sdk.StoreKey, sdk.StoreKey, paramskeeper.Keeper) { + marshaler := simapp.MakeEncodingConfig().Marshaler + legacyAmino := createTestCodec() mkey := sdk.NewKVStoreKey("test") tkey := sdk.NewTransientStoreKey("transient_test") ctx := defaultContext(mkey, tkey) - keeper := paramskeeper.NewKeeper(cdc, mkey, tkey) + keeper := paramskeeper.NewKeeper(marshaler, legacyAmino, mkey, tkey) - return cdc, ctx, mkey, tkey, keeper + return legacyAmino, ctx, mkey, tkey, keeper } type invalid struct{} @@ -28,12 +30,12 @@ type s struct { I int } -func createTestCodec() codec.Marshaler { +func createTestCodec() *codec.LegacyAmino { cdc := codec.New() sdk.RegisterCodec(cdc) cdc.RegisterConcrete(s{}, "test/s", nil) cdc.RegisterConcrete(invalid{}, "test/invalid", nil) - return proposal.NewCodec(cdc) + return cdc } func defaultContext(key sdk.StoreKey, tkey sdk.StoreKey) sdk.Context { diff --git a/x/params/keeper/keeper.go b/x/params/keeper/keeper.go index 628548acb109..a2fdeaa5c0f5 100644 --- a/x/params/keeper/keeper.go +++ b/x/params/keeper/keeper.go @@ -13,19 +13,21 @@ import ( // Keeper of the global paramstore type Keeper struct { - cdc codec.Marshaler - key sdk.StoreKey - tkey sdk.StoreKey - spaces map[string]*types.Subspace + cdc codec.BinaryMarshaler + legacyAmino *codec.LegacyAmino + key sdk.StoreKey + tkey sdk.StoreKey + spaces map[string]*types.Subspace } // NewKeeper constructs a params keeper -func NewKeeper(cdc codec.Marshaler, key, tkey sdk.StoreKey) Keeper { +func NewKeeper(cdc codec.BinaryMarshaler, legacyAmino *codec.LegacyAmino, key, tkey sdk.StoreKey) Keeper { return Keeper{ - cdc: cdc, - key: key, - tkey: tkey, - spaces: make(map[string]*types.Subspace), + cdc: cdc, + legacyAmino: legacyAmino, + key: key, + tkey: tkey, + spaces: make(map[string]*types.Subspace), } } @@ -45,7 +47,7 @@ func (k Keeper) Subspace(s string) types.Subspace { panic("cannot use empty string for subspace") } - space := types.NewSubspace(k.cdc, k.key, k.tkey, s) + space := types.NewSubspace(k.cdc, k.legacyAmino, k.key, k.tkey, s) k.spaces[s] = &space return space diff --git a/x/params/proposal_handler_test.go b/x/params/proposal_handler_test.go index 1ee0cd34268a..712dc6daaad1 100644 --- a/x/params/proposal_handler_test.go +++ b/x/params/proposal_handler_test.go @@ -3,6 +3,8 @@ package params_test import ( "testing" + "github.com/cosmos/cosmos-sdk/simapp" + "github.com/stretchr/testify/require" abci "github.com/tendermint/tendermint/abci/types" @@ -75,7 +77,8 @@ func newTestInput(t *testing.T) testInput { err := cms.LoadLatestVersion() require.Nil(t, err) - keeper := keeper.NewKeeper(proposal.ModuleCdc, keyParams, tKeyParams) + encCfg := simapp.MakeEncodingConfig() + keeper := keeper.NewKeeper(encCfg.Marshaler, encCfg.Amino, keyParams, tKeyParams) ctx := sdk.NewContext(cms, abci.Header{}, false, log.NewNopLogger()) return testInput{ctx, cdc, keeper} diff --git a/x/params/types/proposal/codec.go b/x/params/types/proposal/codec.go index 94e3b6f93202..d274da798458 100644 --- a/x/params/types/proposal/codec.go +++ b/x/params/types/proposal/codec.go @@ -6,28 +6,6 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" ) -type Codec struct { - codec.Marshaler - - // Keep reference to the amino codec to allow backwards compatibility along - // with type, and interface registration. - amino *codec.LegacyAmino -} - -func NewCodec(amino *codec.LegacyAmino) *Codec { - return &Codec{Marshaler: codec.NewHybridCodec(amino, types.NewInterfaceRegistry()), amino: amino} -} - -// ModuleCdc is the module codec. -var ModuleCdc *Codec - -func init() { - ModuleCdc = NewCodec(codec.New()) - - RegisterCodec(ModuleCdc.amino) - ModuleCdc.amino.Seal() -} - // RegisterCodec registers all necessary param module types with a given codec. func RegisterCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&ParameterChangeProposal{}, "cosmos-sdk/ParameterChangeProposal", nil) diff --git a/x/params/types/subspace.go b/x/params/types/subspace.go index 4f086b368435..da0a755d417b 100644 --- a/x/params/types/subspace.go +++ b/x/params/types/subspace.go @@ -21,21 +21,23 @@ const ( // Transient store persists for a block, so we use it for // recording whether the parameter has been changed or not type Subspace struct { - cdc codec.Marshaler - key sdk.StoreKey // []byte -> []byte, stores parameter - tkey sdk.StoreKey // []byte -> bool, stores parameter change - name []byte - table KeyTable + cdc codec.BinaryMarshaler + legacyAmino *codec.LegacyAmino + key sdk.StoreKey // []byte -> []byte, stores parameter + tkey sdk.StoreKey // []byte -> bool, stores parameter change + name []byte + table KeyTable } // NewSubspace constructs a store with namestore -func NewSubspace(cdc codec.Marshaler, key sdk.StoreKey, tkey sdk.StoreKey, name string) Subspace { +func NewSubspace(cdc codec.BinaryMarshaler, legacyAmino *codec.LegacyAmino, key sdk.StoreKey, tkey sdk.StoreKey, name string) Subspace { return Subspace{ - cdc: cdc, - key: key, - tkey: tkey, - name: []byte(name), - table: NewKeyTable(), + cdc: cdc, + legacyAmino: legacyAmino, + key: key, + tkey: tkey, + name: []byte(name), + table: NewKeyTable(), } } @@ -103,7 +105,7 @@ func (s Subspace) Get(ctx sdk.Context, key []byte, ptr interface{}) { store := s.kvStore(ctx) bz := store.Get(key) - if err := s.cdc.UnmarshalJSON(bz, ptr); err != nil { + if err := s.legacyAmino.UnmarshalJSON(bz, ptr); err != nil { panic(err) } } @@ -120,7 +122,7 @@ func (s Subspace) GetIfExists(ctx sdk.Context, key []byte, ptr interface{}) { s.checkType(key, ptr) - if err := s.cdc.UnmarshalJSON(bz, ptr); err != nil { + if err := s.legacyAmino.UnmarshalJSON(bz, ptr); err != nil { panic(err) } } @@ -170,7 +172,7 @@ func (s Subspace) Set(ctx sdk.Context, key []byte, value interface{}) { s.checkType(key, value) store := s.kvStore(ctx) - bz, err := s.cdc.MarshalJSON(value) + bz, err := s.legacyAmino.MarshalJSON(value) if err != nil { panic(err) } @@ -197,7 +199,7 @@ func (s Subspace) Update(ctx sdk.Context, key, value []byte) error { dest := reflect.New(ty).Interface() s.GetIfExists(ctx, key, dest) - if err := s.cdc.UnmarshalJSON(value, dest); err != nil { + if err := s.legacyAmino.UnmarshalJSON(value, dest); err != nil { return err } diff --git a/x/params/types/subspace_test.go b/x/params/types/subspace_test.go index d7c30ba18f65..2f3b9627db19 100644 --- a/x/params/types/subspace_test.go +++ b/x/params/types/subspace_test.go @@ -11,22 +11,22 @@ import ( dbm "github.com/tendermint/tm-db" "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/simapp" "github.com/cosmos/cosmos-sdk/store" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/cosmos/cosmos-sdk/x/params/types/proposal" ) type SubspaceTestSuite struct { suite.Suite - cdc codec.Marshaler - ctx sdk.Context - ss types.Subspace + cdc codec.BinaryMarshaler + amino *codec.LegacyAmino + ctx sdk.Context + ss types.Subspace } func (suite *SubspaceTestSuite) SetupTest() { - cdc := proposal.ModuleCdc db := dbm.NewMemDB() ms := store.NewCommitMultiStore(db) @@ -34,9 +34,11 @@ func (suite *SubspaceTestSuite) SetupTest() { ms.MountStoreWithDB(tkey, sdk.StoreTypeTransient, db) suite.NoError(ms.LoadLatestVersion()) - ss := types.NewSubspace(cdc, key, tkey, "testsubspace") + encCfg := simapp.MakeEncodingConfig() + ss := types.NewSubspace(encCfg.Marshaler, encCfg.Amino, key, tkey, "testsubspace") - suite.cdc = cdc + suite.cdc = encCfg.Marshaler + suite.amino = encCfg.Amino suite.ctx = sdk.NewContext(ms, abci.Header{}, false, log.NewNopLogger()) suite.ss = ss.WithKeyTable(paramKeyTable()) } @@ -47,7 +49,7 @@ func (suite *SubspaceTestSuite) TestKeyTable() { suite.ss.WithKeyTable(paramKeyTable()) }) suite.Require().NotPanics(func() { - ss := types.NewSubspace(proposal.ModuleCdc, key, tkey, "testsubspace2") + ss := types.NewSubspace(suite.cdc, suite.amino, key, tkey, "testsubspace2") ss = ss.WithKeyTable(paramKeyTable()) }) } @@ -122,12 +124,12 @@ func (suite *SubspaceTestSuite) TestUpdate() { bad := time.Minute * 5 - bz, err := suite.cdc.MarshalJSON(bad) + bz, err := suite.amino.MarshalJSON(bad) suite.Require().NoError(err) suite.Require().Error(suite.ss.Update(suite.ctx, keyUnbondingTime, bz)) good := time.Hour * 360 - bz, err = suite.cdc.MarshalJSON(good) + bz, err = suite.amino.MarshalJSON(good) suite.Require().NoError(err) suite.Require().NoError(suite.ss.Update(suite.ctx, keyUnbondingTime, bz)) diff --git a/x/simulation/params.go b/x/simulation/params.go index 6363846a09cc..f206659b2085 100644 --- a/x/simulation/params.go +++ b/x/simulation/params.go @@ -5,6 +5,8 @@ import ( "fmt" "math/rand" + "github.com/cosmos/cosmos-sdk/simapp/params" + "github.com/tendermint/tendermint/types" abci "github.com/tendermint/tendermint/abci/types" @@ -155,7 +157,7 @@ func (w WeightedProposalContent) ContentSimulatorFn() simulation.ContentSimulato // RandomParams returns random simulation consensus parameters, it extracts the Evidence from the Staking genesis state. func RandomConsensusParams(r *rand.Rand, appState json.RawMessage) *abci.ConsensusParams { - cdc := codec.New() + cdc := params.MakeEncodingConfig().Marshaler var genesisState map[string]json.RawMessage diff --git a/x/slashing/client/cli/cli_test.go b/x/slashing/client/cli/cli_test.go index 3bcc06f5b4ec..f4569c11dfd3 100644 --- a/x/slashing/client/cli/cli_test.go +++ b/x/slashing/client/cli/cli_test.go @@ -67,7 +67,7 @@ func (s *IntegrationTestSuite) TestGetCmdQuerySigningInfo() { fmt.Sprintf("--%s=1", flags.FlagHeight), }, false, - fmt.Sprintf(`{"address":"%s","jailed_until":"1970-01-01T00:00:00Z"}`, sdk.ConsAddress(val.PubKey.Address())), + fmt.Sprintf("{\"address\":\"%s\",\"start_height\":\"0\",\"index_offset\":\"0\",\"jailed_until\":\"1970-01-01T00:00:00Z\",\"tombstoned\":false,\"missed_blocks_counter\":\"0\"}", sdk.ConsAddress(val.PubKey.Address())), }, { "valid address (text output)", @@ -78,7 +78,11 @@ func (s *IntegrationTestSuite) TestGetCmdQuerySigningInfo() { }, false, fmt.Sprintf(`address: %s -jailed_until: "1970-01-01T00:00:00Z"`, sdk.ConsAddress(val.PubKey.Address())), +index_offset: "0" +jailed_until: "1970-01-01T00:00:00Z" +missed_blocks_counter: "0" +start_height: "0" +tombstoned: false`, sdk.ConsAddress(val.PubKey.Address())), }, } @@ -119,12 +123,12 @@ func (s *IntegrationTestSuite) TestGetCmdQueryParams() { { "json output", []string{fmt.Sprintf("--%s=json", tmcli.OutputFlag)}, - `{"signed_blocks_window":"100","min_signed_per_window":"0.500000000000000000","downtime_jail_duration":"600000000000","slash_fraction_double_sign":"0.050000000000000000","slash_fraction_downtime":"0.010000000000000000"}`, + `{"signed_blocks_window":"100","min_signed_per_window":"0.500000000000000000","downtime_jail_duration":"600s","slash_fraction_double_sign":"0.050000000000000000","slash_fraction_downtime":"0.010000000000000000"}`, }, { "text output", []string{fmt.Sprintf("--%s=text", tmcli.OutputFlag)}, - `downtime_jail_duration: "600000000000" + `downtime_jail_duration: 600s min_signed_per_window: "0.500000000000000000" signed_blocks_window: "100" slash_fraction_double_sign: "0.050000000000000000" diff --git a/x/slashing/simulation/genesis.go b/x/slashing/simulation/genesis.go index 64d626d78af2..5d60c5a5d838 100644 --- a/x/slashing/simulation/genesis.go +++ b/x/slashing/simulation/genesis.go @@ -88,6 +88,6 @@ func RandomizedGenState(simState *module.SimulationState) { slashingGenesis := types.NewGenesisState(params, []types.SigningInfo{}, []types.ValidatorMissedBlocks{}) - fmt.Printf("Selected randomly generated slashing parameters:\n%s\n", codec.MustMarshalJSONIndent(simState.Cdc, slashingGenesis.Params)) + fmt.Printf("Selected randomly generated slashing parameters:\n%s\n", codec.MustMarshalJSONIndent(simState.Cdc, &slashingGenesis.Params)) simState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(slashingGenesis) } diff --git a/x/slashing/simulation/operations.go b/x/slashing/simulation/operations.go index e6f01e2abfe3..447cb86aad08 100644 --- a/x/slashing/simulation/operations.go +++ b/x/slashing/simulation/operations.go @@ -23,7 +23,7 @@ const ( // WeightedOperations returns all the operations from the module with their respective weights func WeightedOperations( - appParams simtypes.AppParams, cdc *codec.LegacyAmino, ak types.AccountKeeper, + appParams simtypes.AppParams, cdc codec.JSONMarshaler, ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper, sk stakingkeeper.Keeper, ) simulation.WeightedOperations { diff --git a/x/slashing/simulation/operations_test.go b/x/slashing/simulation/operations_test.go index 2487084d6ee9..b3f1dfba471d 100644 --- a/x/slashing/simulation/operations_test.go +++ b/x/slashing/simulation/operations_test.go @@ -24,7 +24,7 @@ func TestWeightedOperations(t *testing.T) { app, ctx := createTestApp(false) ctx.WithChainID("test-chain") - cdc := app.LegacyAmino() + cdc := app.AppCodec() appParams := make(simtypes.AppParams) s := rand.NewSource(1) diff --git a/x/slashing/types/codec.go b/x/slashing/types/codec.go index c274beda377d..340f4317463f 100644 --- a/x/slashing/types/codec.go +++ b/x/slashing/types/codec.go @@ -27,7 +27,7 @@ var ( // // The actual codec used for serialization should be provided to x/slashing and // defined at the application level. - ModuleCdc = codec.NewHybridCodec(amino, types.NewInterfaceRegistry()) + ModuleCdc = codec.NewAminoCodec(amino) ) func init() { diff --git a/x/staking/simulation/operations.go b/x/staking/simulation/operations.go index 116abe044334..f53762df37d7 100644 --- a/x/staking/simulation/operations.go +++ b/x/staking/simulation/operations.go @@ -26,7 +26,7 @@ const ( // WeightedOperations returns all the operations from the module with their respective weights func WeightedOperations( - appParams simtypes.AppParams, cdc *codec.LegacyAmino, ak types.AccountKeeper, + appParams simtypes.AppParams, cdc codec.JSONMarshaler, ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper, ) simulation.WeightedOperations { var ( diff --git a/x/staking/simulation/operations_test.go b/x/staking/simulation/operations_test.go index f1ae877c9477..2f242d84d03c 100644 --- a/x/staking/simulation/operations_test.go +++ b/x/staking/simulation/operations_test.go @@ -25,7 +25,7 @@ func TestWeightedOperations(t *testing.T) { ctx.WithChainID("test-chain") - cdc := app.LegacyAmino() + cdc := app.AppCodec() appParams := make(simtypes.AppParams) weightesOps := simulation.WeightedOperations(appParams, cdc, app.AccountKeeper, diff --git a/x/staking/types/codec.go b/x/staking/types/codec.go index 8e080e99e26f..7a69e259edb0 100644 --- a/x/staking/types/codec.go +++ b/x/staking/types/codec.go @@ -37,7 +37,7 @@ var ( // // The actual codec used for serialization should be provided to x/staking and // defined at the application level. - ModuleCdc = codec.NewHybridCodec(amino, types.NewInterfaceRegistry()) + ModuleCdc = codec.NewAminoCodec(amino) ) func init() { diff --git a/x/staking/types/genesis.go b/x/staking/types/genesis.go index a296844f986f..8b00c4d89a85 100644 --- a/x/staking/types/genesis.go +++ b/x/staking/types/genesis.go @@ -24,7 +24,7 @@ func DefaultGenesisState() *GenesisState { // GetGenesisStateFromAppState returns x/staking GenesisState given raw application // genesis state. -func GetGenesisStateFromAppState(cdc *codec.LegacyAmino, appState map[string]json.RawMessage) *GenesisState { +func GetGenesisStateFromAppState(cdc codec.JSONMarshaler, appState map[string]json.RawMessage) *GenesisState { var genesisState GenesisState if appState[ModuleName] != nil { diff --git a/x/upgrade/abci_test.go b/x/upgrade/abci_test.go index bbc4cbe23cdd..6a915b310a55 100644 --- a/x/upgrade/abci_test.go +++ b/x/upgrade/abci_test.go @@ -40,7 +40,7 @@ func setupTest(height int64, skip map[int64]bool) TestSuite { db := dbm.NewMemDB() app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, skip, simapp.DefaultNodeHome, 0, simapp.MakeEncodingConfig()) genesisState := simapp.NewDefaultGenesisState() - stateBytes, err := codec.MarshalJSONIndent(app.LegacyAmino(), genesisState) + stateBytes, err := json.MarshalIndent(genesisState, "", " ") if err != nil { panic(err) }