Skip to content
This repository has been archived by the owner on Apr 4, 2024. It is now read-only.

increase feemarket's consensus version and add migration handler #1002

Merged
merged 3 commits into from
Mar 21, 2022
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
20 changes: 20 additions & 0 deletions x/feemarket/keeper/migrations.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
package keeper

import (
"math/big"

sdk "github.com/cosmos/cosmos-sdk/types"
)

// KeyPrefixBaseFeeV1 is the base fee key prefix used in version 1
var KeyPrefixBaseFeeV1 = []byte{2}

// Migrator is a struct for handling in-place store migrations.
type Migrator struct {
keeper Keeper
Expand All @@ -11,3 +20,14 @@ func NewMigrator(keeper Keeper) Migrator {
keeper: keeper,
}
}

func (m Migrator) Migrate1to2(ctx sdk.Context) error {
store := ctx.KVStore(m.keeper.storeKey)
bz := store.Get(KeyPrefixBaseFeeV1)
if len(bz) > 0 {
fedekunze marked this conversation as resolved.
Show resolved Hide resolved
baseFee := new(big.Int).SetBytes(bz)
m.keeper.SetBaseFee(ctx, baseFee)
}
store.Delete(KeyPrefixBaseFeeV1)
return nil
}
18 changes: 18 additions & 0 deletions x/feemarket/keeper/migrations_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package keeper_test

import (
"math/big"

"github.com/tharsis/ethermint/x/feemarket/keeper"
)

func (suite *KeeperTestSuite) TestMigration1To2() {
suite.SetupTest()
storeKey := suite.app.GetKey("feemarket")
store := suite.ctx.KVStore(storeKey)
baseFee := big.NewInt(1000)
store.Set(keeper.KeyPrefixBaseFeeV1, baseFee.Bytes())
m := keeper.NewMigrator(suite.app.FeeMarketKeeper)
suite.Require().NoError(m.Migrate1to2(suite.ctx))
suite.Require().Equal(baseFee, suite.app.FeeMarketKeeper.GetBaseFee(suite.ctx))
}
8 changes: 6 additions & 2 deletions x/feemarket/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func (AppModuleBasic) RegisterLegacyAminoCodec(_ *codec.LegacyAmino) {

// ConsensusVersion returns the consensus state-breaking version for the module.
func (AppModuleBasic) ConsensusVersion() uint64 {
return 1
return 2
}

// DefaultGenesis returns default genesis state as raw bytes for the fee market
Expand Down Expand Up @@ -117,7 +117,11 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {}
func (am AppModule) RegisterServices(cfg module.Configurator) {
types.RegisterQueryServer(cfg.QueryServer(), am.keeper)

_ = keeper.NewMigrator(am.keeper)
m := keeper.NewMigrator(am.keeper)
err := cfg.RegisterMigration(types.ModuleName, 1, m.Migrate1to2)
if err != nil {
panic(err)
}
}

// Route returns the message routing key for the fee market module.
Expand Down