Cosmos v0.46 upgrade follow ups (#1522)

* ensure RewardIndexes.Mul method is called in test

* remove deprecated line breaks,
add new v0.46 keys cmd

* register kava msg types on authz ModuleCdc
This commit is contained in:
Ruaridh 2023-04-06 12:59:02 +01:00 committed by GitHub
parent bdf7a4d2a0
commit 5b3162c563
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 101 additions and 28 deletions

View File

@ -61,11 +61,10 @@ The pass backend requires GnuPG: https://gnupg.org/
keys.ImportKeyCommand(), keys.ImportKeyCommand(),
keys.ListKeysCmd(), keys.ListKeysCmd(),
keys.ShowKeysCmd(), keys.ShowKeysCmd(),
flags.LineBreak,
keys.DeleteKeyCommand(), keys.DeleteKeyCommand(),
keys.RenameKeyCommand(),
keys.ParseKeyStringCommand(), keys.ParseKeyStringCommand(),
keys.MigrateCommand(), keys.MigrateCommand(),
flags.LineBreak,
ethclient.UnsafeExportEthKeyCommand(), ethclient.UnsafeExportEthKeyCommand(),
ethclient.UnsafeImportKeyCommand(), ethclient.UnsafeImportKeyCommand(),
) )

View File

@ -3,10 +3,10 @@ package types
import ( import (
"github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/codec/types"
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice" "github.com/cosmos/cosmos-sdk/types/msgservice"
authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec"
) )
// RegisterLegacyAminoCodec registers all the necessary types and interfaces for the // RegisterLegacyAminoCodec registers all the necessary types and interfaces for the
@ -58,4 +58,8 @@ var (
func init() { func init() {
RegisterLegacyAminoCodec(amino) RegisterLegacyAminoCodec(amino)
cryptocodec.RegisterCrypto(amino) cryptocodec.RegisterCrypto(amino)
// Register all Amino interfaces and concrete types on the authz Amino codec so that this can later be
// used to properly serialize MsgGrant and MsgExec instances
RegisterLegacyAminoCodec(authzcodec.Amino)
} }

View File

@ -6,6 +6,7 @@ import (
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice" "github.com/cosmos/cosmos-sdk/types/msgservice"
authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec"
) )
// RegisterLegacyAminoCodec registers all the necessary types and interfaces for the // RegisterLegacyAminoCodec registers all the necessary types and interfaces for the
@ -41,4 +42,8 @@ var (
func init() { func init() {
RegisterLegacyAminoCodec(amino) RegisterLegacyAminoCodec(amino)
cryptocodec.RegisterCrypto(amino) cryptocodec.RegisterCrypto(amino)
// Register all Amino interfaces and concrete types on the authz Amino codec so that this can later be
// used to properly serialize MsgGrant and MsgExec instances
RegisterLegacyAminoCodec(authzcodec.Amino)
} }

View File

@ -3,10 +3,10 @@ package types
import ( import (
"github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/codec/types"
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice" "github.com/cosmos/cosmos-sdk/types/msgservice"
authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec"
) )
// RegisterLegacyAminoCodec registers all the necessary types and interfaces for the // RegisterLegacyAminoCodec registers all the necessary types and interfaces for the
@ -41,4 +41,8 @@ var (
func init() { func init() {
RegisterLegacyAminoCodec(amino) RegisterLegacyAminoCodec(amino)
cryptocodec.RegisterCrypto(amino) cryptocodec.RegisterCrypto(amino)
// Register all Amino interfaces and concrete types on the authz Amino codec so that this can later be
// used to properly serialize MsgGrant and MsgExec instances
RegisterLegacyAminoCodec(authzcodec.Amino)
} }

View File

@ -7,6 +7,7 @@ import (
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice" "github.com/cosmos/cosmos-sdk/types/msgservice"
authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec"
distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
proposaltypes "github.com/cosmos/cosmos-sdk/x/params/types/proposal" proposaltypes "github.com/cosmos/cosmos-sdk/x/params/types/proposal"
@ -31,6 +32,10 @@ func init() {
cryptocodec.RegisterCrypto(amino) cryptocodec.RegisterCrypto(amino)
// amino is not sealed so that other modules can register their own pubproposal and/or permission types. // amino is not sealed so that other modules can register their own pubproposal and/or permission types.
// Register all Amino interfaces and concrete types on the authz Amino codec so that this can later be
// used to properly serialize MsgGrant and MsgExec instances
RegisterLegacyAminoCodec(authzcodec.Amino)
// CommitteeChange/Delete proposals along with Permission types are // CommitteeChange/Delete proposals along with Permission types are
// registered on gov's ModuleCdc // registered on gov's ModuleCdc
RegisterLegacyAminoCodec(govv1beta1.ModuleCdc.LegacyAmino) RegisterLegacyAminoCodec(govv1beta1.ModuleCdc.LegacyAmino)
@ -42,6 +47,7 @@ func init() {
RegisterProposalTypeCodec(govv1beta1.TextProposal{}, "cosmos-sdk/TextProposal") RegisterProposalTypeCodec(govv1beta1.TextProposal{}, "cosmos-sdk/TextProposal")
RegisterProposalTypeCodec(upgradetypes.SoftwareUpgradeProposal{}, "cosmos-sdk/SoftwareUpgradeProposal") RegisterProposalTypeCodec(upgradetypes.SoftwareUpgradeProposal{}, "cosmos-sdk/SoftwareUpgradeProposal")
RegisterProposalTypeCodec(upgradetypes.CancelSoftwareUpgradeProposal{}, "cosmos-sdk/CancelSoftwareUpgradeProposal") RegisterProposalTypeCodec(upgradetypes.CancelSoftwareUpgradeProposal{}, "cosmos-sdk/CancelSoftwareUpgradeProposal")
} }
// RegisterLegacyAminoCodec registers all the necessary types and interfaces for the module. // RegisterLegacyAminoCodec registers all the necessary types and interfaces for the module.

View File

@ -3,12 +3,11 @@ package types
import ( import (
"github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/cosmos-sdk/types/msgservice"
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice"
authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec"
govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
) )
// RegisterLegacyAminoCodec registers all the necessary types and interfaces for the module. // RegisterLegacyAminoCodec registers all the necessary types and interfaces for the module.
@ -40,4 +39,8 @@ var (
func init() { func init() {
RegisterLegacyAminoCodec(amino) RegisterLegacyAminoCodec(amino)
cryptocodec.RegisterCrypto(amino) cryptocodec.RegisterCrypto(amino)
// Register all Amino interfaces and concrete types on the authz Amino codec so that this can later be
// used to properly serialize MsgGrant and MsgExec instances
RegisterLegacyAminoCodec(authzcodec.Amino)
} }

View File

@ -3,10 +3,10 @@ package types
import ( import (
"github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/cosmos-sdk/types/msgservice"
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice"
authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec"
govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
) )
@ -43,4 +43,8 @@ var (
func init() { func init() {
RegisterLegacyAminoCodec(amino) RegisterLegacyAminoCodec(amino)
cryptocodec.RegisterCrypto(amino) cryptocodec.RegisterCrypto(amino)
// Register all Amino interfaces and concrete types on the authz Amino codec so that this can later be
// used to properly serialize MsgGrant and MsgExec instances
RegisterLegacyAminoCodec(authzcodec.Amino)
} }

View File

@ -6,6 +6,7 @@ import (
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice" "github.com/cosmos/cosmos-sdk/types/msgservice"
authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec"
) )
// RegisterLegacyAminoCodec registers the necessary evmutil interfaces and concrete types // RegisterLegacyAminoCodec registers the necessary evmutil interfaces and concrete types
@ -33,4 +34,8 @@ func init() {
RegisterLegacyAminoCodec(amino) RegisterLegacyAminoCodec(amino)
cryptocodec.RegisterCrypto(amino) cryptocodec.RegisterCrypto(amino)
amino.Seal() amino.Seal()
// Register all Amino interfaces and concrete types on the authz Amino codec so that this can later be
// used to properly serialize MsgGrant and MsgExec instances
RegisterLegacyAminoCodec(authzcodec.Amino)
} }

View File

@ -3,10 +3,10 @@ package types
import ( import (
"github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/codec/types"
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice" "github.com/cosmos/cosmos-sdk/types/msgservice"
authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec"
) )
func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {
@ -37,4 +37,8 @@ var (
func init() { func init() {
RegisterLegacyAminoCodec(amino) RegisterLegacyAminoCodec(amino)
cryptocodec.RegisterCrypto(amino) cryptocodec.RegisterCrypto(amino)
// Register all Amino interfaces and concrete types on the authz Amino codec so that this can later be
// used to properly serialize MsgGrant and MsgExec instances
RegisterLegacyAminoCodec(authzcodec.Amino)
} }

View File

@ -5,6 +5,7 @@ import (
"testing" "testing"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/tendermint/tendermint/crypto" "github.com/tendermint/tendermint/crypto"
) )
@ -334,13 +335,21 @@ func TestRewardIndexes(t *testing.T) {
for _, tc := range testcases { for _, tc := range testcases {
t.Run(tc.name, func(t *testing.T) { t.Run(tc.name, func(t *testing.T) {
// require.Equal() fails with zero values abs: <nil> and abs: {} actual := tc.rewardIndexes.Mul(tc.multiplier)
for i := range tc.rewardIndexes { if len(tc.expected) == 0 {
require.True(t, require.Equal(t, actual, tc.expected)
tc.expected[i].RewardFactor. } else {
Equal(tc.rewardIndexes[i].RewardFactor.Mul(tc.multiplier)), require.Len(t, actual, len(tc.expected))
for i := range tc.expected {
assert.Equal(t,
actual[i].CollateralType,
tc.expected[i].CollateralType,
) )
assert.True(t,
actual[i].RewardFactor.Equal(tc.expected[i].RewardFactor),
)
}
} }
}) })
} }

View File

@ -3,10 +3,10 @@ package types
import ( import (
"github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/codec/types"
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice" "github.com/cosmos/cosmos-sdk/types/msgservice"
authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec"
) )
// RegisterLegacyAminoCodec registers all the necessary types and interfaces for the // RegisterLegacyAminoCodec registers all the necessary types and interfaces for the
@ -42,4 +42,8 @@ var (
func init() { func init() {
RegisterLegacyAminoCodec(amino) RegisterLegacyAminoCodec(amino)
cryptocodec.RegisterCrypto(amino) cryptocodec.RegisterCrypto(amino)
// Register all Amino interfaces and concrete types on the authz Amino codec so that this can later be
// used to properly serialize MsgGrant and MsgExec instances
RegisterLegacyAminoCodec(authzcodec.Amino)
} }

View File

@ -3,10 +3,10 @@ package types
import ( import (
"github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/codec/types"
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice" "github.com/cosmos/cosmos-sdk/types/msgservice"
authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec"
) )
var ( var (
@ -39,4 +39,8 @@ func RegisterInterfaces(registry types.InterfaceRegistry) {
func init() { func init() {
RegisterLegacyAminoCodec(amino) RegisterLegacyAminoCodec(amino)
cryptocodec.RegisterCrypto(amino) cryptocodec.RegisterCrypto(amino)
// Register all Amino interfaces and concrete types on the authz Amino codec so that this can later be
// used to properly serialize MsgGrant and MsgExec instances
RegisterLegacyAminoCodec(authzcodec.Amino)
} }

View File

@ -4,6 +4,7 @@ import (
"github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec"
cdctypes "github.com/cosmos/cosmos-sdk/codec/types" cdctypes "github.com/cosmos/cosmos-sdk/codec/types"
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec"
govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
) )
@ -29,4 +30,8 @@ func init() {
RegisterLegacyAminoCodec(amino) RegisterLegacyAminoCodec(amino)
cryptocodec.RegisterCrypto(amino) cryptocodec.RegisterCrypto(amino)
amino.Seal() amino.Seal()
// Register all Amino interfaces and concrete types on the authz Amino codec so that this can later be
// used to properly serialize MsgGrant and MsgExec instances
RegisterLegacyAminoCodec(authzcodec.Amino)
} }

View File

@ -3,11 +3,10 @@ package types
import ( import (
"github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/cosmos-sdk/types/msgservice"
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice"
authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec"
) )
// RegisterLegacyAminoCodec registers all the necessary types and interfaces for the module. // RegisterLegacyAminoCodec registers all the necessary types and interfaces for the module.
@ -35,4 +34,8 @@ var (
func init() { func init() {
RegisterLegacyAminoCodec(amino) RegisterLegacyAminoCodec(amino)
cryptocodec.RegisterCrypto(amino) cryptocodec.RegisterCrypto(amino)
// Register all Amino interfaces and concrete types on the authz Amino codec so that this can later be
// used to properly serialize MsgGrant and MsgExec instances
RegisterLegacyAminoCodec(authzcodec.Amino)
} }

View File

@ -3,11 +3,10 @@ package types
import ( import (
"github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/codec/types"
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice" "github.com/cosmos/cosmos-sdk/types/msgservice"
authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec"
) )
// RegisterLegacyAminoCodec registers all the necessary types and interfaces for the // RegisterLegacyAminoCodec registers all the necessary types and interfaces for the
@ -32,4 +31,8 @@ var (
func init() { func init() {
RegisterLegacyAminoCodec(amino) RegisterLegacyAminoCodec(amino)
cryptocodec.RegisterCrypto(amino) cryptocodec.RegisterCrypto(amino)
// Register all Amino interfaces and concrete types on the authz Amino codec so that this can later be
// used to properly serialize MsgGrant and MsgExec instances
RegisterLegacyAminoCodec(authzcodec.Amino)
} }

View File

@ -3,10 +3,10 @@ package types
import ( import (
"github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/codec/types"
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice" "github.com/cosmos/cosmos-sdk/types/msgservice"
authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec"
) )
// RegisterLegacyAminoCodec registers all the necessary types and interfaces for the module. // RegisterLegacyAminoCodec registers all the necessary types and interfaces for the module.
@ -39,4 +39,8 @@ var (
func init() { func init() {
RegisterLegacyAminoCodec(amino) RegisterLegacyAminoCodec(amino)
cryptocodec.RegisterCrypto(amino) cryptocodec.RegisterCrypto(amino)
// Register all Amino interfaces and concrete types on the authz Amino codec so that this can later be
// used to properly serialize MsgGrant and MsgExec instances
RegisterLegacyAminoCodec(authzcodec.Amino)
} }

View File

@ -3,11 +3,10 @@ package types
import ( import (
"github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/codec/types"
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice" "github.com/cosmos/cosmos-sdk/types/msgservice"
authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec"
) )
// RegisterLegacyAminoCodec registers all the necessary types and interfaces for the // RegisterLegacyAminoCodec registers all the necessary types and interfaces for the
@ -34,4 +33,8 @@ var (
func init() { func init() {
RegisterLegacyAminoCodec(amino) RegisterLegacyAminoCodec(amino)
cryptocodec.RegisterCrypto(amino) cryptocodec.RegisterCrypto(amino)
// Register all Amino interfaces and concrete types on the authz Amino codec so that this can later be
// used to properly serialize MsgGrant and MsgExec instances
RegisterLegacyAminoCodec(authzcodec.Amino)
} }

View File

@ -3,10 +3,10 @@ package types
import ( import (
"github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/codec/types"
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/msgservice" "github.com/cosmos/cosmos-sdk/types/msgservice"
authzcodec "github.com/cosmos/cosmos-sdk/x/authz/codec"
) )
// RegisterLegacyAminoCodec registers all the necessary types and interfaces for the // RegisterLegacyAminoCodec registers all the necessary types and interfaces for the
@ -40,4 +40,8 @@ var (
func init() { func init() {
RegisterLegacyAminoCodec(amino) RegisterLegacyAminoCodec(amino)
cryptocodec.RegisterCrypto(amino) cryptocodec.RegisterCrypto(amino)
// Register all Amino interfaces and concrete types on the authz Amino codec so that this can later be
// used to properly serialize MsgGrant and MsgExec instances
RegisterLegacyAminoCodec(authzcodec.Amino)
} }