diff --git a/app/app.go b/app/app.go index a8bd9d50..0130f872 100644 --- a/app/app.go +++ b/app/app.go @@ -145,9 +145,9 @@ import ( evmmodulekeeper "github.com/palomachain/paloma/x/evm/keeper" evmmoduletypes "github.com/palomachain/paloma/x/evm/types" - // palomamodule "github.com/palomachain/paloma/x/paloma" - // palomamodulekeeper "github.com/palomachain/paloma/x/paloma/keeper" - // palomamoduletypes "github.com/palomachain/paloma/x/paloma/types" + palomamodule "github.com/palomachain/paloma/x/paloma" + palomamodulekeeper "github.com/palomachain/paloma/x/paloma/keeper" + palomamoduletypes "github.com/palomachain/paloma/x/paloma/types" schedulermodule "github.com/palomachain/paloma/x/scheduler" schedulermodulekeeper "github.com/palomachain/paloma/x/scheduler/keeper" schedulermoduletypes "github.com/palomachain/paloma/x/scheduler/types" @@ -175,7 +175,7 @@ func getGovProposalHandlers() []govclient.ProposalHandler { return []govclient.ProposalHandler{ paramsclient.ProposalHandler, gravityclient.ProposalHandler, - // treasuryclient.ProposalHandler, + treasuryclient.ProposalHandler, evmclient.ProposalHandler, treasuryclient.ProposalHandler, } @@ -206,12 +206,12 @@ var ( vesting.AppModuleBasic{}, schedulermodule.AppModuleBasic{}, consensusmodule.AppModuleBasic{}, - // valsetmodule.AppModuleBasic{}, + valsetmodule.AppModuleBasic{}, wasm.AppModuleBasic{}, evm.AppModuleBasic{}, gravitymodule.AppModuleBasic{}, - // palomamodule.AppModuleBasic{}, - // treasurymodule.AppModuleBasic{}, + palomamodule.AppModuleBasic{}, + treasurymodule.AppModuleBasic{}, consensus.AppModuleBasic{}, transfer.AppModuleBasic{}, ibc.AppModuleBasic{}, @@ -294,11 +294,11 @@ type App struct { SchedulerKeeper schedulermodulekeeper.Keeper ConsensusKeeper consensusmodulekeeper.Keeper ValsetKeeper valsetmodulekeeper.Keeper - // PalomaKeeper palomamodulekeeper.Keeper - TreasuryKeeper treasurymodulekeeper.Keeper - EvmKeeper evmmodulekeeper.Keeper - GravityKeeper gravitymodulekeeper.Keeper - wasmKeeper wasmkeeper.Keeper + PalomaKeeper palomamodulekeeper.Keeper + TreasuryKeeper treasurymodulekeeper.Keeper + EvmKeeper evmmodulekeeper.Keeper + GravityKeeper gravitymodulekeeper.Keeper + wasmKeeper wasmkeeper.Keeper // ModuleManager is the module manager ModuleManager *module.Manager @@ -370,10 +370,10 @@ func New( capabilitytypes.StoreKey, schedulermoduletypes.StoreKey, consensusmoduletypes.StoreKey, - // valsetmoduletypes.StoreKey, + valsetmoduletypes.StoreKey, treasurymoduletypes.StoreKey, valsetmoduletypes.StoreKey, - // treasurymoduletypes.StoreKey, + treasurymoduletypes.StoreKey, evmmoduletypes.StoreKey, gravitymoduletypes.StoreKey, consensusparamtypes.StoreKey, @@ -387,7 +387,7 @@ func New( evmmoduletypes.MemStoreKey, schedulermoduletypes.MemStoreKey, treasurymoduletypes.MemStoreKey, - // palomamoduletypes.MemStoreKey, + palomamoduletypes.MemStoreKey, ) app := &App{ @@ -616,19 +616,18 @@ func New( gravitymodulekeeper.NewGravityStoreGetter(keys[gravitymoduletypes.StoreKey]), ) - // app.PalomaKeeper = *palomamodulekeeper.NewKeeper( - // appCodec, - // keys[palomamoduletypes.StoreKey], - // memKeys[palomamoduletypes.MemStoreKey], - // app.GetSubspace(palomamoduletypes.ModuleName), - // semverVersion, - // app.ValsetKeeper, - // app.PalomaKeeper.Upgrade, - // ) - - // app.PalomaKeeper.ExternalChains = []palomamoduletypes.ExternalChainSupporterKeeper{ - // app.EvmKeeper, - // } + app.PalomaKeeper = *palomamodulekeeper.NewKeeper( + appCodec, + runtime.NewKVStoreService(keys[palomamoduletypes.StoreKey]), + app.GetSubspace(palomamoduletypes.ModuleName), + semverVersion, + app.ValsetKeeper, + app.PalomaKeeper.Upgrade, + ) + + app.PalomaKeeper.ExternalChains = []palomamoduletypes.ExternalChainSupporterKeeper{ + app.EvmKeeper, + } // Create evidence Keeper for to register the IBC light client misbehaviour evidence route evidenceKeeper := evidencekeeper.NewKeeper( @@ -783,7 +782,7 @@ func New( consensusModule := consensusmodule.NewAppModule(appCodec, app.ConsensusKeeper, app.AccountKeeper, app.BankKeeper) valsetModule := valsetmodule.NewAppModule(appCodec, app.ValsetKeeper, app.AccountKeeper, app.BankKeeper) schedulerModule := schedulermodule.NewAppModule(appCodec, app.SchedulerKeeper, app.AccountKeeper, app.BankKeeper) - // palomaModule := palomamodule.NewAppModule(appCodec, app.PalomaKeeper, app.AccountKeeper, app.BankKeeper) + palomaModule := palomamodule.NewAppModule(appCodec, app.PalomaKeeper, app.AccountKeeper, app.BankKeeper) gravityModule := gravitymodule.NewAppModule(appCodec, app.GravityKeeper, app.BankKeeper) treasuryModule := treasurymodule.NewAppModule(appCodec, app.TreasuryKeeper, app.AccountKeeper, app.BankKeeper) app.ModuleManager = module.NewManager( @@ -812,7 +811,7 @@ func New( evmModule, valsetModule, gravityModule, - // palomaModule, + palomaModule, treasuryModule, wasm.NewAppModule(appCodec, &app.wasmKeeper, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.MsgServiceRouter(), app.GetSubspace(wasm.ModuleName)), ibc.NewAppModule(app.IBCKeeper), @@ -858,7 +857,7 @@ func New( vestingtypes.ModuleName, genutiltypes.ModuleName, valsetmoduletypes.ModuleName, - // palomamoduletypes.ModuleName, + palomamoduletypes.ModuleName, evmmoduletypes.ModuleName, wasmtypes.ModuleName, gravitymoduletypes.ModuleName, @@ -890,7 +889,7 @@ func New( vestingtypes.ModuleName, genutiltypes.ModuleName, valsetmoduletypes.ModuleName, - // palomamoduletypes.ModuleName, + palomamoduletypes.ModuleName, evmmoduletypes.ModuleName, wasmtypes.ModuleName, gravitymoduletypes.ModuleName, @@ -927,7 +926,7 @@ func New( schedulermoduletypes.ModuleName, consensusmoduletypes.ModuleName, valsetmoduletypes.ModuleName, - // palomamoduletypes.ModuleName, + palomamoduletypes.ModuleName, ibctransfertypes.ModuleName, ibcexported.ModuleName, icatypes.ModuleName, @@ -973,7 +972,7 @@ func New( app.SetEndBlocker(app.EndBlocker) /*baseAnteHandler*/ - _, err = ante.NewAnteHandler( + baseAnteHandler, err := ante.NewAnteHandler( ante.HandlerOptions{ AccountKeeper: app.AccountKeeper, BankKeeper: app.BankKeeper, @@ -986,12 +985,12 @@ func New( panic(err) } anteDecorators := []sdk.AnteDecorator{ - // palomamodule.NewAnteHandlerDecorator(baseAnteHandler), + palomamodule.NewAnteHandlerDecorator(baseAnteHandler), } - anteDecorators = append(anteDecorators) - // palomamodule.NewLogMsgDecorator(app.appCodec), - // palomamodule.NewVerifyAuthorisedSignatureDecorator(app.FeeGrantKeeper), - + anteDecorators = append(anteDecorators, + palomamodule.NewLogMsgDecorator(app.appCodec), + palomamodule.NewVerifyAuthorisedSignatureDecorator(app.FeeGrantKeeper), + ) anteHandler := sdk.ChainAnteDecorators( anteDecorators..., ) diff --git a/testutil/keeper/paloma.go b/testutil/keeper/paloma.go index f7ff3cc5..bf8586cc 100644 --- a/testutil/keeper/paloma.go +++ b/testutil/keeper/paloma.go @@ -1,6 +1,7 @@ package keeper import ( + "github.com/cosmos/cosmos-sdk/runtime" "testing" "cosmossdk.io/log" @@ -40,8 +41,7 @@ func PalomaKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { ) k := keeper.NewKeeper( cdc, - storeKey, - memStoreKey, + runtime.NewKVStoreService(storeKey), paramsSubspace, "v0.0.1", // do not use this PalomaKeeper function! valsetkeeper.Keeper{}, diff --git a/util/keeper/address.go b/util/keeper/address.go index 7e2fa21b..9b9ed050 100644 --- a/util/keeper/address.go +++ b/util/keeper/address.go @@ -1,8 +1,22 @@ package keeper -import "cosmossdk.io/core/address" +import ( + "errors" + "cosmossdk.io/core/address" +) + +type err string + +const ErrFailedToParseValAddress err = "failed to parse validator address from bech32" + +func (e err) Error() string { + return string(e) +} func ValAddressFromBech32(addressCodec address.Codec, valAddr string) ([]byte, error) { bz, err := addressCodec.StringToBytes(valAddr) - return bz, err + if err != nil { + return nil, errors.Join(ErrFailedToParseValAddress, err) + } + return bz, nil } diff --git a/util/keeper/address_test.go b/util/keeper/address_test.go new file mode 100644 index 00000000..1af5f031 --- /dev/null +++ b/util/keeper/address_test.go @@ -0,0 +1,24 @@ +package keeper + +import ( + "github.com/cosmos/cosmos-sdk/codec/address" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/palomachain/paloma/testutil" + "github.com/stretchr/testify/assert" + "testing" +) + +func TestValAddressConversion(t *testing.T) { + codec := address.Bech32Codec{ + Bech32Prefix: sdk.GetConfig().GetBech32ValidatorAddrPrefix(), + } + + validators := testutil.GenValidators(2, 25000) + bech32, err := ValAddressFromBech32(codec, validators[0].GetOperator()) + actual, _ := codec.StringToBytes(validators[0].GetOperator()) + different, _ := ValAddressFromBech32(codec, validators[1].GetOperator()) + assert.NoError(t, err) + assert.NotNil(t, bech32) + assert.Equal(t, bech32, actual) + assert.NotEqual(t, bech32, different) +} diff --git a/x/paloma/ante.go b/x/paloma/ante.go index 00021fd0..5f4da49f 100644 --- a/x/paloma/ante.go +++ b/x/paloma/ante.go @@ -1,20 +1,23 @@ package paloma import ( + "context" "fmt" + "github.com/palomachain/paloma/util/liblog" - "github.com/cometbft/cometbft/libs/log" + "cosmossdk.io/log" + "cosmossdk.io/x/feegrant" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/x/feegrant" "github.com/gogo/protobuf/proto" "github.com/palomachain/paloma/util/libmeta" "github.com/palomachain/paloma/x/paloma/types" vtypes "github.com/palomachain/paloma/x/valset/types" ) -func logger(ctx sdk.Context) log.Logger { - return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) +func logger(ctx context.Context) log.Logger { + sdkCtx := sdk.UnwrapSDKContext(ctx) + return liblog.FromSDKLogger(sdkCtx.Logger()).With("module", fmt.Sprintf("x/%s", types.ModuleName)) } // HandlerDecorator is an ante decorator wrapper for an ante handler @@ -90,7 +93,7 @@ func (d VerifyAuthorisedSignatureDecorator) AnteHandle(ctx sdk.Context, tx sdk.T } creator := m.GetMetadata().GetCreator() - signers := msg.GetSigners() + signers := libmeta.GetSigners(m) signedByCreator := func() bool { for _, v := range signers { diff --git a/x/paloma/ante_test.go b/x/paloma/ante_test.go index a71294cf..3e3f0053 100644 --- a/x/paloma/ante_test.go +++ b/x/paloma/ante_test.go @@ -6,10 +6,10 @@ import ( "reflect" "testing" + "cosmossdk.io/x/feegrant" "github.com/cometbft/cometbft/libs/log" tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/x/feegrant" "github.com/palomachain/paloma/x/paloma" "github.com/palomachain/paloma/x/paloma/types" vtypes "github.com/palomachain/paloma/x/valset/types" diff --git a/x/paloma/genesis.go b/x/paloma/genesis.go index eb826258..445a96f2 100644 --- a/x/paloma/genesis.go +++ b/x/paloma/genesis.go @@ -1,19 +1,20 @@ package paloma import ( - sdk "github.com/cosmos/cosmos-sdk/types" + "context" + "github.com/palomachain/paloma/x/paloma/keeper" "github.com/palomachain/paloma/x/paloma/types" ) // InitGenesis initializes the capability module's state from a provided genesis // state. -func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) { +func InitGenesis(ctx context.Context, k keeper.Keeper, genState types.GenesisState) { k.SetParams(ctx, genState.Params) } // ExportGenesis returns the capability module's exported genesis. -func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { +func ExportGenesis(ctx context.Context, k keeper.Keeper) *types.GenesisState { genesis := types.DefaultGenesis() genesis.Params = k.GetParams(ctx) diff --git a/x/paloma/keeper/grpc_query_params_test.go b/x/paloma/keeper/grpc_query_params_test.go index 7a3a8f18..f4589ea6 100644 --- a/x/paloma/keeper/grpc_query_params_test.go +++ b/x/paloma/keeper/grpc_query_params_test.go @@ -11,7 +11,7 @@ import ( func TestParamsQuery(t *testing.T) { keeper, ctx := testkeeper.PalomaKeeper(t) - wctx := sdk.WrapSDKContext(ctx) + wctx := sdk.UnwrapSDKContext(ctx) params := types.DefaultParams() keeper.SetParams(ctx, params) diff --git a/x/paloma/keeper/keeper.go b/x/paloma/keeper/keeper.go index 4729300e..ac084f7d 100644 --- a/x/paloma/keeper/keeper.go +++ b/x/paloma/keeper/keeper.go @@ -1,38 +1,40 @@ package keeper import ( + "context" "fmt" "sort" "strings" + "cosmossdk.io/core/address" + cosmosstore "cosmossdk.io/core/store" + cosmoslog "cosmossdk.io/log" "github.com/VolumeFi/whoops" - "github.com/cometbft/cometbft/libs/log" "github.com/cosmos/cosmos-sdk/codec" - storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" + utilkeeper "github.com/palomachain/paloma/util/keeper" + "github.com/palomachain/paloma/util/liblog" "github.com/palomachain/paloma/x/paloma/types" "golang.org/x/mod/semver" ) type ( Keeper struct { - cdc codec.BinaryCodec - storeKey storetypes.StoreKey - memKey storetypes.StoreKey - paramstore paramtypes.Subspace - Valset types.ValsetKeeper - Upgrade types.UpgradeKeeper - AppVersion string - + cdc codec.BinaryCodec + storeKey cosmosstore.KVStoreService + paramstore paramtypes.Subspace + Valset types.ValsetKeeper + Upgrade types.UpgradeKeeper + AppVersion string + AddressCodec address.Codec ExternalChains []types.ExternalChainSupporterKeeper } ) func NewKeeper( cdc codec.BinaryCodec, - storeKey, - memKey storetypes.StoreKey, + storeKey cosmosstore.KVStoreService, ps paramtypes.Subspace, appVersion string, valset types.ValsetKeeper, @@ -53,7 +55,6 @@ func NewKeeper( return &Keeper{ cdc: cdc, storeKey: storeKey, - memKey: memKey, paramstore: ps, Valset: valset, Upgrade: upgrade, @@ -62,27 +63,33 @@ func NewKeeper( } } -func (k Keeper) Logger(ctx sdk.Context) log.Logger { - return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) +func (k Keeper) Logger(ctx context.Context) cosmoslog.Logger { + sdkCtx := sdk.UnwrapSDKContext(ctx) + return liblog.FromSDKLogger(sdkCtx.Logger()).With("module", fmt.Sprintf("x/%s", types.ModuleName)) } -func (k Keeper) JailValidatorsWithMissingExternalChainInfos(ctx sdk.Context) error { - k.Logger(ctx).Info("start jailing validators with invalid external chain infos") +func (k Keeper) JailValidatorsWithMissingExternalChainInfos(ctx context.Context) error { + liblog.FromSDKLogger(k.Logger(ctx)).Info("start jailing validators with invalid external chain infos") vals := k.Valset.GetUnjailedValidators(ctx) - + sdkCtx := sdk.UnwrapSDKContext(ctx) // making a map of chain types and their external chains type mapkey [2]string mmap := make(map[mapkey]struct{}) for _, supported := range k.ExternalChains { chainType := supported.XChainType() - for _, cri := range supported.XChainReferenceIDs(ctx) { + for _, cri := range supported.XChainReferenceIDs(sdkCtx) { mmap[mapkey{string(chainType), string(cri)}] = struct{}{} } } var g whoops.Group for _, val := range vals { - exts, err := k.Valset.GetValidatorChainInfos(ctx, val.GetOperator()) + valAddr, err := utilkeeper.ValAddressFromBech32(k.AddressCodec, val.GetOperator()) + if err != nil { + g.Add(err) + continue + } + exts, err := k.Valset.GetValidatorChainInfos(ctx, valAddr) if err != nil { g.Add(err) continue @@ -96,15 +103,13 @@ func (k Keeper) JailValidatorsWithMissingExternalChainInfos(ctx sdk.Context) err notSupported := []string{} for mustExistKey := range mmap { if _, ok := valmap[mustExistKey]; !ok { - // well well well notSupported = append(notSupported, fmt.Sprintf("[%s, %s]", mustExistKey[0], mustExistKey[1])) } } sort.Strings(notSupported) - if len(notSupported) > 0 { - g.Add(k.Valset.Jail(ctx, val.GetOperator(), fmt.Sprintf(types.JailReasonNotSupportingTheseExternalChains, strings.Join(notSupported, ", ")))) + g.Add(k.Valset.Jail(ctx, valAddr, fmt.Sprintf(types.JailReasonNotSupportingTheseExternalChains, strings.Join(notSupported, ", ")))) } } @@ -113,7 +118,7 @@ func (k Keeper) JailValidatorsWithMissingExternalChainInfos(ctx sdk.Context) err // CheckChainVersion will exit if the app version and the government proposed // versions do not match. -func (k Keeper) CheckChainVersion(ctx sdk.Context) { +func (k Keeper) CheckChainVersion(ctx context.Context) { // app needs to be in the [major].[minor] space, // but needs to be running at least [major].[minor].[patch] govVer, govHeight := k.Upgrade.GetLastCompletedUpgrade(ctx) diff --git a/x/paloma/keeper/keeper_integration_test.go b/x/paloma/keeper/keeper_integration_test.go index f349f103..57426528 100644 --- a/x/paloma/keeper/keeper_integration_test.go +++ b/x/paloma/keeper/keeper_integration_test.go @@ -5,14 +5,14 @@ import ( "math/big" "testing" - tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + upgradetypes "cosmossdk.io/x/upgrade/types" sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" "github.com/palomachain/paloma/app" "github.com/palomachain/paloma/testutil" + utilkeeper "github.com/palomachain/paloma/util/keeper" "github.com/palomachain/paloma/x/paloma/keeper" valsettypes "github.com/palomachain/paloma/x/valset/types" ) @@ -33,9 +33,7 @@ var _ = Describe("jailing validators with missing external chain infos", func() BeforeEach(func() { t := GinkgoT() a = app.NewTestApp(t, false) - ctx = a.NewContext(false, tmproto.Header{ - Height: 5, - }) + ctx = a.NewContext(false).WithBlockHeight(5) k = &a.PalomaKeeper }) @@ -56,7 +54,9 @@ var _ = Describe("jailing validators with missing external chain infos", func() // val[1] has only one chain // val[2] doesn't have anything // All other vals have everything - err := a.ValsetKeeper.AddExternalChainInfo(ctx, vals[0].GetOperator(), []*valsettypes.ExternalChainInfo{ + valAddress, err := utilkeeper.ValAddressFromBech32(k.AddressCodec, vals[0].GetOperator()) + Expect(err).To(BeNil()) + err = a.ValsetKeeper.AddExternalChainInfo(ctx, valAddress, []*valsettypes.ExternalChainInfo{ { ChainType: "evm", ChainReferenceID: "c1", @@ -71,7 +71,9 @@ var _ = Describe("jailing validators with missing external chain infos", func() }, }) Expect(err).To(BeNil()) - err = a.ValsetKeeper.AddExternalChainInfo(ctx, vals[1].GetOperator(), []*valsettypes.ExternalChainInfo{ + valAddress2, err := utilkeeper.ValAddressFromBech32(k.AddressCodec, vals[1].GetOperator()) + Expect(err).To(BeNil()) + err = a.ValsetKeeper.AddExternalChainInfo(ctx, valAddress2, []*valsettypes.ExternalChainInfo{ { ChainType: "evm", ChainReferenceID: "c1", @@ -81,7 +83,9 @@ var _ = Describe("jailing validators with missing external chain infos", func() }) Expect(err).To(BeNil()) for i, v := range vals[3:] { - err := a.ValsetKeeper.AddExternalChainInfo(ctx, v.GetOperator(), []*valsettypes.ExternalChainInfo{ + valAddress, err := utilkeeper.ValAddressFromBech32(k.AddressCodec, v.GetOperator()) + Expect(err).To(BeNil()) + err = a.ValsetKeeper.AddExternalChainInfo(ctx, valAddress, []*valsettypes.ExternalChainInfo{ { ChainType: "evm", ChainReferenceID: "c1", @@ -108,18 +112,24 @@ var _ = Describe("jailing validators with missing external chain infos", func() It("jails val[1] and val[2], but no val[0]", func() { By("validators are not jailed") - Expect(a.ValsetKeeper.IsJailed(ctx, vals[0].GetOperator())).To(BeFalse()) - Expect(a.ValsetKeeper.IsJailed(ctx, vals[1].GetOperator())).To(BeFalse()) - Expect(a.ValsetKeeper.IsJailed(ctx, vals[2].GetOperator())).To(BeFalse()) + valAddress1, err := utilkeeper.ValAddressFromBech32(k.AddressCodec, vals[0].GetOperator()) + Expect(err).To(BeNil()) + valAddress2, err := utilkeeper.ValAddressFromBech32(k.AddressCodec, vals[1].GetOperator()) + Expect(err).To(BeNil()) + valAddress3, err := utilkeeper.ValAddressFromBech32(k.AddressCodec, vals[2].GetOperator()) + Expect(err).To(BeNil()) + Expect(a.ValsetKeeper.IsJailed(ctx, valAddress1)).To(BeFalse()) + Expect(a.ValsetKeeper.IsJailed(ctx, valAddress2)).To(BeFalse()) + Expect(a.ValsetKeeper.IsJailed(ctx, valAddress3)).To(BeFalse()) By("jail validators with missing external chain infos") - err := k.JailValidatorsWithMissingExternalChainInfos(ctx) + err = k.JailValidatorsWithMissingExternalChainInfos(ctx) Expect(err).To(BeNil()) By("check for jailed validators") - Expect(a.ValsetKeeper.IsJailed(ctx, vals[0].GetOperator())).To(BeFalse()) - Expect(a.ValsetKeeper.IsJailed(ctx, vals[1].GetOperator())).To(BeTrue()) - Expect(a.ValsetKeeper.IsJailed(ctx, vals[2].GetOperator())).To(BeTrue()) + Expect(a.ValsetKeeper.IsJailed(ctx, valAddress1)).To(BeFalse()) + Expect(a.ValsetKeeper.IsJailed(ctx, valAddress2)).To(BeTrue()) + Expect(a.ValsetKeeper.IsJailed(ctx, valAddress3)).To(BeTrue()) }) }) }) @@ -132,9 +142,8 @@ var _ = Describe("checking the chain version", func() { BeforeEach(func() { t := GinkgoT() a = app.NewTestApp(t, false) - ctx = a.NewContext(false, tmproto.Header{ - Height: 5, - }) + ctx = a.NewContext(false).WithBlockHeight(5) + k = &a.PalomaKeeper }) diff --git a/x/paloma/keeper/msg_server.go b/x/paloma/keeper/msg_server.go index 45e9ba76..b17a9480 100644 --- a/x/paloma/keeper/msg_server.go +++ b/x/paloma/keeper/msg_server.go @@ -5,6 +5,7 @@ import ( "os" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/palomachain/paloma/util/liblog" "github.com/palomachain/paloma/x/paloma/types" ) @@ -38,11 +39,11 @@ func (k msgServer) AddStatusUpdate(goCtx context.Context, msg *types.MsgAddStatu var logFn func(string, ...interface{}) switch msg.Level { case types.MsgAddStatusUpdate_LEVEL_DEBUG: - logFn = k.Logger(ctx).Debug + logFn = liblog.FromSDKLogger(k.Logger(ctx)).Debug case types.MsgAddStatusUpdate_LEVEL_INFO: - logFn = k.Logger(ctx).Info + logFn = liblog.FromSDKLogger(k.Logger(ctx)).Info case types.MsgAddStatusUpdate_LEVEL_ERROR: - logFn = k.Logger(ctx).Error + logFn = liblog.FromSDKLogger(k.Logger(ctx)).Error } logFn(status, diff --git a/x/paloma/keeper/params.go b/x/paloma/keeper/params.go index 2b45a020..2160aae6 100644 --- a/x/paloma/keeper/params.go +++ b/x/paloma/keeper/params.go @@ -1,16 +1,19 @@ package keeper import ( + "context" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/palomachain/paloma/x/paloma/types" ) // GetParams get all parameters as types.Params -func (k Keeper) GetParams(ctx sdk.Context) types.Params { +func (k Keeper) GetParams(ctx context.Context) types.Params { return types.NewParams() } // SetParams set the params -func (k Keeper) SetParams(ctx sdk.Context, params types.Params) { - k.paramstore.SetParamSet(ctx, ¶ms) +func (k Keeper) SetParams(ctx context.Context, params types.Params) { + sdkctx := sdk.UnwrapSDKContext(ctx) + k.paramstore.SetParamSet(sdkctx, ¶ms) } diff --git a/x/paloma/module.go b/x/paloma/module.go index 220b6833..aee4f396 100644 --- a/x/paloma/module.go +++ b/x/paloma/module.go @@ -1,9 +1,11 @@ package paloma import ( + "context" "encoding/json" "fmt" + "cosmossdk.io/core/appmodule" abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" @@ -12,6 +14,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/palomachain/paloma/util/liblog" "github.com/palomachain/paloma/x/paloma/client/cli" "github.com/palomachain/paloma/x/paloma/keeper" "github.com/palomachain/paloma/x/paloma/types" @@ -19,14 +22,25 @@ import ( ) var ( - _ module.AppModule = AppModule{} - _ module.AppModuleBasic = AppModuleBasic{} + _ module.AppModuleBasic = AppModuleBasic{} + _ module.HasServices = AppModule{} + _ module.HasInvariants = AppModule{} + _ module.HasABCIGenesis = AppModule{} + _ module.HasConsensusVersion = AppModule{} + _ module.HasName = AppModule{} + + _ appmodule.HasEndBlocker = AppModule{} + _ appmodule.HasBeginBlocker = AppModule{} + _ appmodule.AppModule = AppModule{} ) // ---------------------------------------------------------------------------- // AppModuleBasic // ---------------------------------------------------------------------------- +func (m AppModule) IsOnePerModuleType() {} +func (m AppModule) IsAppModule() {} + // AppModuleBasic implements the AppModuleBasic interface for the capability module. type AppModuleBasic struct { cdc codec.BinaryCodec @@ -153,18 +167,20 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw func (AppModule) ConsensusVersion() uint64 { return 1 } // BeginBlock executes all ABCI BeginBlock logic respective to the capability module. -func (am AppModule) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) { +func (am AppModule) BeginBlock(ctx context.Context) error { am.keeper.CheckChainVersion(ctx) + return nil } // EndBlock executes all ABCI EndBlock logic respective to the capability module. It // returns no validator updates. -func (am AppModule) EndBlock(ctx sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { - if ctx.BlockHeight()%303 == 0 { - err := am.keeper.JailValidatorsWithMissingExternalChainInfos(ctx) +func (am AppModule) EndBlock(ctx context.Context) error { + sdkCtx := sdk.UnwrapSDKContext(ctx) + if sdkCtx.BlockHeight()%303 == 0 { + err := am.keeper.JailValidatorsWithMissingExternalChainInfos(sdkCtx) if err != nil { - am.keeper.Logger(ctx).Error("wrror jailing validators with missing external chain infos", "err", err) + liblog.FromSDKLogger(am.keeper.Logger(sdkCtx)).WithError(err).Error("wrror jailing validators with missing external chain infos") } } - return []abci.ValidatorUpdate{} + return nil } diff --git a/x/paloma/module_simulation.go b/x/paloma/module_simulation.go index 5cb5e0d1..58061f28 100644 --- a/x/paloma/module_simulation.go +++ b/x/paloma/module_simulation.go @@ -2,7 +2,6 @@ package paloma import ( "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" @@ -37,7 +36,7 @@ func (AppModule) ProposalContents(_ module.SimulationState) []simtypes.WeightedP } // RegisterStoreDecoder registers a decoder -func (am AppModule) RegisterStoreDecoder(_ sdk.StoreDecoderRegistry) {} +func (am AppModule) RegisterStoreDecoder(_ simtypes.StoreDecoderRegistry) {} // WeightedOperations returns the all the gov module operations with their respective weights. func (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation { diff --git a/x/paloma/types/errors.go b/x/paloma/types/errors.go index 4c1992d0..3a8feb15 100644 --- a/x/paloma/types/errors.go +++ b/x/paloma/types/errors.go @@ -3,7 +3,7 @@ package types // DONTCOVER import ( - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + sdkerrors "cosmossdk.io/errors" ) // x/paloma module sentinel errors diff --git a/x/paloma/types/expected_keepers.go b/x/paloma/types/expected_keepers.go index a2e1dcda..c391ed3e 100644 --- a/x/paloma/types/expected_keepers.go +++ b/x/paloma/types/expected_keepers.go @@ -3,9 +3,8 @@ package types import ( context "context" + "cosmossdk.io/x/feegrant" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/cosmos/cosmos-sdk/x/feegrant" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" xchain "github.com/palomachain/paloma/internal/x-chain" valsettypes "github.com/palomachain/paloma/x/valset/types" @@ -13,20 +12,20 @@ import ( // AccountKeeper defines the expected account keeper used for simulations (noalias) type AccountKeeper interface { - GetAccount(ctx sdk.Context, addr sdk.AccAddress) types.AccountI + GetAccount(ctx context.Context, addr sdk.AccAddress) sdk.AccountI // Methods imported from account should be defined here } // BankKeeper defines the expected interface needed to retrieve account balances. type BankKeeper interface { - SpendableCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins + SpendableCoins(ctx context.Context, addr sdk.AccAddress) sdk.Coins // Methods imported from bank should be defined here } type ValsetKeeper interface { - GetUnjailedValidators(ctx sdk.Context) []stakingtypes.ValidatorI - Jail(ctx sdk.Context, valAddr sdk.ValAddress, reason string) error - GetValidatorChainInfos(ctx sdk.Context, valAddr sdk.ValAddress) ([]*valsettypes.ExternalChainInfo, error) + GetUnjailedValidators(ctx context.Context) []stakingtypes.ValidatorI + Jail(ctx context.Context, valAddr sdk.ValAddress, reason string) error + GetValidatorChainInfos(ctx context.Context, valAddr sdk.ValAddress) ([]*valsettypes.ExternalChainInfo, error) } type ExternalChainSupporterKeeper interface { @@ -34,7 +33,7 @@ type ExternalChainSupporterKeeper interface { } type UpgradeKeeper interface { - GetLastCompletedUpgrade(ctx sdk.Context) (string, int64) + GetLastCompletedUpgrade(ctx context.Context) (string, int64) } type FeegrantKeeper interface {