feemarket: migration (#1002)
* increase feemarket's consensus version and add migration handler Closes: #1001 * unit test * fix linter
This commit is contained in:
parent
edf456985b
commit
93a57bc330
@ -1,5 +1,14 @@
|
|||||||
package keeper
|
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.
|
// Migrator is a struct for handling in-place store migrations.
|
||||||
type Migrator struct {
|
type Migrator struct {
|
||||||
keeper Keeper
|
keeper Keeper
|
||||||
@ -11,3 +20,14 @@ func NewMigrator(keeper Keeper) Migrator {
|
|||||||
keeper: keeper,
|
keeper: keeper,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m Migrator) Migrate1to2(ctx sdk.Context) error {
|
||||||
|
store := ctx.KVStore(m.keeper.storeKey)
|
||||||
|
bz := store.Get(KeyPrefixBaseFeeV1)
|
||||||
|
if len(bz) > 0 {
|
||||||
|
baseFee := new(big.Int).SetBytes(bz)
|
||||||
|
m.keeper.SetBaseFee(ctx, baseFee)
|
||||||
|
}
|
||||||
|
store.Delete(KeyPrefixBaseFeeV1)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
18
x/feemarket/keeper/migrations_test.go
Normal file
18
x/feemarket/keeper/migrations_test.go
Normal file
@ -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))
|
||||||
|
}
|
@ -44,7 +44,7 @@ func (AppModuleBasic) RegisterLegacyAminoCodec(_ *codec.LegacyAmino) {
|
|||||||
|
|
||||||
// ConsensusVersion returns the consensus state-breaking version for the module.
|
// ConsensusVersion returns the consensus state-breaking version for the module.
|
||||||
func (AppModuleBasic) ConsensusVersion() uint64 {
|
func (AppModuleBasic) ConsensusVersion() uint64 {
|
||||||
return 1
|
return 2
|
||||||
}
|
}
|
||||||
|
|
||||||
// DefaultGenesis returns default genesis state as raw bytes for the fee market
|
// DefaultGenesis returns default genesis state as raw bytes for the fee market
|
||||||
@ -117,7 +117,11 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {}
|
|||||||
func (am AppModule) RegisterServices(cfg module.Configurator) {
|
func (am AppModule) RegisterServices(cfg module.Configurator) {
|
||||||
types.RegisterQueryServer(cfg.QueryServer(), am.keeper)
|
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.
|
// Route returns the message routing key for the fee market module.
|
||||||
|
Loading…
Reference in New Issue
Block a user