Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor(crisis)!: use collections for state management #16328

Merged
merged 3 commits into from
May 29, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,8 @@ Ref: https://keepachangelog.com/en/1.0.0/
* this finalizes the gov collections migration
* Removed: keeper `InsertActiveProposalsQueue`, `RemoveActiveProposalsQueue`, `InsertInactiveProposalsQueue`, `RemoveInactiveProposalsQueue`, `IterateInactiveProposalsQueue`, `IterateActiveProposalsQueue`, `ActiveProposalsQueueIterator`, `InactiveProposalsQueueIterator`
* Remove: types all the key related functions
* (x/crisis) [#16328](https://github.com/cosmos/cosmos-sdk/pull/16328) Use collections for state management:
* Removed: keeper `GetConstantFee`, `SetConstantFee`

### Client Breaking Changes

Expand Down
4 changes: 2 additions & 2 deletions x/crisis/keeper/genesis.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ import (

// new crisis genesis
func (k *Keeper) InitGenesis(ctx sdk.Context, data *types.GenesisState) {
if err := k.SetConstantFee(ctx, data.ConstantFee); err != nil {
if err := k.ConstantFee.Set(ctx, data.ConstantFee); err != nil {
panic(err)
}
}

// ExportGenesis returns a GenesisState for a given context and keeper.
func (k *Keeper) ExportGenesis(ctx sdk.Context) *types.GenesisState {
constantFee, err := k.GetConstantFee(ctx)
constantFee, err := k.ConstantFee.Get(ctx)
if err != nil {
panic(err)
}
Expand Down
6 changes: 3 additions & 3 deletions x/crisis/keeper/genesis_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,13 @@ func (s *GenesisTestSuite) SetupTest() {
func (s *GenesisTestSuite) TestImportExportGenesis() {
// default params
constantFee := sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(1000))
err := s.keeper.SetConstantFee(s.sdkCtx, constantFee)
err := s.keeper.ConstantFee.Set(s.sdkCtx, constantFee)
s.Require().NoError(err)
genesis := s.keeper.ExportGenesis(s.sdkCtx)

// set constant fee to zero
constantFee = sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(0))
err = s.keeper.SetConstantFee(s.sdkCtx, constantFee)
err = s.keeper.ConstantFee.Set(s.sdkCtx, constantFee)
s.Require().NoError(err)

s.keeper.InitGenesis(s.sdkCtx, genesis)
Expand All @@ -71,7 +71,7 @@ func (s *GenesisTestSuite) TestInitGenesis() {
genesisState.ConstantFee = sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(1000))
s.keeper.InitGenesis(s.sdkCtx, genesisState)

constantFee, err := s.keeper.GetConstantFee(s.sdkCtx)
constantFee, err := s.keeper.ConstantFee.Get(s.sdkCtx)
s.Require().NoError(err)
s.Require().Equal(genesisState.ConstantFee, constantFee)
}
15 changes: 14 additions & 1 deletion x/crisis/keeper/keeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"fmt"
"time"

"cosmossdk.io/collections"
"cosmossdk.io/core/address"
"cosmossdk.io/log"

Expand All @@ -31,14 +32,18 @@ type Keeper struct {
feeCollectorName string // name of the FeeCollector ModuleAccount

addressCodec address.Codec

Schema collections.Schema
ConstantFee collections.Item[sdk.Coin]
}

// NewKeeper creates a new Keeper object
func NewKeeper(
cdc codec.BinaryCodec, storeService storetypes.KVStoreService, invCheckPeriod uint,
supplyKeeper types.SupplyKeeper, feeCollectorName, authority string, ac address.Codec,
) *Keeper {
return &Keeper{
sb := collections.NewSchemaBuilder(storeService)
k := &Keeper{
storeService: storeService,
cdc: cdc,
routes: make([]types.InvarRoute, 0),
Expand All @@ -47,7 +52,15 @@ func NewKeeper(
feeCollectorName: feeCollectorName,
authority: authority,
addressCodec: ac,

ConstantFee: collections.NewItem(sb, types.ConstantFeeKey, "constant_fee", codec.CollValue[sdk.Coin](cdc)),
}
schema, err := sb.Build()
if err != nil {
panic(err)
}
k.Schema = schema
return k
}

// GetAuthority returns the x/crisis module's authority.
Expand Down
4 changes: 2 additions & 2 deletions x/crisis/keeper/msg_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ func (k *Keeper) VerifyInvariant(goCtx context.Context, msg *types.MsgVerifyInva
}

ctx := sdk.UnwrapSDKContext(goCtx)
params, err := k.GetConstantFee(ctx)
params, err := k.ConstantFee.Get(goCtx)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -90,7 +90,7 @@ func (k *Keeper) UpdateParams(ctx context.Context, msg *types.MsgUpdateParams) (
}

sdkCtx := sdk.UnwrapSDKContext(ctx)
if err := k.SetConstantFee(sdkCtx, msg.ConstantFee); err != nil {
if err := k.ConstantFee.Set(sdkCtx, msg.ConstantFee); err != nil {
return nil, err
}

Expand Down
2 changes: 1 addition & 1 deletion x/crisis/keeper/msg_server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ func (s *KeeperTestSuite) SetupTest() {
func (s *KeeperTestSuite) TestMsgVerifyInvariant() {
// default params
constantFee := sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(1000))
err := s.keeper.SetConstantFee(s.ctx, constantFee)
err := s.keeper.ConstantFee.Set(s.ctx, constantFee)
s.Require().NoError(err)

encCfg := moduletestutil.MakeTestEncodingConfig(crisis.AppModuleBasic{})
Expand Down
37 changes: 0 additions & 37 deletions x/crisis/keeper/params.go

This file was deleted.

56 changes: 0 additions & 56 deletions x/crisis/keeper/params_test.go

This file was deleted.

3 changes: 3 additions & 0 deletions x/crisis/types/genesis.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ func DefaultGenesisState() *GenesisState {

// ValidateGenesis - validate crisis genesis data
func ValidateGenesis(data *GenesisState) error {
if !data.ConstantFee.IsValid() {
return fmt.Errorf("constant fee is invalid")
}
if !data.ConstantFee.IsPositive() {
return fmt.Errorf("constant fee must be positive: %s", data.ConstantFee)
}
Expand Down
4 changes: 3 additions & 1 deletion x/crisis/types/keys.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package types

import "cosmossdk.io/collections"

const (
// module name
ModuleName = "crisis"

StoreKey = ModuleName
)

var ConstantFeeKey = []byte{0x01}
var ConstantFeeKey = collections.NewPrefix(1)